《基于人工智能的测试用例自动生成与测试用例集优化》简介

更新于 2026年10月10日 版权声明

《基于人工智能的测试用例自动生成与测试用例集优化》这本书是由邢颖,宫云战,于秀丽著创作的,《基于人工智能的测试用例自动生成与测试用例集优化》共有128章节

1

前 言

随着计算机技术的飞速发展,计算机已经应用到国民经济和社会生活的方方面面,随之而来的是计算机系统的规模和复杂性急剧增加。软件作为计算机系统的灵魂,其规模和复杂性也
阅读
2

目录

目 录 前 言 第1章 软件测试 1.1 软件系统开发的可靠性问题 1.2 回归测试的必要性 1.3 单元测试概述 1.4 静态测试与动态测试 1.5 黑盒测试
阅读
3

第1章 软件测试

(https://www.daowen.com)
阅读
4

1.1 软件系统开发的可靠性问题

在20世纪70年代以前,软件对于大多数人来说,还是个新鲜名词。人们只能在政府机构、科研院所、军事机构以及大型企业里才能看到体积庞大、操作复杂的大型计算机以及运行
阅读
5

1.2 回归测试的必要性

软件测试的关键是测试用例的设计,好的用例设计策略能用较少的用例覆盖更多的功能点,发现更多的缺陷。因此,自动化测试的关键是要自动地生成好的测试用例,至于测试的执行
阅读
6

1.3 单元测试概述

单元测试通常是由开发者编写一小段代码,用这段代码检测被测代码的一个很小、很明确的功能是否正常[11]。通常情况下一个单元测试是用于判断某个特定条件下特定函数的行
阅读
7

1.4 静态测试与动态测试

对程序进行单元测试时,根据是否需要执行被测程序分为动态测试和静态测试。动态测试需要实际执行程序用以收集信息进而生成测试用例,然而动态测试随机选取初值以及执行程序
阅读
8

1.5 黑盒测试和白盒测试

软件测试从不同的角度有不同的分类,不同的分类有不同的测试方法。一般来讲,根据是否分析程序内部结构或逻辑,软件测试可以分为黑盒测试和白盒测试。 1.黑盒测试 黑盒
阅读
9

1.6 基于路径和覆盖率的测试

软件测试中的控制流和数据流测试等问题都可以归结为面向路径的测试用例生成问题。该问题可以描述为:给定一个程序P和P中一条路径w,设P的输入空间为D,求x,使得P以
阅读
10

1.7 约束求解问题

为指定的程序路径自动生成测试用例是软件单元测试的一个基本问题。解决该问题的一个难点是为路径中的约束建立一个系统并且求解[17],这就是人工智能中的一个传统问题—
阅读
11

1.8 代码测试系统

代码测试系统(Code Testing System,CTS)是一款面向C语言的自动化单元测试工具。CTS支持多种覆盖准则,通过静态分析技术对被测试单元自动生成
阅读
12

本章参考文献

[1] 牟光灿.软件测试是软件质量保证的重要手段[J].计算机应用研究,1997,14(2):3-5. [2] Google v:microsoft,and t
阅读
13

第2章 测试用例自动生成技术

因为面向路径的测试用例生成的本质在于求解约束系统,所以研究人员对于基于约束求解的测试用例生成做了大量研究。面向路径的测试用例生成技术从20世纪70年代开始发展,
阅读
14

2.1 静态测试用例自动生成方法

静态测试用例生成方法最早提出于20世纪70年代,这种方法首先对被测程序进行解析,然后用符号变量代替实际变量执行一条程序路径,并提取出执行这条路径要满足的约束条件
阅读
15

2.1.1 常用的静态分析技术

静态分析技术的发展要早于静态测试用例生成技术,从20世纪50年代就已经开始发展,到现在无论是在工程应用还是理论研究方面都取得了长足的进步。静态分析技术采用“保守
阅读
16

2.1.2 典型的测试用例生成技术

1.区间削减 1991年,Demillo和Offutt提出了一种叫作区间削减(domain reduction)的静态分析技术,来进行基于约束的测试用例自动生成
阅读
17

2.2 动态测试用例自动生成方法

动态测试用例生成基于程序的实际执行。早在1976年,Webb Miller和David L.Spooner[65]就提出了这种方法,当时其只针对浮点型的测试用例
阅读
18

2.2.1 直线式程序法

Webb Miller和David L.Spooner提出的就是直线式程序法[65]。这种方法将路径上的判断语句进行替换,替换之后都变成了布尔型赋值语句,其形式
阅读
19

2.2.2 分支函数极小化法

1990年,Korel对Webb Miller和David L.Spooner的研究进行了扩展,他提出了应用于Pascal语言的最具代表性的一种动态方法[5]。
阅读
20

2.2.3 ADTEST

M.Gallagher等人开发的ADTEST[71]是对于Korel的研究在Ada语言上的扩展。该方法通过插装程序强制程序以任意一组数据为输入执行路径,插装语句
阅读
21

2.2.4 迭代松弛法

1998年,Neelam Gupta提出了迭代松弛法[72]。该方法引入程序切片思想,任选一组数据输入考察路径上的分支谓词,通过数据流分析确定谓词函数对输入变量
阅读
22

2.2.5 MHS方法

近年来,基于搜索的软件工程(Search-Based Software Engineering,SBSE)[78-80]受到越来越多的关注,其最重要的特点就是将
阅读
23

2.3 动静结合的测试用例自动生成方法

在静态和动态方法的基础上,研究人员提出了动静结合的方法,即动态符号执行(dynamic symbolic execution)方法或者concolic(conc
阅读
24

本章参考文献

[1] King J C.Symbolic execution and program testing[J].Communications of the ACM
阅读
26

3.1 分支限界算法

本章围绕基于分支限界的测试用例生成展开,其中分支限界算法如图3-1所示。 (https://www.daowen.com) 图3-1 分支限界算法 为了找到有效
阅读
27

3.1.1 问题定义

许多测试用例生成问题都涉及待测程序P的控制流图(Control Flow Graph,CFG)。程序P的控制流图是一个有向图G=(N,E,i,o),其中N是语句
阅读
28

3.1.2 解决方案

因为面向路径的测试用例生成问题是一类约束满足问题,这类问题需要通过合适的搜索或寻优算法来求解。分支限界作为全局求解算法提供灵活的回溯机制,可以在局部无解时回到更
阅读
29

3.1.3 路径约束提取

路径约束在CTS中定义成如下的表达式(在本书中,路径约束和表达式表示的意义相同)形式: 从表达式的定义可以看出,表达式能处理加减乘除四则运算,并能处理乘方运算
阅读
30

3.1.4 求相关变量集和相关变量闭包

1.相关变量 变量相关又称变量间的依赖。变量a依赖于变量b记作:b→a。变量a直接依赖于b记作:b→Dir Dep a。DInfluence(a)表示直接影响变
阅读