文档库 最新最全的文档下载
当前位置:文档库 › 一种结合数据流约束的变异测试用例生成方法

一种结合数据流约束的变异测试用例生成方法

一种结合数据流约束的变异测试用例生成方法
一种结合数据流约束的变异测试用例生成方法

Software Engineering and Applications 软件工程与应用, 2018, 7(2), 99-109

Published Online April 2018 in Hans. https://www.wendangku.net/doc/d83076877.html,/journal/sea

https://https://www.wendangku.net/doc/d83076877.html,/10.12677/sea.2018.72012

A Method Combined with Data

Flow Constraint for Generating

Mutation Test Cases

Xiaozhi Du*, Qianyao Qiang, Linting Huang

School of Software, Xi’an Jiaotong University, Xi’an Shaanxi

Received: Apr. 6th, 2018; accepted: Apr. 17th, 2018; published: Apr. 24th, 2018

Abstract

Mutation testing is a powerful method of software testing. As a means of finding faults and unco-vering test suite defects, the method of test case generation is crucially important. If the test case can generate efficiently and achieve a higher mutation score, it has the potential to help mutation testing be widely adopted. At present, most of the mutation test case generation methods are based on the analysis of the control flow graph, using only the control flow constraint between the statements to guide the generation of test cases, without considering the influence of the data flow constraint among the statements. In this paper, a mutation test case generation method combined with data flow constraint is proposed. First, the control flow constraint and the data flow con-straint were combined to model the fitness function; second, the model was used in genetic algo-rithms to guide the selection and evolution of the test cases. Experiments show that the average iteration number is reduced by 60.53% when generating the same scale test set compared to HGA, and the generated test cases get a 27.9% higher mutation score than random method, showing a better error detection ability.

Keywords

Mutation Testing, Test Case Generation, Fitness Function, Mutation Score

一种结合数据流约束的变异测试用例生成方法

杜小智*,强倩瑶,黄琳婷

西安交通大学软件学院,陕西西安

收稿日期:2018年4月6日;录用日期:2018年4月17日;发布日期:2018年4月24日

*通讯作者。

杜小智 等

变异测试是一种高效的软件测试方法。作为发现故障和发现测试用例缺陷的一种手段,测试用例生成方法至关重要。如果测试用例能有效地生成并获得较高的变异评分,则有助于变异测试的广泛应用。目前大部分变异测试用例生成方法都是通过分析控制流图,仅使用语句间的控制流约束指导用例的生成,而未考虑语句间数据流约束的影响。本文提出一种结合数据流约束的变异测试用例生成方法,首先,将控制流约束和数据流约束二者结合对适应度函数进行建模;其次,将该模型应用于遗传算法指导测试用例的进化和选择。实验表明,与HGA 相比,本方法在生成同样规模的测试集时平均迭代次数减少了60.5%;并且生成的测试用例获得的变异评分比随机方法平均高出了27.9%,表现出了更优的错误检测能力。

关键词

变异测试,测试用例生成,适应度函数,变异评分

Copyright ? 2018 by authors and Hans Publishers Inc.

This work is licensed under the Creative Commons Attribution International License (CC BY). https://www.wendangku.net/doc/d83076877.html,/licenses/by/4.0/

1. 引言

软件测试对软件产品质量和生产率的提高有着举足轻重的作用。变异测试是一种行之有效的软件测试方法,可用于测试充分性的评价和测试用例的增强。变异测试基于熟练程序员假设和耦合效应[1],通过使用变异算子系统地模拟程序中可能存在的各种缺陷产生变异体,然后求解能够杀死这些变异体的测试集[2]。变异测试主要应用于单元测试,也有学者将其应用于集成测试、面向对象测试、面向方面测试等方面[3] [4] [5] [6] [7]。一般情况下,根据变异评分衡量测试集发现程序变异体中错误的能力。一个能将变异体M 与源程序P 区分出来的测试用例必须满足三个条件[8]:可达性(必须存在一条从M 的开始语句到变异语句的执行路径);状态感染性(通过执行变异语句,M 和P 的状态彼此不同);状态传播性(通过执行变异语句,M 和P 的状态差异一直传播到变异体执行结束)。

如何生成测试用例在变异测试中至关重要,现有的变异测试用例生成方法主要有CBT (Constraint-Based Test data generation ,基于约束的生成方法) [9]、DDR (Dynamic Domain Reduction test data generation ,动态域削减方法) [10]、DRD (Domain Reduction approach with Data dependence ,考虑数据依赖的域削减方法) [7]和GA (Generation Algorithm ,遗传算法生成变异测试用例的方法) [11]。CBT 采用控制流分析变异体的可行性条件建立约束关系,是一种高效的测试用例生成方法,但CBT 难以处理对输入变量有依赖的判断条件和表达式;DDR 根据控制流动态地求解路径约束,改进了对输入变量有依赖的判断条件和表达式的处理,弥补了CBT 存在的缺点,但未考虑数据依赖;DRD 将数据依赖考虑到约束系统中并使用DDR 进行求解,但未权衡加入的数据依赖结点的重要性;GA 基于控制流测试充分性准则构建适应度函数模型,考察多种程序结构进行测试,但这种测试不考虑数据流约束,往往是不充分的,且生成测试用例的效率低。

为了更高效地生成变异测试用例,本文提出了一种结合数据流约束的变异测试用例生成方法。此方法充分考虑数据流约束并且权衡所加入数据依赖结点的重要性,首先,结合控制流约束和数据流约束建立合适的适应度函数模型;然后,将测试用例求解问题转换为适应度函数优化问题,基于遗传算法所具备的全局优化功能进行求解,使用个体适应度指导测试用例的进化和选择;最终得到目标测试用例。

Open Access

杜小智 等

2. 结合数据流约束的变异测试用例生成方法

本文的方法关注变异语句中变量的定义和使用,考虑变异语句所依赖的数据流约束,使用了一种新的适应度函数模型,逐步引导测试用例过程。首先,将控制流约束和数据流约束结合起来,提供了充分的代码覆盖,共同构建适应度函数模型;然后,使用遗传算法,根据遗传算法“优胜劣汰”的进化特点,依据测试用例的适应度自适应调整搜索方向;最终高效地生成变异测试用例。图1为结和数据流约束的变异测试用例生成方法。如图1所示,本方法由适应度函数建模和测试用例生成两大部分组成。

适应度函数建模部分开始于被测试程序,分别根据程序控制流图CFG (Control Flow Graph)和程序数据流图DFG (Data Flow Graph)计算得到控制流约束函数()_cf constraint X 和数据流约束函数()_df constraint X ,然

Figure 1. The method flow chart 图1. 方法流程图

杜小智 等

后组合二者构造出适应度函数()fitness X ;测试用例生成部分将用例生成问题转化成了适应度函数()fitness X 的优化问题,使用遗传算法优化适应度函数,通过计算每一个测试用例的适应度值,评估用例的优劣,指导对用例的搜索朝着最大化目标分支覆盖的方向,逐渐将测试集收敛至搜索空间的最优点,直至得到最终测试用例。

2.1. 适应度函数建模

适应度函数是基于搜索的方法的核心,它引导测试用例生成过程朝着搜索空间中适应度最好的领域进行,直接决定着搜索结果的好坏。本文的方法改变以往采用控制流约束建立适应度函数模型的思想,将控制流约束和数据流约束结合起来,采用分支函数叠加法建立适应度函数模型,根据个体适应度值指导评价测试用例并指导其选择和进化。适应度函数建模部分如图2所示,分3个主要步骤完成:1) 构建控制流约束函数()_cf constraint X ;2) 构建数据流约束函数()_df constraint X ;3) 建立适应度函数模型()fitness X 。

1) 构建控制流约束函数()_cf constraint X

控制流约束用于满足可达性条件,其计算依赖于被测程序的CFG 和内部结构。首先分析CFG 上变异语句的逼近水平,然后根据变异语句所在分支的谓词表达式计算分支距离,最后将逼近水平和分支距离线性叠加构造出控制流约束函数。

逼近水平用来度量测试用例如何覆盖目标变异语句,表示测试用例X 的执行路径与目标变异语句的偏离程度,记作()appr X ,它是根据未被执行的目标变异语句的控制依赖结点的数量计算的。举例说明,程序1是示例程序,图3是程序1的控制流图。假定语句4是程序1的目标测试语句,给出三组不同的输入数据:()11,2,3i =、()25,6,6i =、()310,3,10i =,相应的穿越路径为(){}11,2,5,6,7P i =、(){}21,2,3,5,6,7P i =和(){}31,2,3,5,6,7P i =。在这三组不同的测试数据中,2i 和3i 都要执行条件语句3,而1i 则在执行完条件语句2之后偏离目标语句4所在的分支,所以测试数据2i 和3i 比测试数据1i 的适应度要好。因此,分别定义1i 、

2i 和3i 的逼近水平为:()11appr i =、()20appr i =和()30appr i =。

分支距离用来评估目标分支被选择的远近程度,表示使目标分支条件为真或假的满足程度,记作

()dist X ,它是根据目标变异语句所在分支的条件语句计算的,具体计算表达式如表1所示[12]。()

dist X 越小,测试用例的执行路径对目标变异语句的覆盖程度越好。

控制流约束函数记为()_cf constraint X ,定义()_cf constraint X 为()appr X 和()()normalize dist X 的和,如式(1)所示:

()()()_cf constraint appr X normalize dist X =+ (1)

其中:()()normalize dist X 为标准化分支距离,如式(2)所示:

Figure 2. Mapping of fitness function modeling 图2. 适应度函数建模示意图

杜小智 等

Figure 3. The control flow graph of program 1 图3. 程序1的控制流图

Program 1. Sample program 程序1. 示例程序

Table 1. Branch distance calculation table 表1. 分支距离计算表

分支条件 真分支 假分支 a == b 0 abs (a ? b)

a !=

b 0 1 a < b 0 abs (a ? b) + k a <= b 0 Abs (a ? b) a > b 0 abs (a ? b) + k a >= b 0

abs (a ? b) a || b min(dist(a),dist(b)) dist (a) + dist (b) a && b

dist(a) + dist(b)

min(dist(a),dist(b))

杜小智 等

()()()

1 1.01

dist X normalize dist X ?=? (2)

控制流约束函数()_cf constraint X 的值越小,说明测试用例越满足必要性条件;反之,若控制流约束函数()_cf constraint X 的值越大,则说明测试用例越偏离必要性条件。

2) 构建数据流约束函数()_df constraint X

数据流约束用于表示测试用例的执行路径对目标变量定义——使用路径的覆盖程度,由变异语句中变量的定义——使用路径覆盖定义。注意,构造DFG 时,CFG 中的结点、边和所有路径都在DFG 中保留,CFG 中的结点对应于DFG 中的基本块。计算数据流约束时,首先由DFG 计算得到变异语句变量的定义表和使用表,然后将定义表和使用表信息合并得到定义——使用表,最后根据定义——使用表计算数据流约束。

数据流约束函数记为()_df constraint X ,定义其计算如式(3)所示:

()()

1

_1M

i def use X df constraint X def use

=?=?

?∑ (3)

其中:()def use X ?为测试用例的执行路径覆盖目标变量的定义——使用对数量;M 为测试用例集的规模。若数据流约束函数()_df constraint X 的值越小,即

()

1

M

i def use X def use

=??∑的值越大,则测试用例的执行路径

提供的代码覆盖越充分;反之,若数据流约束函数()_df constraint X 的值越大,即()

1

M

i def use X def use

=??∑的值越

小,测试用例的执行路径提供的代码覆盖越不充分。

3) 建立适应度函数模型()fitness X

建立合适的适应度函数模型是本文方法的关键,适应度作为测试用例优劣的衡量标准,指导测试集的进化和测试用例的选择。适应度函数记为()fitness X ,将其定义为控制流约束函数和数据流约束函数的线性叠加,如式(4)所示:

()()()__fitness X a cf constraint X b df constraint X =?+? (4)

其中:a 、b 为控制流约束函数和数据流约束函数的权重系数,其定义域均为(]0,1且1a b +=

。 X 包含全部测试用例是个体适应度函数()0fitness X =的充要条件。由于控制流约束函数

()_cf constraint X 越小,测试用例越满足可达性条件,数据流约束函数()_df constraint X 越小,测试用

例的执行路径提供的代码覆盖越充分。所以,个体适应度函数()fitness X 越小,则测试用例的执行路径

与目标变异语句间的距离越小,且对变异语句中变量的定义——使用路径覆盖越充分。因此,可将测试用例生成问题可转换为适应度函数()fitness X 的最小化问题。

2.2. 测试用例生成

为了提高生成测试用例的效率,本文方法将测试用例生成问题转换成了适应度函数()fitness X 的最小化问题,并使用遗传算法解决。根据适应度值动态调整测试用例的生成过程,提高其质量并且减少测试冗余。

测试用例生成过程开始于随机法生成的初始用例集,然后按照适应度函数()fitness X 计算初始用例集中各用例的适应度,评估用例的优劣;种群进化时,选择出优良个体来参与交叉、变异操作得到新一代用例集,最后判断终止条件是否满足,若满足,则选择出目标用例,若不满足,则依据个体适应度逐渐将用例集收敛至搜索空间的最优点,不断进化,直至生成最优测试用例。具体流程如图4所示。

杜小智等

图4. 测试用例生成流程图

杜小智 等

本方法生成测试用例的过程,其实是适应度函数的优化过程。下面简单介绍使用遗传算法实现该方法的几个重要操作的具体操作:

1) 初始化测试用例集:为保证测试用例集的多样性,采用随机方法生成规模为M 的初始测试用例集; 2) 编码形式:由于二进制编码易于表达、操作简单的优点,本方法采用二进制编码形式对原始个体进行编码;

3) 计算测试用例适应度:根据()fitness X 计算测试用例的适应度以指导测试集的进化;

4) 实施选择操作:有多种不同的选择策略,本方法采用轮盘选择法,将一个圆分为种群规模大小个扇形区间,区间大小为测试用例的相对适应度值。轮盘选择法保证了各用例被选中的概率与适应度值成正比,与本文适应度函数优化的思想相一致,根据测试用例的相对适应度,将父代的优良测试用例复制到子代;

5) 实施交叉操作:此操作的主要目的就是在解空间中搜索不同的可行解。本方法以固定的交叉概率

c P 为参照,在测试用例集中随机选择两个用例,对其实施动态概率的随机点交叉操作;

6) 实施变异操作:变异操作用于补偿基因丢失情况,保持个体多样性。本方法以固定的变异概率m

P 为参照,对用例实施动态概率的变异操作;

7) 终止条件:当迭代次数达到预定终止代数或用例适应度达到预定值时算法终止。

3. 实验分析

为了实际证明本文方法的可行性,分别从测试用例的生成效率和检错能力两个方面进行了实验。 1) 测试用例生成效率实验结果

以三角形形状判定程序为例,对变异生成的4个一阶变异体进行了实验,该程序以输入的三个整数为三角形的三条边,输出三角形的形状。根据经验值和实验比较,遗传算法交叉概率c P 选用0.7,变异概率m P 选用0.05,最大迭代次数选用100,种群规模M 选择20,对每个变异体进行10次实验。实验结果如表2所示。

从表2可以看出,对于使用ROR 变异算子生成的2个变异体,当生成数量优于HGA 方法的用例时,本文的方法在平均迭代次数上减少了56.1%;对于使用AORB 变异算子生成的2个变异体,当生成与HGA 方法数量相等的测试用例时,本文的方法使用的平均迭代次数是HGA 方法的35%,减少了65%。图5为表2中两种方法生成测试用例的平均迭代次数对比图,明显显示处了本方法在迭代次数上的优势,所以本的方法表现出了较高的测试用例生成效率。

2) 测试用例检错能力实验结果

选取参数个数和语句复杂度不同的程序,分别使用随机方法、依据路径覆盖的混合遗传算法HGA 方法和本文方法生成一定数量的测试用例进行实验。程序Mid 是一个求3个整数中间值的程序,该程序结构简单,主要用来测试本文方法在简单结构程序中的应用;程序TriTyp 是三角形形状判定程序,其特点是条件语句复杂,主要用来评估本文方法在复杂语句程序测试中的应用;程序Quad 求解一元二次方程的

Table 2. Experimental results of test case generation efficiency 表2. 测试用例生成效率实验结果

变异算子

实验次数 平均迭代次数 生成的测试用例数 本文方法平均迭代次数占

HGA 的比率

HGA [14]

本文方法 HGA 本文方法

1. ROR [13] (“==”变异为“>=”) 10 65 38 8 8 58.5%

2. ROR (“<=”变异为“<”) 10 17 5 9 10 29.4%

3. AORB [13] (“+”变异为“*”) 10 5 1 10 10 20%

4. AORB (“+”变异为“?”)

10

2

1

10

10

50%

杜小智 等

根,程序Sample 判断两数组内数据与目标数据的相同程度,NextDate 求解输入日期的下一天,用来测试本文方法在复杂路径程序测试中的应用。实验结果如表3所示。

如表3,计算和比较变异评分可知,对程序Mid 使用HGA 和本方法生成变异测试用例得到的变异评分相同,相比于随机方法高出了9.5%;对程序TriTyp 使用本方法得到的变异评分比HGA 方法高3.5%,比随机方法高33.3%;对于程序Quad 、Sample 和NextDate ,使用本文方法得到的变异评分比HGA 方法分别高出了5.1%、4.3%和8.5%,相比于随机方法有较为明显的提高,分别高出了41%、26.1%和29.6%。

三种方法所生成用例分别杀死的变异体数量对比如图6所示。从图中可以看出,使用本方法生成的

Table 3. Experimental results of test case error detection ability 表3. 测试用例检错能力实验结果

被测程序

变异算子

变异体数量

被杀死变异体数量

本文方法与其他方法杀死 变异体个数差值比 随机方法

HGA 本文方法 随机方法 HGA Mid ROR 21 16 18 18 9.5% 0% TriTyp AORB 、ROR

57 32 49 51 33.3% 3.5% Quad ROR 39 20 34 36 41% 5.1% Sample AORS, ROR 23 14 19 20 26.1% 4.3% NextDate

AORBCOR, COD, ROR

71

50

65

71

29.6%

8.5%

Figure 5. Average iteration number contrast 图5. 平均迭代次数对比

Figure 6. Comparison of the number of killed mutants 图6. 被杀死变异体数量对比

杜小智等

测试用例杀死的变异体数量最多,比随机方法和HGA的变异体杀死数量都有一定程度的提高,表现出了更强的错误检测能力。

4. 结束语

本文提出了一种结合数据流约束的变异测试用例生成方法,充分考虑变异语句中变量数据依赖的影响。首先对被测试程序的预处理分析程序结构和语句关系,通过变异语句分支路径执行条件的组合和非冲突等价类划分量化控制流约束;然后,使用不同测试用例执行路径中变异语句所涉及变量的定义——使用路径覆盖构造数据流约束关系,结合控制流约束和数据流约束共同建立合适的适应度函数模型;最后,基于遗传算法种群进化特征和优越的全局搜索能力,依据测试用例个体适应度自适应调整测试种群的搜索方向,生成测试用例。本文通过实验证明了本方法生成测试用例的效性,以及与其他方法之间的对比实验更进一步验证了本方法的变异体检测能力。

本文的方法主要应用于软件单元测试中一阶变异测试用例的生成,将本文方法应用于自动生成杀死高阶变异体的测试用例还有待进一步的研究。满足多变异语句的分支覆盖条件,且在对变异语句中变量的定义——使用路径覆盖尽可能多的条件下,充分考虑变异语句之间的依赖关系将可能生成同时杀死多个变异体的测试用例。

基金项目

国家自然科学基金资助项目(11575138);陕西省工业公关项目资助项目(2013K06-20);中央高校基本科研业务费专项基金资助项目(XJJ2015122);轨道交通工程信息化国家重点实验室开放课题项目(SKLK16-08)。

参考文献

[1]Demillo, R.A., Lipton, R.J. and Sayward, F.G. (1978) Hints on Test Data Selection: Help for the Practicing Program-

mer. Computer, 11, 34-41.https://https://www.wendangku.net/doc/d83076877.html,/10.1109/C-M.1978.218136

[2]单锦辉, 高友峰, 刘明浩, 等. 一种新的变异测试数据自动生成方法[J]. 计算机学报, 2008, 31(6): 1025-1034.

[3]Fraser, G. and Zeller, A. (2012) Mutation-Driven Generation of Unit Tests and Oracles. IEEE Transactions on Soft-

ware Engineering, 38, 278-292.https://https://www.wendangku.net/doc/d83076877.html,/10.1109/TSE.2011.93

[4]Fraser, G. and Arcuri, A. (2014) Achieving Scalable Mutation-Based Generation of Whole Test Suites.Empirical

Software Engineering, 20, 783-812.https://https://www.wendangku.net/doc/d83076877.html,/10.1007/s10664-013-9299-z

[5]Delamaro, M.E., Maldonado, J.C. and Mathur, A.P. (2001)\ Interface Mutation: An Approach for Integration Testing.

IEEE Transactions on Software Engineering, 27, 228-247.https://https://www.wendangku.net/doc/d83076877.html,/10.1109/32.910859

[6]Delgado-Pérez, P., Segura, S. and Medina-Bulo, I. (2017) Assessment of C++ Object-Oriented Mutation Operators: A

Selective Mutation Approach. Software Testing Verification & Reliability, e1630.https://https://www.wendangku.net/doc/d83076877.html,/10.1002/stvr.1630

[7]Bhatia, V. and Singhal, A. (2016) Class/Aspect Level Mutation Operators in Aspect-Oriented Software Systems. 2016

1st India International Conference on Information Processing (IICIP), Delhi, 12-14 August 2016, 1-7.

https://https://www.wendangku.net/doc/d83076877.html,/10.1109/IICIP.2016.7975397

[8]刘新忠, 徐高潮, 胡亮, 等. 一种基于约束的变异测试数据生成方法[J]. 计算机研究与发展, 2011, 48(4):

617-626.

[9]DeMillo, R.A. and Offutt, A.J. (1991) Constraint-Based Automatic Test Data Generation. IEEE Transactions on Soft-

ware Engineering, 17, 900-910.https://https://www.wendangku.net/doc/d83076877.html,/10.1109/32.92910

[10]Offutt, A.J., Jin, Z. and Pan, J. (1999) The Dynamic Domain Reduction Procedure for Test Data Generation. Software:

Practice and Experience, 29, 167-193.

https://https://www.wendangku.net/doc/d83076877.html,/10.1002/(SICI)1097-024X(199902)29:2<167::AID-SPE225>3.0.CO;2-V

[11]赵性颂, 顾斌. 遗传算法生成变异测试用例[J]. 计算机应用, 2009, 29( 6): 262-264.

[12]Souza, F.C.M., Papadakis, M. and Traon, Y.L. (2016) Strong Mutation-Based Test Data Generation Using Hill Climb-

ing. International Workshop on Search-Based Software Testing. ACM, Austin, 14-22 May 2016, 45-54.

https://https://www.wendangku.net/doc/d83076877.html,/10.1145/2897010.2897012

杜小智等[13]Offutt, A.J. and Pan, J. (2015) Automatically Detecting Equivalent Mutants and Infeasible Paths. Software Testing Ve-

rification & Reliability, 7, 165-192.

https://https://www.wendangku.net/doc/d83076877.html,/10.1002/(SICI)1099-1689(199709)7:3<165::AID-STVR143>3.0.CO;2-U

[14]Khan, R., Amjad, M. and Srivastava, A.K. (2017) Generation of Automatic Test Cases with Mutation Analysis and

Hybrid Genetic Algorithm. 2017 3rd International Conference on Computational Intelligence & Communication Technology (CICT),Ghaziabad, 9-10 February 2017, 1-4. https://https://www.wendangku.net/doc/d83076877.html,/10.1109/CIACT.2017.7977265

知网检索的两种方式:

1. 打开知网页面https://www.wendangku.net/doc/d83076877.html,/kns/brief/result.aspx?dbPrefix=WWJD

下拉列表框选择:[ISSN],输入期刊ISSN:2325-2286,即可查询

2. 打开知网首页https://www.wendangku.net/doc/d83076877.html,/

左侧“国际文献总库”进入,输入文章标题,即可查询

投稿请点击:https://www.wendangku.net/doc/d83076877.html,/Submission.aspx

期刊邮箱:sea@https://www.wendangku.net/doc/d83076877.html,

组合测试模型方法

组合测试模型方法 1 基本信息 好的测试都是基于模型的。 由于软件输入空间的无限性,使得测试人员不可能遍历软件的所有输入。其实,遍历软件的所有输入一般也是没有必要的。优秀的测试设计,往往能够从繁多的测试用例中挑选出有效的用例,用尽可能少的测试输入,覆盖尽可能多的软件需求,这离不开合适的测试模型的支持。 所谓测试模型(Test Model),是测试和测试对象的基本特征、基本关系的抽象。它是测试理论家们根据大量的实际测试应用总结出来的,能够代表某一类应用的内在规律,并对应于适合此类应用的一组测试框架性的东西。 2 组合测试模型 一种相对简单,并且应用十分广泛的模型是组合模型,具有如下特点: 1)、输出是由输入变量之间的逻辑关系决定的。 2)、输出结果不依赖于变量的先后顺序。这一特点是我们理解组合模型的关键。 对于符合组合模型的输入而言,测试用例设计时要注意: 1)、考虑输入变量的不同取值以及这些取值之间的不同组合。 2)、从应用系统中抽象出正确的逻辑表达式,不要遗漏任何一种逻辑组合关系。 在组合模型中最常用的两种测试技术分别为正交设计技术和组合覆盖测试技术。 2.1 正交设计技术介绍: 正交实验设计方法:依据Galois理论,从大量的(实验)数据(测试例)中挑选适量的、有代表性的点(例),从而合理地安排实验(测试)的一种科学实验设计方法。 采用正交设计法设计测试用例主要包括以下步骤: 确定影响因素。这里的影响因素指对软件运行结果有影响的软件运行条件,一般情况下是指软件的输入以及其它软件运行的环境。这些因素可以通过对软件需求规格、软件概要设计、软件详细设计等文档分析而获得。 确定因素的取值范围或集合。因素的取值范围指软件输入的取值范围或集合以及可用的硬件资源。同样,要通过分析软件需求规格等文档获取这些信息。 确定每个因素的水平。根据因素的取值范围或集合,采用等价类划分、边界值分析等软件测试技术,在每个因素的取值范围或集合里挑选出有效等价类、无效等价类、正好等于、刚刚大于或刚刚小于边界值等有代表性的测试点。例如:对于用下拉框进行输入的字段,下拉框的所有取值都构成了该因素的水平集合。 选择正交表。根据确定的因素和水平,选择合适的正交表。如果没有合适的正交表可用或需要的测试用例个数太多,则要对因素和水平进行调整。 设计测试用例。 2.2 组合覆盖测试技术介绍:

软件测试用例实例非常详细汇总

1、兼容性测试 在大多数生产环境中,客户机工作站、网络连接和数据库服务器的具体硬件规格会有所不同。客户机工作站可能会安装不同的软件例如,应用程序、驱动程序等而且在任何时候,都可能运行许多不同的软件组合,从而占用不同的资源。测试目的 配置说明操作系统系统软件外设应用软件结果 服务器Window2000(S) WindowXp Window2000(P) Window2003 用例编号TestCase_LinkWorks_WorkEvaluate 项目名称LinkWorks 模块名称WorkEvaluate模块 项目承担部门研发中心-质量管理部 用例作者 完成日期2005-5-27 本文档使用部门质量管理部 评审负责人 审核日期 批准日期 注:本文档由测试组提交,审核由测试组负责人签字,由项目负责人批准。历史版本: 版本/状态作者参与者起止日期备注

1.1. 疲劳强度测试用例 强度测试也是性能测试是的一种,实施和执行此类测试的目的是找出因资源不足或资源争用而导致的错误。如果内存或磁盘空间不足,测试对象就可能会表现出一些在正常条件下并不明显的缺陷。而其他缺陷则可能由于争用共享资源(如数据库锁或网络带宽)而造成的。强度测试还可用于确定测试对象能够处理的最大工作量。 测试目的 测试说明 前提条件连续运行8小时,设置添加10用户并发 功能1 2小时 4小时 6小时 8小时 功能1 2小时 4小时 6小时 8小时 一、功能测试用例 此功能测试用例对测试对象的功能测试应侧重于所有可直接追踪到用例或业务功能和业务规则的测试需求。这种测试的目标是核实数据的接受、处理和检索是否正确,以及业务规则的实施是否恰当。主要测试技术方法为用户通过GUI(图形用户界面)与应用程序交互,对交互的输出或接受进行分析,以此来核实需求功能与实现功能是否一致。

软件测试用例实例非常详细

1、兼容性测试在大多数生产环境中,客户机工作站、网络连接和数据库服务器的具体硬件驱动程客户机工作站可能会安装不同的软件例如,应用程序、规格会有所不同。序等而且在任何时候,都可能运行许多不同的软件组合,从而占用不同的资源。测试目的 操作系统系统软件外设应用软件结果配置说明 Window2000(S) 服务器 WindowXp Window2000(P) Window2003 TestCase_LinkWorks_WorkEvaluate 用例编号LinkWorks项目名称WorkEvaluate模块模块名称研发中心-质量管理部项目承担部门 用例作者2005-5-27 完成日期质量管理部本文档使用部门评审负责人审核日期 批准日期 注:本文档由测试组提交,审核由测试组负责人签字,由项目负责人批准。 历史版本: 备注起止日期参与者作者状态/版本 V1.1 1.1. 疲劳强度测试用例

强度测试也是性能测试是的一种,实施和执行此类测试的目的是找出因资源不足或资源争用而导致的错误。如果内存或磁盘空间不足,测试对象就可能会表现出一些在正常条件下并不明显的缺陷。而其他缺陷则可能由于争用共享资源(如数据库锁或网络带宽)而造成的。强度测试还可用于确定测试对象能够处理的最大工作量。 测试目的 测试说明 用户并发设置添加10连续运行8前提条件小时,输出/响应输入测试需求/动作是否正常运行1 2小时功能4小时6小时8 小时 2小时功能1 4小时6小时 小时8 一、功能测试用例 此功能测试用例对测试对象的功能测试应侧重于所有可直接追踪到用例或业务功能和业务规则的测试需求。这种测试的目标是核实数据的接受、处理和检索是否正确,以及业务规则的实施是否恰当。主要测试技术方法为用户通过GUI(图形用户界面)与应用程序交互,对交互的输出或接受进行分析,以此来核实需求功能与实现功能是否一致。

软件测试用例分析-习题完美整合版汇总

场景分析法 一、以答题业务为例: 1.答对题目增加题目积分,积分达到设定值时奖励一个礼包; 2.取题规则为随机不重复; 3.答错题目后答新题.

1.确定基本流与备选流 基本流: 步骤1. 开始答题 步骤2. 判断是否存在有效题目,存在有效题目,处理:提供题目及备选答案 步骤3. 用户答题并答对题目,增加用户相应积分。 步骤4. 判断积分是否达到设定值,达到,获取一个礼包,流程结束。 备选流1: 不存在有效题目 基本流步骤2时,题库不存在未答题目,处理:给予无有效题目提示,流程结束。备选流2: 答错题目 基本流步骤3时,答错题目,处理:提示用户答错题目,回到基本流步骤2 备选流3:答题后积分达不到设定值 基本流步骤4时,答对题后积分仍达不到设定值,处理:回到基本流步骤2 2.确定以下用例场景: 3.通过从确定执行用例场景所需的数据元素入手构建矩阵

4.设计数据,把数据填入上面的用例表中 二、下图所示是ATM例子的流程示意图。

2.场景设计:下表所示是生成的场景。 3.用例设计

4.测试用例表

三、用户进入一个在线购物网站进行购物,选购物品后,进行在线购买,这时需要使用账号登录,登录成功后,进行付钱交易,交易成功后,生成订购单,完成整个购物过程。 第一步:确定基本流和备选流 基本流:登录在线网站→选择物品→登录账号→付款→生成订单; 备选流1:账户不存在; 备选流2:账户密码错误; 备选流3:用户账户余额不足; 备选流4:用户账户没钱。 第二步:根据基本流和备选流确定场景 场景1成功购物:备选流; 场景2账号不存在:基本流,备选流1; 场景3账号密码错误:基本流,备选流2; 场景4账户余额不足:基本流,备选流3; 场景5账户没钱:基本流,备选流4。

测试用例八大设计方法和实例

测试用例设计方法 1等价类划分 1.1 理论知识 等价类划分是一种典型的黑盒测试方法。这一方法完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。 等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭示程序中的错误都是等效的。 等价类合理地假设:某个等价类的代表值,与该等价类的其他值,对于测试来说是等价的。 因此,可以把全部的输入数据划分成若干的等价类,在每一个等价类中取一个数据来进行测试。这样就能以较少的具有代表性的数据进行测试,而取得较好的测试效果。 等价类划分是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例.该方法是一种重要的,常用的黑盒测试用例设计方法. 1) 分类: 划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类. 有效等价类:是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合.利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能. 无效等价类:与有效等价类的定义恰巧相反. 设计测试用例时,要同时考虑这两种等价类.因为,软件不仅要能接收合理的数据,也要能经受意外的考验.这样的测试才能确保软件具有更高的可靠性. 2)划分等价类的方法: 下面给出六条确定等价类的原则: ①在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类. ②在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效

测试用例实例—常见功能测试点

测试用例实例--常见功能测试点 笔者在网上看到了一篇文章,个人认为此文对于“软件常用功能测试点”总结的很好,特此摘录下来和大家一起分享。 1. 登陆、添加、删除、查询模块是我们经常遇到的,这些模块的测试点该如何考虑 1)登陆 ①用户名和密码都符合要求(格式上的要求) ②用户名和密码都不符合要求(格式上的要求) ③用户名符合要求,密码不符合要求(格式上的要求) ④密码符合要求,用户名不符合要求(格式上的要求) ⑤用户名或密码为空 ⑥数据库中不存在的用户名,不存在的密码 ⑦数据库中存在的用户名,错误的密码 ⑧数据库中不存在的用户名,存在的密码 ⑨输入的数据前存在空格 ⑩输入正确的用户名密码以后按[enter]是否能登陆 ------------------------------------------------------------------------------------------------------ 2) 添加 ①要添加的数据项均合理,检查数据库中是否添加了相应的数据 ②留出一个必填数据为空

③按照边界值等价类设计测试用例的原则设计其他输入项的测试用例 ④不符合要求的地方要有错误提示 ⑤是否支持table键 ⑥按enter是否能保存 ⑦若提示不能保存,也要察看数据库里是否多了一条数据 ------------------------------------------------------------------------------------------------------ 3) 删除 ①删除一个数据库中存在的数据,然后查看数据库中是否删除 ②删除一个数据库中并不存在的数据,看是否有错误提示,并且数据库中没有数据被删除 ③输入一个格式错误的数据,看是否有错误提示,并且数据库中没有数据被删除。 ④输入的正确数据前加空格,看是否能正确删除数据 ⑤什么也不输入 ⑥是否支持table键 ⑦是否支持enter键 ------------------------------------------------------------------------------------------------------ 4)查询 精确查询:

软件测试过程中的工具使用共9页文档

软件测试过程中的工具使用软件测试过程中的工具使用 作者:easylife来源:不详 摘要:软件测试是保证软件质量的重要手段,它在整个软件开发过程中 占据了将近一半的时间和资源。在软件测试过程中合理的引入测试工具,能够加快测试进度,提高测试质量,实现更快、更好的开发软件产品的目标。本文介绍了覆盖软件测试各个阶段的测试工具,说明了每一类工具所应用的测试阶段,以及它能发挥的作用。 Abstract:Software test is one measure to insure the quality of software,it costs half of time and resource in the whole process of development.If test tools can be used in the process,it would to improve the speed of test and the quality of test,It's probable to develop software rapidly and to produce high quality.In this document it introduces some software test tools for the different of test moment,it introduce the time for every kind of tools,but the function of the test tool. 关键字:软件测试工具;测试设计;静态分析;单元测试;功能测试; 性能测试;测试过程管理; Keywords:software test tool;test design;static analysis; unit test;function test;performance test;test process management; 1、引言最近几年,软件测试在国内越来越受到重视,因为大家逐渐认识到了软件测试对于保证软件质量的重要性。随着对软件测试重视的提高,国内软件测试技术的发展也很快,逐渐从过去手工作坊式的测试向测试工程化的方向发展。 要真正实现软件测试的工程化,其基础之一就是要有一大批支持软件测 试工程化的工具。因此,软件测试工具对于实现软件测试的工程化来说至关重要。本文就从如何进一步提高软件测试质量和效率的角度出发,讨论测试工具在软件测试过程中的应用。 2、为什么要引入测试工具在测试过程中引入测试工具能给我们带来以下的好处。

软件测试用例参考文件

一、功能测试 1、对话框测试输入进行测试。包括中文字符、英文字符、数字字符、特殊字符、及几种字符的组合。 2、对界面可操作按钮进行测试。包括【新增(N)】【保存(S)】【修改(M)】【查询(A)】【打印(P)】【退出(X)】。同时需要对鼠标右键的菜单进行测试。 3、数据保存测试。将1 和2 进行组合。 4、必要条件控制测试。在做了3 时将必要条件(如:a、编号、姓名不可为空b、编号、姓名不可重复)控制测试联合起来。 二、图形界面测试 1.窗体是否能够基于相关的输入或菜单命令适当的打开 2.窗体是否能够改变大小、移动和滚动 3.窗体的数据是否能够利用鼠标、功能键、方向箭头和键盘操作 4.当窗体被覆盖并重新调用后,窗体是否能够正确再生 5.窗体相关的功能是否可以操作 6.是否显示相关的下拉菜单、工具条、滚动条、对话框、按钮、图标和其他控制,既能正确显示又能调用 7.显示多窗体时,窗体名称是否能够正确表示 8.活动窗体是否能够被反显加亮 9.多用户联机时所有窗体是否能够实时更新 10.鼠标无规则点击时是否会产生无法预料的结果 11.窗体声音及提示是否符合既定编程规则 12.窗体是否能够被关闭 13.窗体控件的大小、对齐方向、颜色、背景等属性的设置值是否和程序设计规约相一致 14.窗体控件布局是否合理、美观 15.窗体控件TAB 顺序是否从左到右,从上到下 16.窗体焦点是否按照编程规范落在既定的控件上 17.窗体画面文字(全、半角、格式、拼写)是否正确 18.鼠标有多个形状时是否能够被窗体识别(如漏斗状时窗体不接受输入)

三、功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。常用的测试方法如下: 1.页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。 2.相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确。 3.检查按钮的功能是否正确:如update, cancel, delete, save 等功能是否正确。 4.字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度,会不会出错. 5.字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错. 6.标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,回车键.看系统处理是否正确. 7.中文字符处理: 在可以输入中文的系统输入中文,看会否出现乱码或出错. 8.检查带出信息的完整性: 在查看信息和update 信息时,查看所填写的信息是不是全部带出.,带出信息和添加的是否一致 9.信息重复: 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理. 10.检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按”delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除,看是否正确处理. 11.检查添加和修改是否一致: 检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型. 12.检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错.同时,也要注意,会不会报和自己重名的错. 13.重复提交表单:一条已经成功提交的纪录,back 后再提交,看看系统是否做了处理。 14.检查多次使用back 键的情况: 在有back 的地方,back,回到原来页面,再back,重复多次,看会否出错. 15.search 检查: 在有search 功能的地方输入系统存在和不存在的内容,看search 结果是否正确.如果可以输入多个search 条件,可以同时添加合理和不合理的条件,看系统处理是否

组合测试用例工具讲解

组合测试用例工具介绍 绿光 根据我自己使用的情况,给大家介绍两款组合用例测试工具,pict和allpairs。Pict和allpairs都是基于组合分析的测试用例用具,在测试某些功能时,我们会面对庞大测试用例组合情况,通过pict和allpairs工具可以减少我们的测试用例数,并且可以保持较高的测试覆盖率。 1.PICT 微软开发的工具PICT(Pairwise Independent Combinatorial Testing tool)类似AETG的方法选择候选测试用例,它是基于Pairswise算法程序的工具,可以有效地按照组合原理进行测试用例设计。 1.1 PICT参数文件格式 PICT模型文件,文件中至少包含参数定义。子模型定义及约束定义可选。如下所示:[parameter definitions] 参数定义格式:,…… [sub-model definitions] 子模型定义格式:{ ,… } @ N [constraint definitions] 规则约束:IF THEN 条件语句,此外在条件语句中支持:=、<>、>、>=、<、<=、LIKE、NOT、AND、OR……还可支持同类参数的互相比较。 下面我以川航后台的权限管理为例,简单讲解一下他们的利用。权限模块的例子选取有一定局限性,大家能明白这样子的工具方法就行,在以后的测试中,遇到适合情况能够方便使用。 如图:权限管理页面的页面元素和取值情况。页面共有25个模块功能,每个模块功能有0,1,2三种取值。如果我们要做到权限测试用例的全覆盖。那么我们需要设计3^25 = 847 288 609 443个用例去覆盖组合情况。然而实际中我们根本不可能做到全覆盖,时间和成本都不允许。

c语言单元测试用例全自动生成软件wings介绍

wings是一款用于单元测试测试用例驱动框架自动生成工具,简单来说这款工具主要是全自动生成单元测试驱动代码与测试数据。 下面我们尝试使用wings来完成单元测试框架与测试数据的自动生成。 首先准备好需要测试的C语言工程,本文以大型开源软件Mysql为例。 第一步:打开wings工具,选择被测工程的主要目录。 第二步:点击工程操作中的分析生成,对工程目录下的.c文件进行解析,保存为XML 的格式,生成的文件保存在工程目录下的FunXml与GlobalXml中,分别是函数信息与全局变量的信息,点击驱动文件结构图,即可看到对应文件的函数结构信息。

上图可以查看所有.c文件的驱动函数,以及函数所对应的参数信息与全局变量的信息。 第三步:点击功能操作驱动生成,完成项目的驱动框架自动生成,驱动文件保存在wings_projects下的Driver文件夹下。点击驱动文件,即可看到对应.c文件的驱动生成代码。 点击单个函数,可以高亮定位到函数所在位置,并且双击函数参数,可以定位到每个参数的赋值单元,查看每个参数的具体驱动赋值代码。 第四步:点击值功能操作的值生成按钮,则对应生成测试数据。

界面上显示为单个函数的测试数据,可依据需要修改测试次数,重新生成测试数据文件,也可依据需要修改特定的测试数据。 第五步:将驱动文件加载到所在工程目录,与源文件一起编译,即可运行。 如果想查看对应的函数信息与全局变量信息,则右键对应打开对应的Parameter Struture Description(函数信息结构体)与Global Parameter Struture Description(全局变量结构图)。 Parameter Struture Description(函数信息结构体):显示函数的名称,参数个数,参数类型以及复杂类型的展开形式。 Global Parameter Struture Description(全局变量结构图):显示全局变量的结构信息。 使用过程中注意事项: (1)编译源文件过程中,需要手动注释调源文件中的main函数,wings将自动生成调用驱动函数的主函数。 (2)遇到特殊类型的赋值或者系统变量的驱动构造,可自行添加模板赋值方式,添加之后,再次生成驱动文件即可。 例如:遇到FILEL类型的赋值,可在模板中添加对应的赋值方式。

基于程序规则说明的自动测试用例生成

收稿日期:2005211209 作者简介:金虎(1974-),男,2003级博士研究生,研究方向为计算机网络,网络安全,软件下载.文章编号: 049026756(2006)0420768205 基于程序规则说明的自动测试用例生成 金 虎2,李志蜀2,李 奇1 (1.四川师范大学软件重点实验室,成都610066; 2.四川大学计算机学院,成都610064; 3.成都信息工程学院计算机系,成都610041) 摘要:自动测试过程中,在特定测试标准下生成的测试用例的质量优劣,将极大地影响测试的 性能和结果.作者结合基于程序规则说明的两种测试方法———随机测试技术和决策表技术,利 用决策表形成完备的测试标准,保证随机生成的测试用例的充分性,完成测试用例的自动生成 过程.研究内容分为如下4个部分:(1)基于软件规则说明的自动测试技术分析;(2)对程序规 则说明生成决策表方法的测试标准;(3)结合随机测试数据生成和决策表技术对自动生成测试 用例进行分析,比随机生成测试用例方法有更好的效果. 关键词:规则说明;决策表;自动软件测试 中图分类号:TP393 文献标识码:A 软件测试是在特定条件和标准下对软件进行验证的行为.通过构造测试数据运行软件以找出软件中的缺陷和错误是种基本的测试方法.手工构造测试数据费时而且工作量大,因此自动测试技术受到广泛关注.自动测试通常包括3个部分[1]:(1)测试用例的自动生成;(2)使用测试用例对测试程序的执行;(3)将运行结果与测试预测比较得到测试结果评测.在基于程序规则说明的自动测试技术研究中,自动测试过程还没形成公认的标准,存在下述的问题:(1)测试标准的选择;(2)测试用例生成的充分性;(3)自动测试过程的设计.这些问题增加了自动测试过程实现的困难.没有确定的测试标准,就无法判定测试用例集的充分性,也就不能决定自动测试过程该何时结束. 针对上述问题,我们利用功能测试方法中的决策表技术帮助选择测试标准, 用以对测试用例充分性的图1 基于程序规则说明的软件测试过程Fig.1 S pecification 2based SW testing process 保证,并作为自动测试过程的结束条件. 1 基于软件规则说明的自动测试技术 测试是在特定的条件和标准下的一系列行为. 在基于程序规则说明的测试过程中,程序规则说明 是测试的基础,程序的实现和测试都根据规则说明. 基于程序规则说明的测试过程如图1所示. 基于程序规则说明的测试方法近来受到广泛的 关注,具有开放、灵活和易于过程控制等许多优点. 但传统程序规则说明的表示并不严密,甚至可以是 自然语言描述,难以实现自动测试过程.实际研究 中,常用有三种形式化的表示方法:基于模型的规则 2006年8月 第43卷第4期四川大学学报(自然科学版)Journal of Sichuan University (Natural Science Edition )Aug.2006Vol.43 No.4

用TestDirector生成测试用例

地址:北京市海淀区学院路号大唐电信测试空间楼 联系电话: 用生成地测试用例 用生成地测试用例有两种样式:和 中没有关于测试用例地目地以、该用例地前提条件等字段,因此可以在客户化时增加这些字段,由于客户化字段没有类型,因此,可以将用例地目地和前提条件等在描述字段中进行描述,注意事项等也可以在此描述,如果有测试数据地话,可以在描述字段中对测试数据进行描述,具体地测试数据以文本或方式保存,作为该测试用例地附件.文档收集自网络,仅用于个人学习 样式一: 用例名称: 启动客户端程序 路径: 主题: 服务程序 设计状态: 设计者: 创建日期: 用例类型: 描述: 目地: . 检查服务程序能否以设计地五种方式正确启动客户端程序 . 菜单启动 . 快捷键启动 . 鼠标双击启动 . 定时启动 . 隔时启动 前提条件: . 服务程序已经运行; . 客户端程序尚未运行; 估计开发时间: 执行状态: : : : 运行服务程序 : . 服务程序运行; . 服务程序在系统托盘中显示为图标; : : . 在服务程序图标上单击右键; . 在弹出地悬浮菜单中选择【启动在线升级程序】; : . 弹出悬浮菜单,包括【启动在线升级程序】、【启动定时服务】、【启动隔时服务】和【关闭服务程序】四个菜单项;文档收集自网络,仅用于个人学习 如果柜台系统需要更新,则弹出窗口提示是否更新,选择“”按钮则启动客户端程序进行更新,选择“”则关闭提示窗口;文档收集自网络,仅用于个人学习 如果柜台系统不需要更新,则弹出窗口提示不需要更新,点击“”按钮关闭提示窗口; 服务程序下载并生成文件到服务端程序地安装目录下地目录中;文档收集自网络,仅用于个人学习

软件测试经典案例

软件测试-测试用例的经典例子 一、等价类划分 问:某程序规定:"输入三个整数 a、 b、 c分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算… "。用等价类划分方法为该程序进行测试用例设计。(三角形问题的复杂之处在于输入与输出之间的关系比较复杂。) 解: 分析题目中给出和隐含的对输入条件的要求: (1)整数 (2)三个数 (3)非零数 (4)正数 (5)两边之和大于第三边 (6)等腰 (7)等边 如果 a、 b 、 c满足条件( 1 ) ~ ( 4 ),则输出下列四种情况之一: 1)如果不满足条件(5),则程序输出为 " 非三角形 " 。 2)如果三条边相等即满足条件(7),则程序输出为 " 等边三角形 " 。 3)如果只有两条边相等、即满足条件(6),则程序输出为 " 等腰三角形 " 。

4)如果三条边都不相等,则程序输出为 " 一般三角形 " 。列出等价类表并编号

覆盖有效等价类的测试用例: a b c覆盖等价类号码 3 4 5(1)--(7) 4 4 5(1)--(7),(8) 4 5 5(1)--(7),(9) 5 4 5(1)--(7),(10) 4 4 4(1)--(7),(11)覆盖无效等价类的测试用例: 二、边界值分析法 NextDate函数的边界值分析测试用例

在NextDate函数中,隐含规定了变量mouth和变量day的取值范围为1≤mouth≤12和1≤day≤31,并设定变量year的取值范围为 1912≤year≤2050 。

三、错误推测法 测试一个对线性表(比如数组)进行排序的程序,可推测列出以下几项需要特别测试的情况: I.输入的线性表为空表; II.表中只含有一个元素; III.输入表中所有元素已排好序; IV.输入表已按逆序排好; V.输入表中部分或全部元素相同。 四、因果图法 有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。其规格说明如下:若投入5角钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示〖零

软件测试用例实例(非常详细)汇总

软件测试用例实例(非常详细)汇总

1、兼容性测试 在大多数生产环境中,客户机工作站、网络连接和数据库服务器的具体硬件规格会有所不同。客户机工作站可能会安装不同的软件例如,应用程序、驱动程序等而且在任何时候,都可能运行许多不同的软件组合,从而占用不同的资源。 测试 目的 配置说明操作系 统 系统 软件 外设应用软件结果 服务器Windo w2000( S) Windo wXp Windo w2000( P) Windo w2003 用例编号TestCase_LinkWorks_W orkEvaluate 项目名称LinkWorks

1.1.

1.2. 疲劳强度测试用例 强度测试也是性能测试是的一种,实施和执行此类测试的目的是找出因资源不足或资源争用而导致的错误。如果内存或磁盘空间不足,测试对象就可能会表现出一些在正常条件下并不明显的缺陷。而其他缺陷则可能由于争用共享资源(如数据库锁或网络带宽)而造成的。强度测试还可用于确定测试对象能够处理的最大工作量。测试目的 测试说明 前提条件连续运行8小时,设置添加 10用户并发 测试需求输入/ 动作 输出/响应是否正常运行 功能1 2小时 4小时 6小时 8小时功能1 2小时 4小时 6小时

8小时 一、功能测试用例 此功能测试用例对测试对象的功能测试应侧重于所有可直接追踪到用例或业务功能和业务规则的测试需求。这种测试的目标是核实数据的接受、处理和检索是否正确,以及业务规则的实施是否恰当。主要测试技术方法为用户通过GUI (图形用户界面)与应用程序交互,对交互的输出或接受进行分析,以此来核实需求功能与实现功能是否一致。 用例标识LinkWorks_ WorkEvaluate _02 项目 名称 https://www.wendangku.net/doc/d83076877.html, 开发人员模块 名称 WorkEvaluate 用例参考工作考核系统界面设计

软件测试-学生管理系统软件测试用例

学生管理系统软件测试用例

测试用例 测试用例 软件测试是软件开发时期的最后一个阶段,也是软件质量和可靠性保证中至关重要的一个环节。软件测试的基本任务是通过在计算机上执行程序,暴露出程序潜在的错误,以便进行纠错,从而保证程序的可靠运行,降低软件的风险。 测试用例: 所谓测试用例,就是意发现错误为目的而精心设计的一组测试数据。测试一个程序,需要数量足够的一组测试用例,用数据词典的表示方法表示,可以写成:测试用例={输入数据+输出数据}这个是式子还表明,每一个完整的测试用例不仅包含有被测程序的输入数据,而且还包括用这组数据执行被测数据之后的预期的输出结果。每次测试,都要把实测的结果与期望结果做比较,若不相符,就表明程序可能存在错误。 白盒测试就是根据源代码进行测试的,用白盒测试涉及测试用例,有两种测试用例,有两种常用技术:逻辑覆盖法测试用例,基本路径法测试用例。 黑盒测试就是根据被测程序功能来进行测试,所以也称为功能测试。用黑盒法涉及测试用例,有四种常用技术;等价分类法,边界值分析法,决策表法、错误推测法和因果图法。 整个测试基于需求文档,看是否能满足需求文档中所有需求。黑盒测试要求测试者在测试时不能使用与被测系统内部结构相关的知识或经验,适用于对系统的功能进行测试。 黑盒测试 黑盒测试概念: 被称为功能测试或数据驱动测试。在测试时,把被测程序视为一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下进行。 采用黑盒测试的目的主要是在已知软件产品所应具有的功能的基础上,进行:(1)检查程序功能能否按需求规格说明书的规定正常使用,测试各个功能是否有遗漏,检测性能等特性要求是否满足。 (2)检测人机交互是否错误,检测数据结构或外部数据库访问是否错误,程序是否能适当地接收输入数据而产生正确的输出结果,并保持外部信息(如数据库或文件)的完整性。 (3)检测程序初始化和终止方面的错误。

实验七 记事本程序测试用例的编写

实验七:记事本程序测试用例的编写 (实验时间2012年4月18日) 一、实验目的 掌握测试用例的基本构成元素;掌握在软件测试实践中一些常用测试用例的设计思想和方法,学会如何设计测试用例。 二、实验内容 测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。在编写测试用例过程中,需要遵守基本的测试用例编写标准,并参考一些测试用例设计的指南。标准模板中主要元素如下: 标识符:由测试设计过程说明和测试程序说明引用的唯一标识符测试项:描述被测试的详细特性、代码模块等,应该比测试设计说明中所列出的特性更加具体。 输入标准:该说明列举送到软件执行测试用例的所有输入内容或者条件 输出标准:描述进行测试用例预期的结果 环境要求:执行测试用例所必需的硬件、软件、测试工具、人员等 测试用例间的关联:用来标识测试用例与其他测试用例之间的依赖关系。 例:要对Windows记事本程序进行测试,选取其中的一个:

测试项——文件菜单栏的测试 测试对象——记事本程序文件菜单栏(测试用例标识10000,下同) 所包含的子测试用例描述如下: |------------文件/新建(1001) |------------文件/打开(1002) |------------文件/保存(1003) |------------文件/另存为(1004) |------------文件/页面设置(1005) |------------文件/打印(1006) |------------文件/退出(1007) 1.选取其中的一个子测试用例——文件/退出(1007)作为例子,测试用例如下表所示。 2.选取其中的一个子测试用例——文件/保存(1003)作为例子,测试用例如下表所示。

软件测试案例库

软件测试技术 案例库

案例一:错误报告与管理 一、案例目的 1.熟悉错误报告的编写内容 2.熟悉错误管理的工作流程 3.了解测试管理的内容 二、案例内容: 1.测试酒店管理系统,编写有一定质量的错误报告 2.使用TestDirector测试管理软件,熟悉需求管理、测试计划、执行测试、错误管理 三、案例步骤: ?任务一:提交软件测试中发现的错误 1、安装酒店管理系统,测试该系统,针对所发现的错误,记录并提交错误以便开发人员 修改。 ?任务二:寻找软件测试中错误的触发条件,并编写有一定质量的错误报告。 1、1、测试酒店管理系统,根据任务一中提交错误报告存在的问题,重新编写错误报告, 错误报告的内容必须包括如下: 3、测试中需要考虑错误重现 4、错误报告通过TestDirector软件进行管理 ?TestDirector使用: ●●使用前设置 1、断开网络连接。在屏幕底部的工具栏上选择“本地连接”图标,右键点击,选择“禁 用”。 2、把计算机名改为“JF82-55”。控制面板—〉系统—〉网络标识—〉属性,修改计算机 名,重启机器。 3、启动TestDirector的相应服务。在控制面板中选择管理工具—〉组件服务—〉“本地 计算机上的服务”—〉选中“Advanced TestDirector Startstop Servic4e”—〉点右键选“启动”。 4、启动TestDirector。在屏幕底部的工具栏上出现粉红色图标TestDirector,右键选中并 点击,在弹出菜单中选择“Start TestDirector”。 5、从开始菜单中选择程序—〉TestDirector7、6,出现屏幕如图3-1。

软件测试案例分析完整版

软件测试案例分析 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

对软件测试理解 软件测试作为软件质量保证的一种重要方法,近些年来, 软件测试越来越受到产业界、教育界和学术界的重视。软件测试,描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 1软件测试的方法 黑盒测试 在黑盒测试(或称功能测试)中,不考虑程序的内部结构和表现,其目的是确定程序的输入与输出是否与其规格一致,力图发现以下几类错误: 是否有不正确或遗漏了的功能?在接口上,输入能否正确地接受?能否正确地输出结果? 是否有数据结构错误或外部信息(例如数据文件)访问错误?性能上是否能满足要求? 是否有初始化或终止性错误? 黑盒测试的主要缺点是依赖于规格的正确性(实际情况并非如此)和需要采用所有可能的输入作为测试用例才能保证模块的正确性。 白盒测试 在该方法对软件的过程性细节做细致检查,对程序所有逻辑进行测试。通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。测试用例从程序的逻辑中产生。确定程序逻辑覆盖有几条原则,其中之一是语句覆盖,要求程序中的每条语句至少执行一次。这条原则是必要的,但不充分,因为部分错误并不能检测出来。 从上至下测试 从上至下测试从程序的顶点模块开始,然后逐步对较低级的模块进行测试。为了模仿被测试模块的低级模块,需要哑模块或桩子模块。从上至下测试的主要好处就是排除了系统测试和集成,它可以让人们看见系统的早期版本并证明系统的正确性。它的效果之一可以提高程序员的士气。从上至下测试的主要缺点是需要桩子模块,并

软件测试用例实例(非常详细)汇总

软件测试用例实例汇总(非常详细)

1、兼容性测试 在大多数生产环境中,客户机工作站、网络连接和数据库服务器的具体硬件规格会有所不同。客户机工作站可能会安装不同的软件例如,应用程序、驱动程序等而且在任何时候,都可能运行许多不同的软件组合,从而占用不同的资源。 测试 目的 配置操作系系统外设应用软件结果说明_统_______ 软件 ________________________ 服务Win do 器w2000( S) Win do wXp Win do w2000( P) Win do w2003 TestCase_Li nkWorks_W 用例编号 orkEvaluate 项目名称Lin kWorks

模块名称项目承担部门 用例作者 主成日期 本文档使用部门评审负责人 审核日期 批准日期WorkEvaluate 模块 研发中心?质量管理部 2005-5-27 质星管理部 注:本文档由测试组提交,审核由测试组员责人签字,由项目负责人批准。历史版本: 版本/状态作者参与者起止曰期备注 V1.1

1.2.疲劳强度测试用例 强度测试也是性能测试是的一种,实施和执行此类测试的目的是找出因资源不足或资源争用而导致的错误。如果内存或磁盘空间不足,测试对象就可能会表现出一些在正常条件下并不明显的缺陷。而其他缺陷则可能由于争用共享资源 (如数据库锁或网络带宽)而造成的。强度测试还可用于确定测试对象能够处理的最大工作量。测试目的 测试说明 _________________________________ 前提条件连续运行8小时,设置添加 10用户并发_______________ 测试需输入/输出/响应是否正常运行求动作功能12小时4小时 6小时 8小时 功能1 2小时 4小时 6小时 8小时

测试用例(软件测试详细案例)

测试用例 测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。 测试用例(Test Case)目前没有经典的定义。比较通常的说法是:指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。 不同类别的软件,测试用例是不同的。不同于诸如系统、工具、控制、游戏软件,管理软件的用户需求更加不统一,变化更大、更快。笔者主要从事企业管理软件的测试。因此我们的做法是把测试数据和测试脚本从测试用例中划分出来。测试用例更趋于是针对软件产品的功能、业务规则和业务处理所设计的测试方案。对软件的每个特定功能或运行操作路径的测试构成了一个个测试用例。 随着中国软件业的日益壮大和逐步走向成熟,软件测试也在不断发展。从最初的由软件编程人员兼职测试到软件公司组建独立专职测试部门。测试工作也从简单测试演变为包括:编制测试计划、编写测试用例、准备测试数据、编写测试脚本、实施测试、测试评估等多项内容的正规测试。测试方式则由单纯手工测试发展为手工、自动兼之,并有向第三方专业测试公司发展的趋势。 要使最终用户对软件感到满意,最有力的举措就是对最终用户的期望加以明确阐述,以便对这些期望进行核实并确认其有效性。测试用例反映了要核实的需求。然而,核实这些需求可能通过不同的方式并由不同的测试员来实施。例如,执行软件以便验证它的功能和性能,这项操作可能由某个测试员采用自动测试技术来实现;计算机系统的关机步骤可通过手工测试和观察来完成;不过,市场占有率和销售数据(以及产品需求),只能通过评测产品和竞争销售数据来完成。 既然可能无法(或不必负责)核实所有的需求,那么是否能为测试挑选最适合或最关键的需求则关系到项目的成败。选中要核实的需求将是对成本、风险和对该需求进行核实的必要性这三者权衡考虑的结果。 确定测试用例之所以很重要,原因有以下几方面。 测试用例构成了设计和制定测试过程的基础。 测试的“深度”与测试用例的数量成比例。由于每个测试用例反映不同的场景、条件或经由产品的事件流,因而,随着测试用例数量的增加,您对产品质量和测试流程也就越有信心。 判断测试是否完全的一个主要评测方法是基于需求的覆盖,而这又是以确定、实施和/或执行的测试用例的数量为依据的。类似下面这样的说明:“95 % 的关键测试用例已得以执行和验证”,远比“我们已完成95 % 的测试”更有意义。测试工作量与测试用例的数量成比例。根据全面且细化的测试用例,可以更准确地估计测试周期各连续阶段的时间安排。

相关文档