《软件测试技术实战 设计、工具及管理》联载-3

简介: 《软件测试技术实战 设计、工具及管理》联载-3

1.1.5  软件测试方法


软件测试方法见表1-1

1-1                                                             软件测试方法


白盒

黑盒

动态

利用KDE的调试功能逐步调试程序,进行软件测试

通过人工或者自动方法进行软件测试

静态

代码评审

对需求、设计等文档进行审核

 

代码评审中有一个部分是对编码规范的检查。另外,代码评审可以通过人工的方式来实现,也可以借助代码评审工具,如在本书第二篇7.1.1节“普通软件测试工具推荐”提及的CheckstyleFindbugsPMDAndroid Lint等工具。


 

扩展阅读:阿丽亚娜五型运载火箭的爆炸-代码静态测试的重要性

程序员在编程的时候必须定义程序用到的变量,以及这些变量所需的计算机内存,这些内存用比特位来定义,如int16int32doublefloat等。


一个16位的变量可以代表-32.76832.767中间的值。而一个64位的变量可以代表-9.223.372.036.854.775.8089.223.372.036.854.775.807中间的值。


199664日上午93359秒,随着543210的倒计时,阿丽亚娜五型运载火箭的首次发射点火后,火箭开始偏离路线,最终被逼引爆自毁,整个过程只有短短的30s。阿丽亚娜五型运载火箭是基于前一代四型火箭开发的。在四型火箭系统中,对一个水平速率的测量值使用了16位的变量及内存,因为在四型火箭系统中反复验证过,这一值不会超过16位的变量,而五型火箭的开发工程师简单复制了这部分程序,而没有对新火箭进行数值的验证,结果发生了致命的数值溢出。发射后这个64位带小数点的变量被转换成16位不带小数点的变量,引发了一系列的错误,从而影响了火箭上所有的计算机和硬件,瘫痪了整个系统,因而不得不选择自毁。


阿丽亚娜五型载火箭使用Ada语言开发,出问题的代码如下:

L_M_BV_32:=TBD.T_ENTIER_32S  ((1.0/C_M_LSB_BV) * (G_M_INFO_DERRIVE());

if L_M_BV_32 >32767 then

P_M_DERIVE(T_ALG.E_BV) :=16#7FFF#;

elseif L_M_BV_32 <-32767 then

P_M_DERIVE(T_ALG.E_BV) :=16#8000#;

else

P_M_DERIVE(T_ALG.E_BV):=UC_16S_EN_16NS(TDB.T_ENTIER_16S(L_M_BV_32));

end if;

P_M_DERIVE(T_ALG.E_BH):=UC_16S_EN_16NS(TDB.T_ENTIER_16S(1.0/C_M_LSB_BH)*G_M_INFO_DRIVER(T_ALG.E_GH)));


在这个代码中导致最终问题的是最后一句。在这一段语句中共有7个变量运算符出现了问题,仅有4个做了异常处理的保护,而其他3个没有进行。但是这也是由于运行的机器SRI计算机中设定最大负荷目标值为80%,如果要进行异常处理,计算机的CPU要处理的代码会增多。


教训:软件设计和Code Review的重要性。另外阿丽亚娜五型运载火箭在倒计时阶段、飞行阶段以及进入轨道阶段都未经过测试验证。

 


1.1.6  软件测试步骤


1-11描述了软件测试步骤,具体如下。

image.png

1-11 软件测试步骤

1)软件测试计划。

2)软件测试分析。

3)软件测试设计。

4)软件测试实施。

5)软件测试执行。

6)评估出口准则和报告。

7)软件测试结束活动。

具体内容读者可以参见参考文献【13】第二章进行更深入的学习。


1.1.7  软件缺陷管理


1.缺陷管理流程

根据SEI TSP国际标准,缺陷管理流程可以定义如下。


研发计算机必须分为开发机、测试机和发布机。开发工作在开发机上进行,软件测试工作(系统测试)在测试机上运行,最后产品验收和运行在发布机上运行,发布机器可能在客户处。


1每轮测试开始,开发部门提出本次测试重点,开发机上的版本同步到软件测试机上(或通过配置管理工具实现同步)。

2)软件测试工程师进行冒烟软件测试,如果冒烟测试没有通过,则退回给开发部门,等待开发部门重新提交软件测试任务,返回第(1)步。

3)冒烟测试通过,测试工程师继续执行测试活动,包括传统正规测试和基于经验的测试,如探索式软件测试等。发现Bug,记录在缺陷管理工具中。

4)开发工程师修改被确认的Bug(状态为Assigned)。

5)当软件测试工程师认为软件测试结束,大部分Bug都发现完毕,开发机上版本再一次同步到软件测试机上。

6)软件测试工程师对Bug进行复测,如果问题仍旧存在,则标记为Reopen,否则标记为Closed。此时还要对以前测试过的功能进行回归测试。

7)开发工程师对于Reopen的缺陷进行修改。

8)当一轮软件测试达到出口标准,软件测试机上的版本同步到发布机上,软件测试任务完成;否则返回第(5)步。

在本书第三篇第13.9节“软件缺陷管理流程”会给出更为详细的描述。


2.缺陷严重等级

由于采用的缺陷管理工具不同,缺陷严重等级的级别也会有差异。

Blocker:(阻碍的)

Ø    阻碍开发和/或软件测试工作,冒烟测试没有通过,不能进行正常的软件测试工作。

Critical:(紧急的)

Ø    系统无法测试,或者系统无法继续操作,应用系统异常中止。

Ø    对操作系统造成严重影响,系统死机,被测程序挂起,不响应等情况。

Ø    造成重大安全隐患情况,如:机密性数据的泄密。

Ø    功能没有实现,无法进行某一功能操作,影响系统使用。

Major:(重大的)

Ø    功能基本上能实现,但在特定情况下导致功能失败。

Ø    导致输出的数据错误,如:数据内容出错、格式错误、无法打开。

Ø    导致其他功能模块无法正常执行。

Ø    功能不完整或者功能实现不正确。

Ø    导致数据最终操作结果错误。

Normal:(普通的)

Ø    功能部分失败,对整体功能的实现基本不造成影响。

Minor:(较小的)

Ø    链接错误、系统出错提示或没有捕获系统出错信息、数据的重要操作(增删查改)没有提示、出现频率极低,会对功能实现造成非致命性的影响。

Trivial:(外观的)

Ø    产品外观上的问题或一些不影响使用的小毛病,如菜单或对话框中的文字拼写或字体问题等。

Enhancement(改进的)

Ø    对系统产品的建议或意见。


3.缺陷修改优先级

由于缺陷管理工具的差异,缺陷修改优先级别也会有差异。

P5:严重级别比较高,影响软件测试进行或者系统无法继续操作。

P4:对系统操作有影响,但不需要马上修改。

P3:页面缺陷(不属于定义的缺陷范围)或者建议。

P2:准备在下一轮软件测试前修改完毕。

P1:准备在下一版本中修改。


4.缺陷书写规则

 

缺陷编号:【一般缺陷管理工具自动生成】

缺陷简要描述:【一句话描述

发现者:【一般从下拉框中选择】

修改者:【一般从下拉框中选择】

最早发现所在版本号:【一般从下拉框中选择】

最早发现日期:【一般由日期框选择】

最早修改日期:【一般由日期框选择】

缺陷当前所在模块:【一般从下拉框中选择】

缺陷当前状态:【一般系统自动生成】

缺陷发现时系统环境:【文本框输入或者下拉框选择】

缺陷重现步骤:【由缺陷发现者填写】

实际得到结果:【由缺陷发现者填写】

期望得到结果:【由缺陷发现者填写】

修复描述:【由缺陷修复者填写】

相关文件:【由缺陷发现者填写】

延迟/不修改/修复/回退原因说明:【由缺陷负责人填写】

历史信息:【由缺陷管理系统自动生成,包括状态迁移,所经过的人,各阶段描述等信息】

附件:【由缺陷发现者上传文件】

 

 

关于缺陷管理工具将在本书第二篇第10章“缺陷管理工具”进行详细描述。

 

 

扩展阅读:世界上第一个Bug

194799日下午345分,Grace Murray Hopper在她的记录本上记下了第一个计算机BugHarvard Mark II计算机里找到的一只飞蛾,她把飞蛾贴在日记本上,并写道“First actual case of Bug being found”。这个发现奠定了Bug这个词在计算机世界的地位,变成无数程序员的噩梦。从那以后,Bug这个词在计算机世界表示计算机程序中的错误或者疏漏,它们会使程序计算出莫名其妙的结果,甚至引起程序的崩溃。Grace Murray Hopper是历史上最早一批程序员,而且还是个女程序员。

Hopper的记录连同那只飞蛾现在存在美国历史博物馆。

 


顾翔凡言:

在正确的道路上作自己擅于做得事,大方向把握好,不要过于纠结,就可以了。

目录
相关文章
|
敏捷开发 Web App开发 算法
《软件测试技术实战 设计、工具及管理》联载-41
《软件测试技术实战 设计、工具及管理》联载-41
121 0
《软件测试技术实战 设计、工具及管理》联载-41
|
监控 网络协议 测试技术
《软件测试技术实战 设计、工具及管理》联载-23
《软件测试技术实战 设计、工具及管理》联载-23
82 0
《软件测试技术实战 设计、工具及管理》联载-23
|
Web App开发 测试技术 Linux
《软件测试技术实战 设计、工具及管理》联载-9
《软件测试技术实战 设计、工具及管理》联载-9
131 0
《软件测试技术实战 设计、工具及管理》联载-9
|
存储 敏捷开发 编解码
《软件测试技术实战 设计、工具及管理》联载-11
《软件测试技术实战 设计、工具及管理》联载-11
110 0
《软件测试技术实战 设计、工具及管理》联载-11
|
监控 Java 测试技术
《软件测试技术实战 设计、工具及管理》联载-40
《软件测试技术实战 设计、工具及管理》联载-40
106 0
《软件测试技术实战 设计、工具及管理》联载-40
|
测试技术
《软件测试技术实战 设计、工具及管理》联载-7
《软件测试技术实战 设计、工具及管理》联载-7
137 0
《软件测试技术实战 设计、工具及管理》联载-7
|
测试技术
软件测试技术实战 设计、工具及管理》联载-56
软件测试技术实战 设计、工具及管理》联载-56
65 0
软件测试技术实战 设计、工具及管理》联载-56
|
SQL 前端开发 关系型数据库
《软件测试技术实战 设计、工具及管理》联载-4
《软件测试技术实战 设计、工具及管理》联载-4
66 0
《软件测试技术实战 设计、工具及管理》联载-4
|
安全 测试技术 UED
《软件测试技术实战 设计、工具及管理》联载-50
《软件测试技术实战 设计、工具及管理》联载-50
74 0
《软件测试技术实战 设计、工具及管理》联载-50
|
测试技术
《软件测试技术实战 设计、工具及管理》联载-8
《软件测试技术实战 设计、工具及管理》联载-8
97 0
《软件测试技术实战 设计、工具及管理》联载-8