欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

软件工程(速成)——第十章 软件测试

程序员文章站 2022-05-02 10:38:42
...

软件工程(速成)——第十章 软件测试

一、软件测试
1.(软件)测试的定义或目标
(1)测试是为了发现程序中的错误而执行程序的过程
(2)好的测试方案极可能是发现了迄今为止尚未发现的错误的测试方案
(3)成功的测试是发现了至今为止尚未发现的错误的测试

2.测试方法
(1)黑盒测试(功能测试)
把程序看作一个黑盒子;完全不考虑程序的内部结构和处理过程;是在程序接口进行的测试
(2)白盒测试(结构测试)
把程序看成装在一个透明的白色盒子里;测试者完全知道程序的结构和处理算法;按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否能按预定要求工作

3.测试步骤
模块测试(单元测试)、子系统测试、系统测试、验收测试、平行运行

二、白盒测试技术
1.测试用例
测试用例=测试数据+预期的结果

2.逻辑覆盖
(1)语句覆盖
每个语句至少执行一次
(2)判定覆盖
每个语句至少执行一次,每个判定的每个分支至少执行一次
(3)条件覆盖
每个语句至少执行一次,判定表达式的每种结果至少执行一次
条件覆盖通常比判定覆盖强,有时条件覆盖也是判定覆盖
(4)判定/条件覆盖
覆盖判定+条件判定
有时判定/条件覆盖也不一定比条件覆盖强

三、黑盒测试技术
1.基本概念
(1)黑盒测试着重测试软件功能
(2)黑盒测试不能取代白盒测试,两者为互补关系
(3)白盒测试—测试过程的早期;黑盒测试——测试过程的后期

2.黑盒测试准则
(1)测试用例尽可能少
(2)一个测试用例能指出一类错误

3.黑盒测试手段
等价划分、边界值分析、错误推测

四、单元测试
1.单元测试集中检测模块
2.单元测试和编码属于软件过程的同一个阶段
3.可以应用人工测试和计算机测试这样两种不同类型的测试方法
4.单元测试主要使用白盒测试技术,对多个模块的测试可以并行地进行

五、集成测试
1.集成测试是测试和组装软件的系统化技术,主要目标是发现与接口有关的问题
2.集成测试的策略
(1)非渐增式
(2)自顶向下
(3)自底向上
(4)混合
3.回归测试:重新执行已经做过的测试的某个子集,保证程序的变化没有带来非预期的副作用

六、确认测试
1.确认测试也称为验收测试,目标是验证软件的有效性
2.软件有效性的定义
如果软件的功能和性能如用户所合理期待,需求分析阶段产生的软件规格说明书,准确地描述了用户对软件的合理期望,需求分析阶段的软件规格说明书是软件有效性的标准
3.Alpha测试和Beta测试

七、调试
1.调试是在测试发现错误之后排除错误的过程
2.调试的方法
蛮干法、回溯法、原因排除法

八、软件可靠性
1.软件可靠性
程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率
2.估算平均无故障时间的方法
(1)计算平均无故障时间/需要改正多少个错误测试结束
MTTF=1/K(ET/IT-Ec(t)/It),即Ec=ET-IT/KxMTTF
MTTF:平均无故障时间
K:常数,典型值200
IT:程序长度(机器指令总数)
ET:测试之前程序中的错误总数
Ec:在时间段内发现的错误总数
(2)估计错误总数的方法
B0=B1B2/bc
B0:t=0时错误总数
B1:t=t1时测试员甲发现的错误数
B2:t=t1时测试员乙发现的错误数
bc:t=t1时两个测试员发现的相同错误数

练习题:
1.测试用例是专门为了发现软件错误而设计的一组或多组数据,它由( )组成。
A、测试输入数据
B、预期的测试输出数据
C、测试输入与预期的输出数据
D、按照测试用例设计方法设计出的数据

2.一个成功的测试是( )。
A、发现错误
B、发现至今尚未发现的错误
C、没有发现错误
D、证明发现不了错误

3.单元测试阶段主要涉及( )的文档。
A、需求设计
B、编码和详细设计
C、详细设计
D、概要设计

4.软件调试的目的是( )。
A、发现错误
B、改正错误
C、改善软件的性能
D、挖掘软件的潜能

选择题答案:CBBB

5.测试是为了验证该软件以正确地实现了用户的需求。()
6.白盒测试法是根据程序的功能来设计测试用例的。()
7.确定测试计划是在需求分析阶段制定的。()
8.单元测试是在编码阶段完成的。()

判断题答案:错错对对

9.在测试一个长度为24000条指令的程序时,第一个月由甲、乙两名测试员各自独立测试这个程序。经一个月测
试后,甲发现并改正20个错误,使MTTF达到10h。与此同时,乙发现24个错误,其中6个甲也发现了。以后由甲
一个人继续测试这个程序。问: (1) 刚开始测试时程序中总共有多少个潜藏的错误? (2) 为使MTTF达到60h,
必须再改正多少个错误?
解:
(1)B0=B1B2/bc -> B0=20x24/6=80(个)
(2)E=B0-I/KxMTTF -> K=I/MTTFx(B0-E)=24000/10x(80-20)=40
     E'=B0-I/KxMTTF'=80-24000/40x60=70(个) 还需再改正70-20=50个错误

10.为以下程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖。
int test(int A,int B)
{
	if((A>1) AND (B<10))     then

           X=A-B;

    if((A=2) OR (B>20))     then

           X=A+B;

    return x;
}
解:(建议画出流程图方便解题)
语句覆盖:A=2,B=1,X=3
判定覆盖:A=3,B=1,X=2
	      A=2,B=10,X=12
条件覆盖:A=2,B=1,X=3
		  A=0,B=21,X=21
(答案不唯一)

练习题10具体讲解

11.用等价类划分法设计测试用例

    在某一PASCAL语言版本中规定:

    “标识符是由字母开头,后跟字母或数字的任意组合构成。最大字符数为80个。”

    并且规定:“标识符必须先说明,再使用。”  “在同一说明语句中,标识符至少必须有一个。” 
解:
输入条件:		  有效等价类:				无效等价类:
标识符的个数		  1个(1)、多个(2)		0个(3)
标识符的字符数量	  1~80(4)			        0(5)、大于80(6)
标识符的组成		  字母(7)、数字(8)		除数字、字母其他符号(9)、保留字(10)
标识符首个字符	  字母(11)	                非字母(12)
标识符的使用		  先说明,后使用(13)	    未说明直接使用(14)

测试用例:
下面选取了 9 个测试用例,它们覆盖了所有的等价类。
 ①  VAR x,T1234567:REAL;   			     (1), (2), (4), (7), (8), (11), (13)
    BEGIN  x := 3.414;
    T1234567 := 2.732;
    ......
②  VAR  :REAL;            			     (3)
③  VAR x,:REAL;             			     (5)
④  VAR T12345......(多于80个字符):REAL;     (6)                       
⑤  VAR T$:CHAR;                            (9)
⑥  VAR GOTO:INTEGER;        			     (10)
⑦  VAR 2T:REAL;                            (12)
⑧  VAR PAR:REAL;                           (14)
   BEGIN  ......   PAP := SIN (3.14 * 0.8) / 6;