第08课--白盒测试(2)—路径分析测试(基本路径测试)
- 格式:pptx
- 大小:647.11 KB
- 文档页数:63
白盒测试中的路径分析与数据流分析白盒测试是软件测试中的一种方法,旨在通过具体了解被测试软件内部结构和实现原理,来评估软件的可靠性和可用性。
在白盒测试中,路径分析和数据流分析是两种常见的技术手段。
本文将详细介绍路径分析和数据流分析在白盒测试中的应用。
一、路径分析路径分析是一种基于程序控制流图的技术,通过分析软件中的不同路径,确定哪些路径需要进行测试,从而提高测试效率。
路径分析通常涉及以下几个关键概念:1. 路径覆盖准则路径覆盖准则是路径分析的基本指导原则,常见的路径覆盖准则有语句覆盖、分支覆盖、条件覆盖和判定覆盖等。
语句覆盖要求覆盖软件中的每个语句,分支覆盖要求覆盖软件中的每个分支语句,条件覆盖要求覆盖每个条件的真假两种情况,判定覆盖要求覆盖每个判定结果的真假两种情况。
2. 程序控制流图程序控制流图是表示程序中控制流的图形化工具,它由节点和边构成。
节点代表程序中的语句,边代表程序中的控制流转移。
通过绘制程序控制流图,可以清晰地展示程序的结构和流程,有助于进行路径分析。
3. 路径选择准则路径选择准则是选择需要进行测试的路径的指导原则,常用的路径选择准则有全路径选择、基本路径选择和回归测试路径选择等。
全路径选择要求覆盖软件中的所有可能路径,基本路径选择要求覆盖软件中的基本路径,回归测试路径选择要求覆盖由程序修改引起的路径。
二、数据流分析数据流分析是一种对软件中的数据流进行分析的技术,通过分析数据在程序中的传递和变换,发现潜在的数据流问题,从而提高软件的可靠性和安全性。
数据流分析常涉及以下几个关键概念:1. 定义和使用在数据流分析中,首先需要确定数据对象在程序中的定义和使用。
数据的定义指在程序中对数据对象的声明和初始化,数据的使用指在程序中对数据对象进行操作和传递。
通过对数据的定义和使用进行分析,可以找出数据流的依赖关系和传递路径。
2. 数据流图数据流图是表示程序中数据流的图形化工具,它由数据对象和数据流构成。
一、白盒测试概念1、定义白盒测试又称结构测试、透明盒测试、逻辑驱动测试、基于代码的测试。
盒子指被测试的软件,白盒指盒子是可视的。
白盒测试是一种测试用例设计方法,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例。
白盒测试主要针对被测程序的源代码,主要用于软件验证,不考虑软件的功能实现,只验证内部动作是否按照设计说明书的规定进行。
2、目的我们一方面注重软件功能需求的实现,另一方面还要注重程序逻辑细节,主要是因为软件自身的缺陷,具体如下:1)逻辑错误和不正确假设与一条程序路径被运行的可能性成反比。
日常处理往往被很好地了解,而“特殊情况”的处理则难于发现。
2)我们经常相信某逻辑路径不可能被执行,而事实上,它可能在正常的基础上被执行。
程序的逻辑流有时是违反直觉的,只有路径测试才能发现这些错误。
3)代码中的笔误是随机且无法杜绝的。
笔误出现在主流上和不明显的逻辑路径上的机率是一样的。
很多被语法检查机制发现,但是其他的会在测试开始时才会被发现。
4)功能测试本身的局限性。
如果程序实现了没有被描述的行为,功能测试是无法发现的,例如病毒,而白盒测试很容易发现它。
3、目标采用白盒测试必须遵循以下几条原则,才能达到测试的目标:1)保证一个模块中的所有独立路径至少被测试一次。
2)所有逻辑值均需测试真(true) 和假(false) 两种情况。
3)检查程序的内部数据结构,保证其结构的有效性。
4)在上下边界及可操作范围内运行所有循环。
4、黑白灰区别黑盒测试技术:也称功能测试或数据驱动测试,只关注规格说明中的功能,测试者在程序接口对软件界面和软件功能进行测试,它只检查实现了的功能是否按照“用户需求说明书”的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
主要用于软件确认测试,结合兼容、性能测试等方面,但黑盒测试不能保证已经实现的各个部分都被测试到。
黑盒测试适用于各阶段测试。
20 15 —20 16 学年第 2 学期软件测试技术课程实验报告学院:计算机科学技术专业:软件工程班级:软件二班姓名:吴德宁学号:041340217任课教师:刘玉宝实验日期:2016年 4 月19 日实验题目实验1、黑盒测试:等价类划分法实验目的1、掌握等价类的概念2、掌握等价类划分方法的测试用例设计方法。
实验内容 1、对房价计算问题,运用等价类测试用例设计法设计测试用例,并执行测试,撰写实验报告。
房价计算问题:房屋价格=房屋面积×面积单价;房屋面积有:75, 95,125,165,185平方米四种;面积单价与楼层相关:房屋共7层,2楼单价3500元/平方米为基准价,1楼单价比基准价低2%,3,4楼比基准价高3%,5,6楼比基准价少2%,7楼比基准价少3%。
关键代码如下(Java实现)public class BlackTest1 {int Area;int Floor;double sum;Scanner scan = new Scanner(System.in);public static void main(String[] args){BlackTest1 t = new BlackTest1();t.display();}public void display(){System.out.println("----------------欢迎来到房价计算器---------------");System.out.println("| 注:选择你要操作的编号0-9 |");System.out.println("------------------------------------------------");System.out.println("* *");System.out.println("* 9.计算房价 *");System.out.println("* *");System.out.println("* 0.退出系统 *");System.out.println("* *");System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++");int select = scan.nextInt();switch(select){case 9:System.out.println("请输入所在楼层1-7Floor:");Floor = scan.nextInt();System.out.println("请输入楼层面积Area:");Area = scan.nextInt();switch(Floor){case 1:sum= Area*3500*(1-0.02);System.out.println("您选择"+Floor+"楼,住房面积是:"+Area+"平方米");System.out.println("这套房一共要花"+ sum +"元");break;case 2:sum = Area*3500*1;System.out.println("您选择"+Floor+"楼,住房面积是:"+Area+"平方米");System.out.println("这套房一共要花"+ sum +"元");break;case 3:case 4:sum = Area*3500*(1+0.03);System.out.println("您选择"+Floor+"楼,住房面积是:"+Area+"平方米");System.out.println("这套房一共要花"+ sum +"元");break;case 5:case 6:sum = Area*3500*(1-0.02);System.out.println("您选择"+Floor+"楼,住房面积是:"+Area+"平方米");System.out.println("这套房一共要花"+ sum +"元");break;case 7:sum = Area*3500*(1-0.03);System.out.println("您选择"+Floor+"楼,住房面积是:"+Area+"平方米");System.out.println("这套房一共要花"+ sum +"元");break;default :break;}display();break;default :break;}}}实验步骤:①划分等价类,得到等价类表。
实验四、白盒测试技术(二)一、实验类型实验类型为验证型,2个学时。
二、实验目的(1)通过简单程序白盒测试,熟悉测试过程,对软件测试行程初步了解,并养成良好的测试习惯;(2)熟练掌握如何运用基路径测试方法进行测试用例设计,初步熟悉如何利用程序插装技术进行逻辑覆盖率分析;三、背景知识基本路径测试如果把覆盖的路径数压缩到一定限度内,例如,程序中的循环体只执行零次和一次,就成为基本路径测试。
它是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。
设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次。
① 程序的控制流图控制流图是描述程序控制流的一种图示方法。
基本控制构造的图形符号如图所示。
符号○称为控制流图的一个结点,一组顺序处理框可以映射为一个单一的结点。
控制流图中的箭头称为边,它表示了控制流的方向,在选择或多分支结构中分支的汇聚处,即使没有执行语句也应该有一个汇聚结点。
边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。
图1 控制流图的各种图形符号如果判定中的条件表达式是复合条件时,即条件表达式是由一个或多个逻辑运算符(OR,AND,NAND,NOR)连接的逻辑表达式,则需要改复合条件的判定为一系列只有单个条件的嵌套的判定。
例如对应图3-2. (a) 的复合条件的判定,应该画成如图3-2. (b) 所示的控制流图。
条件语句if a OR b 中条件a和条件b各有一个只有单个条件的判定结点。
图2 复合逻辑下的控制流图② 计算程序环路复杂性进行程序的基本路径测试时,程序的环路复杂性给出了程序基本路径集合中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必需的测试用例数目的上界。
所谓独立路径,是指包括一组以前没有处理的语句或条件的一条路径。
如在图3-3(b)所示的控制流图中,一组独立的路径是:path1:1 - 11path2:1 - 2 - 3 - 4 - 5 - 10 - 1 - 11path3:1 - 2 - 3 - 6 - 8 - 9 - 10 - 1 - 11path4:1 - 2 - 3 - 6 - 7 - 9 - 10 - 1 - 11路径path1,path2,path3,path4组成了图3-3 (b) 所示控制流图的一个基本路径集。