课程课件全部章质量保证_第1页
课程课件全部章质量保证_第2页
课程课件全部章质量保证_第3页
课程课件全部章质量保证_第4页
课程课件全部章质量保证_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第七章质量保证本章学习目标2掌握软件测试的概念和常用方法31掌握质量保证的概念理解质量保证活动在软件工程中的重要作用和意义本章内容软件质量保证的基本概念软件测试的概念软件测试的方法软件测试的策略面向对象的测试方法调试7.1软件质量保证的基本概念1、软件质量问题在软件开发过程中不可避免地会引入错误,从而导致软件质量存在问题事件1:1963年美国飞往火星的火箭爆炸,损失1000万美元。原因是

FORTRAN程序:DO5I=1,3

误写为:DO5I=1.3事件2:1967年苏联“联盟一号”宇宙飞船返回时因忽略一个小数点,在进入大气层时打不开降落伞而烧毁。2、软件缺陷至少满足下列一个条件,称发生了一个软件缺陷软件未实现产品说明书要求的功能。软件出现了产品说明书指明不能出现的错误。软件实现了产品说明书未提到的功能。软件未实现产品说明书虽未明确提及但应该实现的目标。软件难以理解、不易使用、运行缓慢或者——从测试员的角度看——最终用户会认为不好。3、软件的质量定义软件质量:软件与明确地和隐含地定义的需求相一致的程度与需求一致与指定的开发标准一致隐含需求质量属性正确性、健壮性、效率、安全性、可用性、可理解性、可维修性、灵活性、可测试性、可移植性、可再用性、互运行性功能性(functionality)可靠性(reliability):MTTF可维护性(maintainability):MTTR可用性(usability):MTTF/(MTTF+MTTR)效率(efficiency)可移植性(portability)质量与可靠性7.2软件测试的基本概念1、软件测试的开销大 按照Boehm的统计,软件测试的开销大约占总成本的30%-50%。例如:APPOLLO登月计划,80%的经费用于软件测试。2、不能进行“穷举”测试 只有将所有可能的情况都测试到,才有可能检查出所有的错误。但这是不可能的:例:程序P有两个整型输入量X、Y,输出量为Z,在32位机上运行。所有的测试数据组(Xi,Yi)的数目为:2

2=21毫秒执行1次,共需5亿年。323264PXYZ3、软件测试难度大 根据上述分析,既然不能进行

“穷举”测试,又要查出尽可能多的错误,软件测试工作的难度大。只有选择— “高效的测试用例” 什么是“高效的测试用例”? 如何选择“高效的测试用例”? 这就是本章讨论的主要问题!!!在某种指定的条件下对系统或组件操作,观察或记录结果,对系统或组件的某些方面进行评估的过程。分析软件各项目以检测现有的结果和应有结果之间的差异(即软件缺陷),并评估软件各项目的特征的过程。4、软件测试的定义5、测试用例测试用例(testcase)是测试输入、执行条件、以及预期结果的集合,是为特定的目的开发的,例如执行特定的程序路径或验证与指定的需求相符合。6、软件测试的基本原则3、充分注意测试中的群集现象。1、尽量不由程序设计者进行测试。2、关键是注重测试用例的选择。 输入数据的组成(输入数据、预期的输出结果) 既有合理输入数据,也有不合理的输入数据。 用例既能检查应完成的任务,也能够检查不应该完成的任务。 长期保存测试用例。验证(Verification):保证软件特定开发阶段的输出已经正确完整地实现了规格说明(我们正确地构造了产品吗?)确认(Validation):对于每个测试级别,都要检查开发活动的输出是否满足具体的需求或与这些特定级别相关的需求(我们构造了正确的产品吗?)7、概念的区别:验证与确认软件测试人员的目标是尽早找出软件缺陷,并确保缺陷得以修复软件质量保证人员的主要职责是创建和执行改进软件开发过程并防止软件缺陷发生的标准和方法8、概念的区别:测试与质量保证两者都包含有处理软件缺陷和查看代码的过程。二者的区别在于:测试的目标是发现软件缺陷的存在调试的目标是定位与修复缺陷9、概念的区别:软件调试与测试10、软件测试的目标确认系统满足其预期的使用和用户的需要。确认解决了所需解决的问题(如实现商业规则和使用合适的系统假定)。为测试的过程建立责任和可解释性。便于及早发现软件和系统的异常。及早提供软件和系统的性能的评估。为管理提供真实信息,以决定在当前状态下发布产品在商业上的风险鉴别出程序在功能等方面的异常集聚之处。11、怎么进行测试网上招聘系统的问卷管理功能测下述程序功能是否正确#include

<stdio.h>int

main(void){

int

i;

for

(i

=

0;

i

<

10;

i++)

{

if

(i>3

&

i<7)

{

printf("%d",

i);

}

}

getchar();

return

0;}12、测试的基本步骤模块测试整体测试功能测试预测试系统测试验收测试安装测试概要设计审查详细设计审查代码审查测试(单元测试)(组装测试)(有效性测试)(确认测试){{7.3软件测试方法软件测试方法分为两类:静态分析、动态测试一、静态分析方法指以人工的、非形式化的方法对程序进行分析和测试。 桌面检查 代码会审 步行检查(走查)步行检查时,还常使用以下分析方法:①

调用图 从语义的角度考察程序的控制路线。②数据流分析图 检查分析变量的定义和引用情况。①调用图

无论Y为何值,都不能够调用子程序。 READYY>0NX:=YX<0YNY调用子程序ABCDE即执行ABC后,是不可能执行路径CDE的。②数据流分析图节点—表示单个语句。有向边—表示控制结构。

d—定义

r—引用

u—未引用R:duuuuuS:uruuurY:uuddru R=0.5W=1/SY=A**WY=E*WZ=X+YC=Z*S123456只定义不用未定义引用连续定义对一个具有多重选择和循环嵌套的程序,不同的路径数目可能是天文数字。例如,下页给出一个小程序的流程图,它包括了一个执行20次的循环。循环内有5条不同的路径,循环20次,则组合起来可能的不同执行路径数达

520条。假设对每一条路径进行测试需要1毫秒,一年工作365天,每天工作

24小时,要想把所有路径测试完,需3024年。因此,对于有多重循环的程序,穷举测试是不可能的。循环20次二、动态测试方法(1)通过选择适当的测试用例,执行程序。常用的方法:1、白盒法 分析程序的内部逻辑结构,注意选择适当的覆盖标准,设计测试用例,对主要路径进行尽可能多的测试。2、黑盒法

不考虑程序的内部结构与特性,只根据程序功能或程序的外部特性设计测试用例。白盒法

白盒法又称为逻辑覆盖法,其测试用例选择,是按照不同覆盖标准确定的。

语句覆盖判定覆盖条件覆盖判定条件覆盖条件组合覆盖弱强路径覆盖①语句覆盖:选择足够的测试用例,使得程序中每个语句至少都能被执行一次。②判定覆盖:执行足够的测试用例,使得程序中每个判定至少都获得一次“真”值和“假”值。③条件覆盖:执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。④判定/条件覆盖:执行足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果。⑤条件组合覆盖:执行足够的例子,使得每个判定中条件的各种可能组合都至少出现一次。路径覆盖:执行足够的用例,覆盖程序中所有可能的路径。白盒法常用的覆盖标准白盒法步骤:例:用白盒法测试以下程序段:Procedure(VARA,B,X:REAL);BEGINIF(A>1)AND(B=0)THENX:=X/A;IF(A=2)OR(X>1)THENX:=X+1END;1)选择逻辑覆盖标准。2)按照覆盖标准列出所有情况。3)选择确定测试用例。4)验证分析运行结果与预期结果。逻辑结构软件工程28(A>1)

and

(B=0)(A=2)

or

(X>1)X=X/AX=X+1TTFFabdce白盒法举例Procedure(VARA,B,X:REAL);BEGINIF(A>1)AND(B=0)THENX:=X/A;IF(A=2)OR(X>1)THENX:=X+1END;A>1ANDB=0X:=X/AA=2ORX>1X:=X+1YNYN逻辑结构1、语句覆盖使得程序中每个语句至少都能被执行一次。A>1ANDB=0X:=X/AA=2ORX>1X:=X+1abcde满足语句覆盖的情况:执行路径:ace选择用例:[(2,0,4),(2,0,3)]用例格式:[输入(A,B,X),输出(A,B,X)]YNYN2、判定覆盖使得程序中每个判定至少为TRUE或FALSE各一次。A>1ANDB=0X:=X/AA=2ORX>1X:=X+1abcde覆盖情况:应执行路径ace∧abd 或:acd∧abe选择用例(其一):⑴[(2,0,4),(2,0,3)]ace[(1,1,1),(1,1,1)]abd⑵[(2,1,1),(2,1,2)]abe[(3,0,3),(3,1,1)]acdYYNN3、条件覆盖A>1ANDB=0X:=X/AA=2ORX>1X:=X+1abcde使得判定中的每个条件获得各种可能的结果。应满足以下覆盖情况:判定一:A>1,A≤1,B=0,B≠0判定二:A=2,A≠2,X>1,X≤1选择用例:[(2,0,4),(2,0,3)][(1,1,1),(1,1,1)]NNYY204111注意:[(1,0,3),(1,0,4)] [(2,1,1),(2,1,2)]满足条件覆盖,但不满足判断覆盖。4、判定/条件覆盖 同时满足判断覆盖和条件覆盖。A>1ANDB=0X:=X/AA=2ORX>1X:=X+1abcde应满足以下覆盖情况:条件:A>1,A≤1,B=0,B≠0 A=2,A≠2,X>1,X≤1应执行路径ace∧abd 或:acd∧abe选择用例:[(2,0,4),(2,0,3)](ace)[(1,1,1),(1,1,1)](abd)YYNN5、条件组合覆盖使得每个判定中条件的各种可能组合都至少出现一次。A>1X:=X/AA=2X:=X+1abcdeB=0X>1YNYNYNYN编译系统下的执行情况:部分路径未被执行。满足以下覆盖情况:①A>1,B=0②A>1,B≠0③A≤1,B=0

④A≤1,B≠0⑤A=2,X>1

⑥A=2,X≤1

⑦A≠2,X>1

⑧A≠2,X≤1选择用例:[(2,0,4),(2,0,3)]①⑤[(2,1,1),(2,1,2)]②⑥[(1,0,3),(1,0,4)]③⑦[(1,1,1),(1,1,1)]④⑧6.路径测试路径测试就是设计足够的测试用例,覆盖程序中所有可能的路径。

测试用例

通过路径

覆盖条件

执行条件【(2,0,4),(2,0,3)】P1(c,e) T1T2T3T4 T1T2T3

【(1,1,1),(1,1,1)】P2(b,d) F1F2F3F4 F1F3F4【(1,1,2),(1,1,3)】P3(b,e) F1F2F3T4 F1F3T4【(3,0,3),(3,0,1)】P4(c,d) T1T2F3F4 T1T2F3F4路径覆盖是最强的覆盖,但由此例知,F2未执行。另一种白盒法:基本路径测试法基本路径测试方法把覆盖的路径数压缩到一定限度内,程序中的循环体最多只执行一次。它是在程序控制流图的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,设计测试用例的方法。设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次。

基本路径测试法软件工程371.程序的控制流图符号○为控制流图的一个结点,表示一个或多个无分支的PDL语句或源程序语句。箭头为边,表示控制流的方向。在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。顺序结构IF两分支选择结构while-do先判断重复结构do-while后判断重复结构switch多分支选择结构基本路径测试法软件工程38边和结点圈定的部分叫做区域,当对区域计数时,图形外的区域也应记为一个区域。如果判断中的条件表达式是由一个或多个逻辑运算符(or,and,...)连接的复合条件表达式,则需改为一系列只有单个条件的嵌套的判断。abyxif(aorb)thendoxelsedoy;TT基本路径测试法软件工程3936578111091244,5R32,3168791011R1R2R4基本路径测试法2.程序环路复杂性程序环路复杂性给出了程序基本路径集中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必需的测试用例数目的上界。从控制流图来看,一条独立路径是至少包含有一条在其他独立路径中从未有过的边的路径。例如,在图示的控制流图中,一组独立的路径是

path1:1-11

path2:1-2-3-4-5-10-1-11

path3:1-2-3-6-8-9-10-1-11

path4:1-2-3-6-7-9-10-1-11基本路径测试法路径path1,path2,path3,path4组成了控制流图的一个基本路径集。导出测试用例导出测试用例,确保基本路径集中的每一条路径的执行。根据判断结点给出的条件,选择适当的数据以保证每一条路径可以被测试到—用逻辑覆盖的方法。每个测试用例执行之后,与预期结果进行比较。如果所有测试用例都执行完毕,则可以确信程序中所有的可执行语句至少被执行了一次。必须注意,一些独立的路径(如例中的path1),往往不是完全孤立的,有时它是程序正常的控制流的一部分,这时,这些路径的测试可以是另一条路径测试的一部分。举例voidSelectSort(intV[],intn){inti,j,k;for(i=0;i<n-1;i++){ k=i; for(j=i+1;j<n;j++) if(V[j]<V[k])k=j; if(k!=i)Swap(V[i],V[k]);}}选择排序(C/C++描述)区域数=5123456789i=0;i<n-1k=i;j=i+1;j<nV[j]<V[k]k=j;j=j+1;returni<>ki=i+1;V[i]<->V[k]基本路径集

path1:1-3path2:1-2-5-8……path3:1-2-5-9……path4:1-2-4-6……path5:1-2-4-7…………表示后面剩下的路径是可以选择的。测试用例

Path1:1-3取n=1Path2:1-2-5-8-3取n=2

预期结果:路径5-8-3不可到达Path3:1-2-5-9-3取n=2

预期结果:路径5-9-3不可到达path4:1-2-4-6-5-8-3取n=2,v[0]=2,v[1]=1

预期结果:k=1,v[0]=1,v[1]=2path4:1-2-4-6-5-9-3

取n=2,v[0]=2,v[1]=1

预期结果:k=1,路径9-3不可到达path5:1-2-4-7-5-8-3

取n=2,v[0]=2,v[1]=1

预期结果:k=0,路径8-3不可到达path5:1-2-4-7-5-9-3

取n=2,v[0]=2,v[1]=1

预期结果:k=0,v[0]=1,v[1]=2课堂小练习1输入3个数,求出其中的最大值。(1)绘制该程序的流程图;(2)确定独立路径集合(即基本路径集合),设计测试用例进行基本路径测试。课堂小练习2计算以下程序流程图的环复杂度,并列出测试的基本路径。二、动态测试方法(2)等价分类法边值分析法错误推测法因果图法(2)黑盒法

不考虑程序的内部结构与特性,只根据程序功能或程序的外部特性设计测试用例。1.等价分类法基本思想:根据程序的I/O特性,将程序的定义域划分为有限个等价区段—“等价类”,从等价类中选择出的用例,具有“代表性”。等价类分为:有效等价类—对于程序的规格说明,是合理的、有意义的输入数据构成的集合。无效等价类—对于程序的规格说明,是不合理的、没有意义的输入数据构成的集合。等价分类法步骤

应按照输入条件(如输入值的范围,值的个数,值的集合,输入条件必须如何)划分为有效等价类和无效等价类。例如:每个学生可选修1-3门课程可以划分一个有效等价类:选修1-3门课程。可以划分两个无效等价类:未选修课,选修课超过3门。①划分“等价类”

显然,关键是如何划分等价类A为每个等价类编号;B使一个测试用例尽可能覆盖多个有效等价类C特别要注意:一个测试用例只能覆盖一个无效等价类。②选择测试用例等价分类法步骤软件工程52用等价类划分法设计测试用例的实例在某一Pascal语言版本中规定:

“标识符是由字母开头,后跟字母或数字的任意组合构成。编译器能够区分的有效字符数为1-8个。”并且规定:“标识符必须先说明,再使用。”“在同一说明语句中,标识符至少必须有一个。”软件工程53从输入条件来看,有如下几个:标识符的组成标识符的第一个字符标识符的字符个数说明语句中的标识符个数标识符的使用软件工程54用等价类划分方法,建立输入等价类表:输入条件有效等价类无效等价类说明语句中标识符个数1个(1),多个(2)0个(3)标识符中字符数1~8个(4)0个(5),>8个(6),>80个(7)标识符组成字母(8),数字(9)非字母数字字符(10),保留字(11)标识符第一个字符字母(12)非字母(13)标识符使用先说明后使用(14)未说明就使用(15)软件工程55下面选取了9个测试用例,它们覆盖了所有的等价类。①VARx,T1234567:REAL;

BEGINx:=3.414;

T1234567:=2.732;

...…(1),(2),(4),(8),(9),(12),(14)

②VAR:REAL;

(3)

③VARx,:REAL;

(5)

④VART12345678:REAL;

(6)软件工程56⑤VART12345......:REAL;

(7)

多于80个字符⑥VART$:CHAR;

(10)⑦VARGOTO:INTEGER;

(11)⑧VAR2T:REAL;

(13)⑨VARPAR:REAL;

(15)

BEGIN......

PAP:=SIN(3.14*0.8)/6;2.边值分析法

基本思想:选择等价类的边缘值作为测试用例,让每个等价类的边界都得到测试,选择测试用例既考虑输入亦考虑输出。

分析步骤:

A先划分等价类。

B选择测试用例,测试等价类边界。边界选择原则:

A按照输入值范围的边界。

B按照输入/输出值个数的边界。

C输出值域的边界。

D输入/输出有序集的边界。

A按照输入值范围的边界。例如:输入值的范围是-1.0至1.0,则可选择用例:–1.0、1.0、-1.001、1.001。

B按照输入/输出值个数的边界。

例如:输入文件可有1-255个记录,则设计用例:文件的记录数为0个、1个、255个、256个。

C输出值域的边界。

例如:检索文献摘要,最多4篇。设计用例:可检索0篇、1篇、4篇,和5篇(错误)。

D输入/输出有序集(如顺序文件、线性表)的边界。

应选择第一个元素和最后一个元素。边值分析法举例黑盒法应用实例

对FORTRAN编译系统中的DIMENSION语句进行测试。语句格式为:DIMENSIONad[,ad]…ad为数组描述符,形式为n(d[,]…

其中:n-数组名,字母打头的字母数字串,长6。D为界偶(1-7个):[ld:]ndld和nd的值为1-65535,ld缺省为1。输入条件合理的等价类不合理的等价类数组描述的个数1个(1)、多于1个(2)没有数组描述(3)数组名的字符数1—6个(4)0(5),>6(6)数组名有字母(7)有数字(8)有其他字符(9)数组名的第1个字符为字母是(10)不是(11)维数1—7(12)0(13),>7(14)上界常数(15)数组元素名(1640个等价类3.错误推测法 凭经验或直觉推测可能的错误,列出程序中可能有的错误和容易发生错误的特殊情况,选择测试用例。 把输入条件视为“因”,把输出条件视为“果”,将黑盒看成是从因到果的网络图,采用逻辑图的形式来表达功能说明书中输入条件的各种组合与输出的关系。根据这种关系可选择高效的测试用例。因果图是一种形式化语言,是一种组合逻辑网络图。4.因果图法4.因果图法(causeeffcetgraphicei)⑴因果图的基本符号 0-表示“不出现” 1-表示“出现” 恒等 若a为1,则b为1,否则b为0。

“非”函数

若a为1,则b为0,否则b为1。

“或”函数若a或b为1,则d为1,否则d为0。

“与”函数若a与b同为1,则d为1,否则d为0。abababd∨abd∧4.因果图法(causeeffcetgraphicei)对“与”、“或”函数的限制符号

E约束(异)—排斥 即a、b不能同时为1。

I约束(或)—包容

a、b、c不能同时为0。

O约束(唯一)—

选一

a、b中仅有一个为1。

R约束(要求)—

需要

a为1时,b必须为1

M约束(强制)—

屏蔽若a为1时,则b强制为1。abEabcIabRabOabM⑵因果图法的步骤

分析规范,即将问题分为若干可工作的步骤。标识出规范中的原因与结果。 原因—输入条件 结果—输出或系统变换将因果图转换为有限项判断表。将判断表的每一列,转换为一个测试用例。

分析规范语义、内容,转换为因果图。

⑶因果图法应用举例规范:文件名第一列字符必须为A或B,第二列字符必须为数字。满足则修改文件。第一字符不正确发出信息X12,第二个字符不正确发出信息X13。1.分析规范

原因 结果1—第一列字符为A 50—修改文件2—第一列字符为B 51—发信息X123—第二列字符为数字52—发信息X132.画出因果图中间结点 是导出结果的进一步原因。

考虑到原因1、2不可能同时为1,加上E约束。

1111∨5150352∧12E发X12发X13

修改文件3.将因果图转换为判断表

12345678条件原因①11110000②11001100③10101010111100动作结果000011101000010101测试用例A3A8AMA?B5B4BNB!C2X6DYPI11515052软件工程67

例如,有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。其规格说明如下:若投入5角钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮。这时,在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。软件工程68分析这一段说明,列出原因和结果

原因: 1.

售货机有零钱找

2.

投入1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论