《软件测试技术实战 设计、工具及管理》联载-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的记录连同那只飞蛾现在存在美国历史博物馆。

 


顾翔凡言:

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

目录
相关文章
|
消息中间件 运维 Kafka
运维排查 | Systemd 之服务停止后状态为 failed
运维排查 | Systemd 之服务停止后状态为 failed
一起玩转树莓派(5)——让蜂鸣器播放音乐
前面博客中,我们尝试使用开关控制有源蜂鸣器的播放。有源蜂鸣器的一大特点是使用简单,无需复杂的程序控制即可发声,然而其缺陷也很明显,其发声的频率是一定的,我们无法通过频率控制器音调高低。本次实验,我们将尝试使用无源蜂鸣器来进行音乐的播放。
1487 0
一起玩转树莓派(5)——让蜂鸣器播放音乐
|
Java Windows
签名验签工具
我们提供了一键生成RSA密钥工具。该工具也提供了签名及验签功能,可以演示针对支付宝开放平台接口的签名和验签流程。 WINDOWS版本下载地址:WINDOWS MAC OS版本下载地址:MAC_OSX 解压后,WINDOWS版本双击文件“RSA签名验签工具.bat”即可运行工具。
4848 0
|
8月前
|
小程序
微信小程序数据绑定与事件处理:打造动态交互体验
在上一篇中,我们学习了搭建微信小程序开发环境并创建“Hello World”页面。本文深入探讨数据绑定和事件处理机制,通过具体案例帮助你打造更具交互性的小程序。数据绑定使用双花括号`{{}}`语法,实现页面与逻辑层数据的动态关联;事件处理则通过`bind`或`catch`前缀响应用户操作。最后,通过一个简单的计数器案例,巩固所学知识。掌握这些核心技能,将助你开发更复杂的小程序。
|
缓存 负载均衡 Java
Java分布式系统架构设计与实现
【4月更文挑战第2天】在快速发展的互联网时代,Java分布式系统成为应对复杂业务和高用户量的首选。通过服务化拆分、注册发现、负载均衡和缓存等技术,如Spring Cloud和Dubbo,开发者能构建高效、可靠、可扩展的系统。服务注册与发现确保服务间通信,负载均衡分配请求,分布式缓存如Redis提升性能。面对数据一致性和监控等挑战,Java提供工具解决,助力打造现代分布式应用。
801 2
Java分布式系统架构设计与实现
|
负载均衡 安全 网络安全
|
10月前
|
设计模式 网络协议 Java
02.单一职责原则详解
单一职责原则(SRP)是面向对象设计的重要原则,强调一个类或模块应仅负责完成一个特定的职责或功能。通过将复杂的功能分解为多个粒度小、功能单一的类,可以提高系统的灵活性、可维护性和可扩展性。本文详细介绍了如何理解单一职责原则,包括方法、接口和类层面的应用,并通过具体例子解释了其优势和判断标准。此外,还探讨了在实际开发中如何平衡类的设计,避免过度拆分导致的复杂性增加。
298 5
|
编解码 文字识别 Linux
PyMuPDF 1.24.4 中文文档(十三)(3)
PyMuPDF 1.24.4 中文文档(十三)
594 0
|
前端开发 网络安全 虚拟化
软考网络规划师复习第四章:认识网络模拟器
软考网络规划师复习第四章:认识网络模拟器