(整理)基本路径测试.

合集下载

白盒测试:路径测试及测试用例设计

白盒测试:路径测试及测试用例设计

20 14 —20 15 学年第 2 学期
软件测试技术课程
实验报告
学院:计算机科学技术
专业:软件工程
班级:软件12401
*名:***
学号:*********
任课教师:***
实验日期:2015年 6 月16 日实验题目实验5、白盒测试:路径测试及测试用例设计
实验目的1、掌握独立路径,程序基本路径测试的概念。

2、掌握独立路径测试法。

实验内容
程序int binsearch(int array[],int key)实现折半查找的功能。

数组array元素按升序排列,length为数组array的长度,key为要查找的值。

试用独立路径集测试法测试该程序,撰写实验报告。

关键代码如下(Java实现)
public static int binsearch(int array[],int key)
{
int low = 0;
int high = array.length - 1;
int middle;
while(low <= high)
{
middle = (low+high)/2;
if(array.[middle] == key)
{
return middle;
}else
if(array.[middle] < key)
{
low = middle +1;
}else
{
high = middle - 1;
}
}
return -1;
}
实验步骤:
1)画出程序的流图(控制流程图)。

白盒测试-基本路径测试习题

白盒测试-基本路径测试习题
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int i,max=0; int arr[]=new int[5];//设数组大小为5 System.out.println("请输入数组元素:"); for(i=0;i<=arr.length-1;i++) {
(1)void bubbleSort(int a[]){
(2)
for (int i = a.length; --i>=0; ) { //2.1 int i = a.length
(3)
boolean flipped = false; //2.2.1 –-i=0
(4)
for (int j = 0; j<i; j++) { //2.2.2 –-i>0
3.独立路径集 路径 1:2.1-2.2.1-2.2.2-15-16 路径 2:2.1-2.2.1-3-3.1-4.1-4.2-12-13-16 路径 3:2.1-2.2.1-2.2.2-3-3.1-4.1-4.2-5-10-4.3-4.2-12-13-16 路径 4:2.1-2.2.1-2.2.2-3-3.1-4.1-4.2-5-10-4.3-4.2-12-13-2.2.1-2.2.2-15-16 路径 5:2.1-2.2.1-2.2.2-3-3.1-4.1-4.2-5-6,7,8,9-10-4.3-4.2-12-13-2.2.1-2.2.2-15-16 路径 6:2.1-2.2.1-2.2.2-3-3.1-4.1-4.2-5-6,7,8,9-10-4.3-4.2-12-13-16
for (int j = 0; j<i; j++) { if (a[j] > a[j+1]) {

(完整版)软件工程导论试题(整理)

(完整版)软件工程导论试题(整理)

单项选择题(每小题1分,共10分)1、在结构性的瀑布模型中,哪一个阶段定义的标准将成为软件测试中的系统测试阶段的目标( A )(A)需求分析阶段(B)详细设计阶段(C)概要设计阶段(D)可行性2、研究阶段软件工程方法中普遍定义的方法之一是结构化生命周期方法(SLC方法),下述哪一个论述不具有SLC方法的主要特征( C )A 严格定义需求B 划分开发阶段C 规范文档格式D 分析控制流程3、软件结构中两个模块之间有调用关系,传递简单数据值,相当于高级语言中的值传递,这两个模块之间的耦合是( D )(A)公共耦合(B)控制耦合(C)标记耦合(D)数据耦合4、软件维护的四类维护活动是( A )(A)改正性维护,适应性维护,完善性维护和预防性维护。

(B)适应性维护,完善性维护,抢救性维护和辅助性维护。

(C)改正性维护,适应性维护,完善性维护和辅助性维护。

(D)适应性维护,完善性维护,抢救性维护和预防性维护。

5、主要从( A )几个方面进行系统可行性研究。

(A)技术可行性,经济可行性,操作可行性。

(B)技术可行性,经济可行性,系统可行性。

(C)经济可行性,系统可行性,操作可行性。

(D)经济可行性,系统可行性,时间可行性。

6、进行需求分析可使用多种工具,但( C )是不适用的。

(A)数据流图(B)判定表(C)PAD图(D)数据字典7、软件需求分析阶段的工作,可以分为四个方面:对问题的识别、分析与综合、编写需求分析文档以及( B )(A)软件的总结(B)需求分析评审(C)阶段性报告(D)以上答案都不对8、OMT(Object Modelling Technique)方法的第一步是从问题的陈述入手,构造系统模型。

系统模型由对象模型、( C )组成。

A静态模型和功能模型 B动态模型和过程模型C动态模型和功能模型 D静态模型和操作模型9、为了表示项目管理功能工作中各项任务之间的进度衔接关系,常用的计划管理工具是( D )(A)程序结构图(B)数据流图(C) E-R图(D)甘特(Gantt)图①软件生命周期中所花费用最多的阶段是(D)A.详细设计B.软件编码C.软件测试D.软件维护②可行性分析是在系统开发的早期所做的一项重要的论证工作,它是决定该系统是否开发的决策依据,因必须给出(B)的回答。

最新请写出判断三角形的代码-设计用例达到测试效果(语句覆盖-判定覆盖-条件组合覆盖-基本路径测试法)

最新请写出判断三角形的代码-设计用例达到测试效果(语句覆盖-判定覆盖-条件组合覆盖-基本路径测试法)

请写出判断三角形的代码,设计用例达到测试效果语句覆盖判定覆盖条件组合覆盖#include<stdio.h>void main(){int a, b, c;printf("please enter three integer:");scanf("%d%d%d", &a, &b, &c);if(0<a && a<200 && 0<b && b<200 && 0<c && c<200){if(a+b>c && a+c>b && c+b>a){if(a==b && b==c && a==c) //这里可以省掉一个判断{printf("1是等边三角形");}else{if(a==b || b==c || a==c){printf("2是等腰三角形");}else{if(a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a){printf("3是直角三角形");}else{printf("4是一般三角形");}}}}else{printf("5不能组成三角形");}}else{printf("6某些边不满足限制");}}1.为三角形程序开发判定/条件覆盖和条件组合覆盖的测试用例。

1)判定/条件覆盖对于第一个判定a>0&&b>0&&c>0 :条件a>0 取真值记为T1,取假值记为-T1条件b>0 取真值记为T2,取假值记为-T2条件c>0 取真值记为T3,取假值记为-T3对于第二个判定( a+b>c)&&(a+c>b)&&(b+c>a ):条件a+b>c 取真值记为T4,取假值记为-T4条件a+c>b 取真值记为T5,取假值记为-T5条件b+c>a 取真值记为T6,取假值记为-T62.对下面的流程图用逻辑覆盖法设计测试用例(至少三种)1)..语句覆盖:语句覆盖可以保证程序中的每个语句都得到执行。

软件工程复习题与答案

软件工程复习题与答案

二、填空题1.为了支持软件人员开发和维护活动而使用的软件一般是指___软件工具_____。

3.在软件结构的设计中,各个模块之间要力求降低耦合性,提高__内聚性_____。

5.数据流图(DFD)一般可分为变换型和__事务性_____两类。

6.软件维护的内容包括校正性维护、适应性维护、__完善性维护__和预防性维护。

7.软件的生产经历了三个阶段,分别是程序设计时代、程序系统时代和___软件工程时代___。

8.渐增模型是瀑布模型的变种,分为两类:增量构造模型和__演化提交模型__。

9.状态图反映了_事件与状态____的关系。

10.软件项目管理过程一个关键的活动是__制定项目计划__,它是软件开发工作的第一步。

11.组成软件的两个部分是:____程序和文档________。

14.变换型数据流图是由输入、__变换(或处理)_____和输出三部分组成的。

15.Jackson方法是一种面向___数据结构_____的开发方法。

16.结构化语言是介于___自然语言_____和形式语言之间的一种半形式语言。

17.软件产品在交付使用之前一般要经过___单元测试___、集成测试、确认测试和系统测试。

18.不采用软件工程的方法开发软件,软件只有程序而无文档,从而导致维护工作困难,这是一种__结构化______的维护。

19.子类自动共享父类数据结构和方法的机制是___继承性_____,这是类之间的一种关系。

21.软件生产的发展经历了三个阶段,分别是程序设计时代、程序系统时代和___软件工程____时代。

22.可行性研究从以下三个方面研究每种解决方法的可行性:经济可行性、社会可行性和__技术可行性____。

23.HIPO图的H图用于描述软件的层次关系,矩形框表示一个模块,矩形框之间的直线表示模块之间的____调用_____关系。

24.数据流图描绘数据在系统中___流动和处理___的过程。

25.为了便于对照检查,测试用例应由输入数据和预期的___输出结果(输出数据)____两部分组成。

基本路径测试法

基本路径测试法

画出程序控制流程图 计算程序环路复杂性 确定独立路径集合
准备测试用例
4

例:下面是一个程序段,试设计基本路径测试的测试用
例,设计出的测试用例要保证每一个基本独立路径至少要执 行一次
22 24
I
H
1. int Test(int i_count, int i_flag) 2. { 3. int i_temp = 0; 4. while (i_count > 0) 5. { 6. if (0 == i_flag) 7. { 8. i_temp = i_count + 100; 9. break; 10. } 11. else 12. { 13. if (1 == i_flag) 14. { 15. i_temp = i_temp + 10; 16. } 17. else 18. { 19. i_temp = i_temp + 20; 20. } 21. } 22. i_count- -; 23. } 24. return i_temp; 25. }
1
控制流程图的图形符号

程序控制流程图
1 边 1
3
结点 区域
2 6 3 6 7 8 4 5 7 R3 8 R1 R2
4
9 10 R4
11 (a)程序流程图 )
11 (b)控制流图
2

程序控制流程图 a b x y y
if a and b then x else y
复合逻辑下的控制流程图
3

基本路径测试的步骤

画出程序控制流程图
4
C
6
A
D
E
13
F
G
8 19

测试的基本方法

测试的基本方法

测试的基本⽅法1、等价类划分法等价类划分法就是:是把所有可能的输⼊数据,即程序的输⼊域划分成若⼲部分(⼦集),然后从每⼀个⼦集中选取少数具有代表性的数据作为测试⽤例。

该⽅法是⼀种重要的,常⽤的⿊盒测试⽤例设计⽅法。

2、边界值分析法定义:边界值分析法就是对输⼊或输出的边界值进⾏测试的⼀种⿊盒测试⽅法。

通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试⽤例来⾃等价类的边界。

3、错误推测⽅法定义:基于经验和直觉推测程序中所有可能存在的各种错误, 从⽽有针对性的设计测试⽤例的⽅法。

4、因果图法定义:是⼀种利⽤图解法分析输⼊的各种组合情况,从⽽设计测试⽤例的⽅法,它适合于检查程序输⼊条件的各种组合情况。

5、判定表驱动分析⽅法定义:判定表是分析和表达多逻辑条件下执⾏不同操作的情况的⼯具。

6、正交实验设计⽅法正交实验设计⽅法:依据Galois理论,从⼤量的(实验)数据(测试例)中挑选适量的,有代表性的点(例),从⽽合理地安排实验(测试)的⼀种科学实验设计⽅法.类似的⽅法有:聚类分析⽅法,因⼦⽅法⽅法等.测试⽤例设计综合策略1. Myers提出了使⽤各种测试⽅法的综合策略:1)在任何情况下都必须使⽤边界值分析⽅法,经验表明⽤这种⽅法设计出测试⽤例发现程序错误的能⼒最强。

2)必要时⽤等价类划分⽅法补充⼀些测试⽤例。

3)⽤错误推测法再追加⼀些测试⽤例。

4)对照程序逻辑,检查已设计出的测试⽤例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应当再补充⾜够的测试⽤例。

5)如果程序的功能说明中含有输⼊条件的组合情况,则⼀开始就可选⽤因果图法。

2.测试⽤例的设计步骤1)构造根据设计规格得出的基本功能测试⽤例;2)边界值测试⽤例;3)状态转换测试⽤例;4)错误猜测测试⽤例;5)异常测试⽤例;6)性能测试⽤例;7)压⼒测试⽤例。

3.优化测试⽤例的⽅法1)利⽤设计测试⽤例的8种⽅法不断的对测试⽤例进⾏分解与合并;2)采⽤遗传算法理论进化测试⽤例;3)在测试时利⽤发散思维构造测试⽤例。

白盒测试技术(基本路径测试法)

白盒测试技术(基本路径测试法)
输入数据 预期结果
控制流图的组成: 1. 节点:以标有编号的圆圈表示。可代表一个或多个语句、一
个处理框序列和一个条件判定框(假设不包含复合条件)。包 含条件的节点被称为判断节点,分支的汇聚处应该有一个汇 点。, 2. 控制流线或弧:以箭头表示,又称为边。 3. 边和结点圈定的区域叫做区域,当对区域计数时,图形外的 区域也应记为一个区域。

1
▪ 1.白盒测试技术概念以及方

▪ 2.基本路径测试法
重点
▪ 步骤
▪ 实现
黑盒
X=2
?
y=4
白盒
X=2 y=2x
y=4
白盒测试以源代码为基本对象,是对软件的过 程性细节做细致的检查,允许测试人员利用程序内 部的逻辑结构及有关信息,设计或选择测试用例, 对程序所有逻辑路径进行测试,通过在不同点检查 程序状态,确定实际状态是否与预期的状态一致。
2.计算环路复杂度,又称为圈复杂度
❖ 案例分析
3.列出程序中形成的基本路径集合
路径1:4-14 路径2:4-6-7-14 路径3:4-6-8-10-13-414 路径4:4-6-8-11-13-414
❖ 案例分析
4.推导出可以确保集合中每条独立路径都被执行的 测试用例。
2
1
4
3
分析控制流图:
1. 节点数: 9 2. 判断节点数: 3 3. 边数: 11 4. 区域数: 4
程 序 流 程
控 制 流 图

程序的环路复杂性给出了程序基本路径集中的 独立路径条数,这是确保程序中每个可执行语句至 少执行一次所必需的测试用例数目的上界。
程序环路复杂性计算方法(三种):
(1)流图中区域的数量对应于环形复杂度; 4. (2)给定流图G的环形复杂度V(G),定义 为V(G)=E-N+2, E是流图中边的数量, N是流图中节点的数量。 V(G)=11-9+ 2. (3) V(G)=P+1, P是流图G中的判定节 点数。 V(G)=3+1
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、Z路径覆盖、程序变异。

其中运用最为广泛的是基本路径测试法。

基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。

设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。

在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。

包括以下4个步骤和一个工具方法:
1. 程序的控制流图:描述程序控制流的一种图示方法。

2. 程序圈复杂度:McCabe复杂性度量。

从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。

3. 导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果。

4. 准备测试用例:确保基本路径集中的每一条路径的执行。

工具方法:
图形矩阵:是在基本路径测试中起辅助作用的软件工具,利用它可以实现自动地确定一个基本路径集。

程序的控制流图:描述程序控制流的一种图示方法。

圆圈称为控制流图的一个结点,表示一个或多个无分支的语句或源程序语句
流图只有二种图形符号:
图中的每一个圆称为流图的结点,代表一条或多条语句。

流图中的箭头称为边或连接,代表控制流
任何过程设计都要被翻译成控制流图。

如何根据程序流程图画出控制流程图?
在将程序流程图简化成控制流图时,应注意:
n 在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。

n 边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。

如下页图所示
n 如果判断中的条件表达式是由一个或多个逻辑运算符(OR, AND, NAND, NOR) 连接的复合条件表达式,则需要改为一系列只有单条件的嵌套的判断。

例如:
1 if a or b
2 x
3 else
4 y
对应的逻辑为:
独立路径:至少沿一条新的边移动的路径
基本路径测试法的步骤:
o 第一步:画出控制流图
流程图用来描述程序控制结构。

可将流程图映射到一个相应的流图(假设流程图的菱形决定框中不包含复合条件)。

在流图中,每一个圆,称为流图的结点,代表一个或多个语句。

一个处理方框序列和一个菱形决测框可被映射为一个结点,流图中的箭头,称为边或连接,代表控制流,类似于流程图中的箭头。

一条边必须终止于一个结点,即使该结点并不代表任何语句(例如:if-else-then结构)。

由边和结点限定的范围称为区域。

计算区域时应包括图外部的范围。

画出其程序流程图和对应的控制流图如下
第二步:计算圈复杂度
圈复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界。

独立路径必须包含一条在定义之前不曾用到的边。

有以下三种方法计算圈复杂度:
流图中区域的数量对应于环型的复杂性;
给定流图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量;
给定流图G的圈复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量。

第三步:导出测试用例
根据上面的计算方法,可得出四个独立的路径。

(一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路。

V(G)值正好等于该程序的独立路径的条数。

) ü路径1:4-14
ü路径2:4-6-7-14
ü路径3:4-6-8-10-13-4-14
ü路径4:4-6-8-11-13-4-14
根据上面的独立路径,去设计输入数据,使程序分别执行到上面四条路径。

o 第四步:准备测试用例
为了确保基本路径集中的每一条路径的执行,根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测试到,满足上面例子基本路径集的测试用例是:
举例说明:
例:下例程序流程图描述了最多输入50个值(以–1作为输入结束标志),计算其中有效的学生分数的个数、总分数和平均值。

步骤1:导出过程的流图。

步骤2:确定环形复杂性度量V(G):
1)V(G)= 6 (个区域)
2)V(G)=E–N+2=16–12+2=6
其中E为流图中的边数,N为结点数;
3)V(G)=P+1=5+1=6
其中P为谓词结点的个数。

在流图中,结点2、3、5、6、9是谓词结点。

步骤3:确定基本路径集合(即独立路径集合)。

于是可确定6条独立的路径:
路径1:1-2-9-10-12
路径2:1-2-9-11-12
路径3:1-2-3-9-10-12
路径4:1-2-3-4-5-8-2…
路径5:1-2-3-4-5-6-8-2…
路径6:1-2-3-4-5-6-7-8-2…
步骤4:为每一条独立路径各设计一组测试用例,以便强迫程序沿着该路径至少执行一次。

1)路径1(1-2-9-10-12)的测试用例:
score[k]=有效分数值,当k < i ;
score[i]=–1, 2≤i≤50;
期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。

2)路径2(1-2-9-11-12)的测试用例:
score[ 1 ]= – 1 ;
期望的结果:average = – 1 ,其他量保持初值。

3)路径3(1-2-3-9-10-12)的测试用例:
输入多于50个有效分数,即试图处理51个分数,要求前51个为有效分数;
期望结果:n1=50、且算出正确的总分和平均分。

4)路径4(1-2-3-4-5-8-2…)的测试用例:
score[i]=有效分数,当i<50;
score[k]<0,k< i ;
期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。

2.3.3 基本路径测试法
基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行的路径集合,从而设计测试用例的方法。

设计出的测试用例要保证在测试中程序的每个执行语句至少执行一次。

基本路径测试法的重点内容如下:
程序的控制流图:描述程序控制流的一种图示方法。

程序环形复杂度:McCabe复杂性度量。

从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必需的测试用例数目的上界。

导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果。

准备测试用例:确保基本路径集中的每一条路径的执行。

程序控制流图(可简称流图)是对程序流程图进行简化后得到的,它突出表示程序控制流的结构。

程序控制流图是描述程序控制流的一种方式,其要点如下:
1)图形符号:圆圈代表一个结点,表示一个或多个无分支的语句或源程序语句。

2)程序控制流边和点圈定的部分叫做区域。

当对区域计数时,图形外的一个部分也应记为一个区域。

3)判断语句中的条件为复合条件(即条件表达式由一个或多个逻辑运算符连接的逻辑表达式(a and b))时,则需要改变复合条件的判断为一系列只有单个条件的嵌套的判断。

结点由带标号的圆圈表示,可代表一个或多个语句、一个处理框序列和一个条件判定框(假设不包含复合条件)。

控制流线由带箭头的弧或线表示,可称为边,它代表程序中的控制流。

为了满足路径覆盖,必须首先确定具体的路径以及路径的个数。

我们通常采用控制流图的边(弧)序列和节点列表示某一条具体路径。

路径测试就是从一个程序的入口开始,执行所经历的各个语句的完整过程。

任何关于路径分析的测试都可以叫做路径测试。

程序的环形复杂度也称为圈复杂度,它是一种为程序逻辑复杂度提供定量尺度的软件度量。

将环形复杂度用于基本路径方法,可以提供程序基本集的独立路径数量,确保所有语句至少执行一次测试。

独立路径是指程序中至少引入了一个新的处理语句集合或一个新条件的程序通路,包括一组以前没有处理的语句或条件的一条路径。

通常环形复杂度以图论为基础,提供软件度量。

四、基本路径测试
只要设计出的测试用例能够确保这些基本路径的执行,就可以使得程序中的每个可执行语句至少执行一次,每个条件的取真和取假分支也能得到测试。

基本路径集不是唯一的,对于给定的控制流图,可以得到不同的基本路径集。

(a)程序流程图
(b)控制流图
图10-4-9程序流程图与对应的控制流图。

相关文档
最新文档