软件测试(pt)完整版
6.1软件测试的基本概念 一、软件测试的目的和重要性 因为开发工作的前期不可避免地会引入错误,测试的目的是为了发现和改正错误,这对于某些涉及人的生命安全或重要的军事、经济目标的项目显得尤其重要。 二、软件测试的特点 1、软件测试的开销大 按照Boehm的统计,软件测试的开销大约占总成本的30%-50%。例如:APPOLLO登月计划,80%的经费用于软件测试。 二、软件测试的特点 — 结论 3、软件测试难度大 根据上述分析,既然不能进行 “穷举”测试,又要查出尽可能多的错误,软件测试工作的难度大。只有选择 — 三、软件测试的基本原则 3、充分注意测试中的群集现象。 四、测试的基本步骤 6.2 软件测试方法 软件测试方法分为两类:静态分析、动态测试 ① 调用图 无论Y 为何值,都不能够调用子程序。 ② 数据流分析图 节点 —表示单个语句。 有向边 —表示控制结构。 d — 定义 r — 引用 u — 未引用 二、动态测试方法(1) 通过选择适当的测试用例,执行程序。 常用的方法: 1、白盒法 分析程序的内部逻辑结构,注意选择适当的覆盖标准,设计测试用例,对主要路径进行尽可能多的测试。 白盒法 白盒法又称为逻辑覆盖法,其测试用例选择,是按照不同覆盖标准确定的。 白盒法步骤: 例:用白盒法测试以下程序段: Procedure(VAR A,B,X:REAL); BEGIN IF (A>1) AND (B=0) THEN X:=X/A ; IF (A=2) OR (X>1) THEN X:=X+1 END; 白盒法举例 Procedure (VAR A,B,X:REAL); BEGIN IF(A>1) AND (B=0) THEN X:=X/A ; IF (A=2) OR (X>1) THEN X:=X+1 END; 1、语句覆盖 使得程序中每个语句至少都能被执行一次。 2、判定覆盖 使得程序中每个判定至少为TRUE 或FALSE各一次。 3、条件覆盖 4、判定/条件覆盖 同时满足判断覆盖和条件覆盖。 5、条件组合覆盖 使得每个判定中条件的各种可能组合都至少出现一次。 作业: PROGRAM bubble(input,output); CONST n=100; TYPE colarr=ARRAY[1..n] OF INTEGER; VAR a: colarr; t,i,j: INTEGER; BEGIN FOR i:=1 TO n DO READ(a[i]); READLN; FOR j:=1 TO n-1 DO FOR i:=1 TO n-j DO IF a[i]>a[i+1] THEN BEGIN t:=a[i]; a:=a[i+1]; a[I+1]:=t END; FOR i:=1 TO n DO BEGIN WRITE(a[i]:4); IF I MOD 5=0 THEN WRITELN END; WRITELN END. 作业: 二、动态测试方法(2) 1、等价分类法 基本思想:根据程序的I/O特性,将程序的定义域划分为有限个等价区段 —“等价类”,从等价类中选择出的用例,具有“代表性”。 2、边值分析法 基本思想: 选择等价类的边缘值作为测试用例,让每个等价类的边界都得到测试,选择测试用例既考虑输入亦考虑输出。 黑盒法应用实例 3、错误推测法 凭经验或直觉推测可能的错误,列出程序中可能有的错误和容易发生错误的特殊情况,选择测试用例。 4、因果图法(cause effcet graphicei) ⑴ 因果图的基本符号 0 - 表示“不出现”1 - 表示“出现” 4、因果图法(cause effcet graphicei) 对“与”、“或”函数的限制符号 ⑵ 因果图法的步骤 分析规范,即将问题分为若干可工作的步骤。 标识出规范中的原因与结果。 原因—输入条件 结果—输出或系统变换 ⑶ 因果图法应用举例 规范:文件名第一列字符必须为A或B,第二列字 符必须为数字。满足则修改文件。第一字符不正 确发出信息X12,第二个字符不正确发出信息X