Silktest automation project generic structure
1 introduction
So far, we found in the existing Silktest (ST) projects contain several main issues:
1. Everyone wrote their scripts in their own code style that makes the project logical deployment various too much and often takes the scripts runner a lot of time to learn how to run the [...]
数据流测试
数据流测试:指关注变量接受值的点和使用(或引用)这些值的点的结构性测试形式,它可以做路径测试的真实性检查,它包含两种形式,一种提供一组基本定义和一种统一的测试覆盖指标结构,另一种基于叫做“程序片”的概念。
定义/使用测试
程序P的程序图为G(P),P中的所有路径集合是PATHS(P)。
节点n є G(P) 是变量v є V的定义节点,记做DEF(v , n),当且仅当变量v的值由对应节点n的语句片段处定义。即n是一个语句片段,而变量v在这个语句片段中定义。
节点n є G(P) 是变量v є V的使用节点,记做USE(v , n),当且仅当变量v的值在对应节点n的语句片段处使用。即n是一个语句片段,而变量v在这个语句片段中使用。
当且仅当语句n是谓词语句,使用节点USE(v , n)是一个谓词使用,记做P-use,否则使用节点USE(v , n)是一个计算使用,记做C-use。对应于谓词使用的节点永远有外度>=2,对应于计算使用的节点永远有外度<=1。
关于变量v的定义-使用路径,记做du-path,是PATHS(P)中的路径,使得对某个v є V,存在定义和使用节点DEF(v , m)和USE(v , n),使得m和n是该路径的最初和最终节点。
关于变量v的定义-清除路径,记做dc-path,是PATHS(P)中的路径,是具有最初和最终节点DEF(v , m) 和 USE(v , n)的PATHS(P)中的路径,使得该路径中没有其他节点是v的定义节点。
对于以下程序伪代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Program Commission(INPUT,OUTPUT)
Dim locks, stocks, barrels As Integer
Dim lockPrice, stackPrice, barrelPrice As Real
Dim totalLocks, totalStock, totalBarrels As Integer
Dim lockSales, stockSales,barrelSales As Real
Dim sales, commission As Real
lockPrice [...]
三角形问题
问题描述:
三角形问题接受三个整数a、b和c作为输入,用作三角形的三边。程序的输出是由三条边确定的三角形类型:等边三角形,等腰三角形,不等边三角形或非三角形。
问题定义:
整数a,b,c必须满足条件:
1 <= a <= 200
2 <= b <= 200
3 <= c <= 200
a < b + c
b < a + c
c < a + b
实现函数:
void triangle(int a , int b, int c)
功能性测试(查看以下表格的完整版(通过代理打开)):
由于GFW对google docs的封锁, 可能造成以下图表无法显示, 请通过代理中转访问本页
边界值分析测试用例
最坏情况测试用例
弱一般等价类测试用例
弱健壮等价类测试用例
强健壮等价类测试用例
决策表
功能性测试
1. 边界值测试:
边界值测试基于“单缺陷”假说,即失效极少是由两个或多个缺陷的同时发生而引起的,因此,边界值分析测试用例的获得,通过使所有变量取正常值,只使一个变量取极限。
健壮性测试:
在边界值测试的基础上增加了略大于最大极限值或者略小于最小极限值的取值来测试函数有什么表现。
最坏情况测试:
边界值测试和健壮性测试均基于“单缺陷”假说,如需关心当多个变量取极值的时候系统的表现,这种测试就是最坏情况测试。对待测参数采取5个取值:最小值,略大于最小值,正常值,略小于最大值,最大值。
健壮最坏情况测试:
即在最坏情况测试的5类取值的基础上增加两类取值,略小于最小值和略大于最大值。
2. 等价类测试:
边界值测试无法实现完备性测试并且避免冗余,选择确定类的等价关系,通过预测可能的实现,并考虑在实现中必须提供的功能操作来做出这种选择。等价类测试的两个决定性因素,即健壮性和单/多缺陷假设。
弱一般等价类测试
基于单缺陷假设,弱一般等价类测试通过使用一个待测系统中的某一个输入量的每个等价类(区间)中取一个变量来实现。
强一般等价类测试
基于多缺陷假设。强一般等价类测试通过将待测系统中每一个输入量的每个等价类(区间)中的一个取值,进行笛卡尔运算,强一般等价类测试能保证完备性。
弱健壮等价类测试
基于弱一般等价类测试,在弱一般等价类测试的基础上增加了两段区间范围内的取值,即小于最小值的区间和大于最大值的区间。
强健壮等价类测试
基于强一般等价类测试,在强一般等价类测试的基础上增加了两段区间范围内的取值,即小于最小值的区间和大于最大值的区间。
3. 决策表测试:
决策表表示的是条件桩和行动桩之间的关系的表,条件桩一般取值T或F,如果条件可以有多个值,则对应的决策表叫做扩展条目决策表。
路径测试
结构性测试是基于被测程序的源代码,而不是定义,也就是所谓的白盒测试,而功能性测试也就是所谓的黑盒测试。
1. 路径测试
程序图:对于采用命令式程序设计语言编写的一段程序,其程序图是一种有向图,图中的节点表示语句片段,边表示控制流。
DD-路径:决策到决策路径,从决策语句的出路开始,到下一个决策语句的结束,在此路径中没有内部分支,DD-路径是单入口,单出口的节点链. 它其实就是一系列的语句序列,在这个序列当中的每个结点的入度和出度都是1。
当然这只是基于长链的DD路径,DD路径还有其他情况
情况1. 由一个节点组成,内度=0
情况2. 由一个节点组成,外度=0
情况3. 由一个节点组成,内度>=2或外度>=2
情况4. 由一个节点组成,内度=1并且外度=1
情况5. 长度>=1的最大链
以上定义运用于以下程序图:
情况1:节点4
情况2:节点23
情况3:节点9,节点12,节点13,节点14,节点16,节点19,节点20,节点22
情况4:节点10,节点11,节点15,节点17,节点18
情况5:节点5~节点8
DD-路径图:有向图,其中,节点表示其程序图的DD-路径,边表示连续DD-路径之间的控制流,上图的DD-路径图形式上,仅仅是将节点5~节点8合并为一个节点,所以DD-路径图是一种压缩图。
测试覆盖指标:
C0 :所有语句
C1 :所有DD-路径
C1p :所有判断的每种分支
C2 :C1+循环覆盖
C0 :C1+DD-路径的所有依赖对偶
Cmcc :多条件覆盖
Cik :包含最多k次循环的所有程序路径(通常k=2)
Cstat :路径具有“统计重要性”的部分
C∞ :所有可能的执行路径
测试覆盖指标注解:
语句与判断测试
语句对应C0, if…then…else… 为一语句
判断对应C1,if…或then…或else… 为一DD-路径
DD-路径测试
同上面的判断测试,即覆盖每一条DD-路径
DD-路径的依赖对偶
涉及到数据流测试,DD-路径依赖对偶之间的最常见的依赖关系是定义/引用关系,其中变量在一个DD-路径中定义,在另一个DD-路径中引用。这种依赖关系的重要性在于他们与不可行路径问题有关。
多条件覆盖
对于在多个判断条件制约下的DD-路径,多条件覆盖意味着多个判断条件的不同组合,而非普通的DD-路径覆盖,可将多个复合判断条件(if ( … && … || … ))转换为多个简单判断条件(if … else … then …),所以多条件覆盖会产生更多的测试用例。
循环覆盖
三种循环:简单循环,嵌套循环,复杂循环(从一个循环内部跳入到或者跳出到另一个循环内部),对于简单和嵌套循环,可采用压缩图的办法,对于复杂循环,最简单的测试观点是认为每个循环都包含一个判断,并且需要测试判断的两个分支(继续遍历循环和退出循环)
2. 基路径测试
基路径测试:把程序看做是一种向量空间,则这种空间的基就是要测试的非常有意义的元素几何,如果基没有问题,则可以希望能够用基表述的一切都没有问题。
线性独立路径:对于任意的有向图,通过从汇接点到源节点添加一条边实现到强连接有向图的转换,但不会影响线性独立路径数。对强连接图,V(G)线性独立路径数 = e边数-n节点数+p连接区域数 = 11 – 7 + 1 = 5.
McCabe基路径算法:
1. 选择含有尽可能多的判断节点的路径:ABCBEFG
2. 依次回溯基线路径(自上而下):ADEFG, ADFG, ABEFG, ABCG
3. 分析以上第1步和第2步中得到的所有路径,分析并去除不可行路径,此例中所有路径都是可行的。

