《软件测试基础》授课教案
授课内容:第四章白盒测试技术
授课课次:第9次课
授课时数:2学时授课日期: 上课教室:
目的与要求:
掌握白盒测试中基本路经测试的概念和方法;
了解程序插桩的概念和方法。
教学重点:
基本路经测试
教学难点:
程序插桩
教学方式:
1.运用《白盒测试技术》课件进行课堂讲授,让学生理解基本路径测试的概念,掌握
基本路径测试方法;
2.进行课堂练习,加深对基本路径测试的理解和使用。
教学内容:
1.程序结构分析
2.DD路径测试
3.基本路径测试
4.程序插桩
内容提要及时间分配:
1、课前引导(8分钟)
◆回顾6种覆盖法的基本思想。
◆白盒测试中有哪些常用方法?
2、本课内容(75分钟)
◆程序结构分析
◆DD路径测试
◆基本路径测试
◆程序插桩
3、课后小结(5分钟)
4、布置作业(2分钟)
教学参考书:
1.软件测试方法和技术朱少民清华大学出版社
2.软件测试Paul C.Jorgensen 机械工业出版社讨论与思考:
把第2章的NextDate问题的伪代码转换成为控制流图,并简化。作业:
1.请把下面的程序流程图转化成控制流图。
2.重新编写程序片断14~20,用嵌套if-then-else语句替代复合条件。
14.if(a=b)AND (b=c)
15.Then Output(“Equilateral”)
16.Else If(a<>b)AND(a<>c)AND(b<>c)
17.Then Output(“Scalence”)
18.Else Output(“Isosecles”)
19.EndIf
20.EndIf
比较你改写后的程序和上面程序片断的圈复杂度。
复问题目:
教学内容与方法步骤
4.2.3程序结构分析
引言:程序的结构形式是白盒测试的主要依据。这一部分将从控制流分析和数据流分析的不同方面讨论如何分析程序结构。我们的目的是要在程序中找到隐藏的错误。
1.控制流分析
由于非结构化程序会给测试带来许多不必要的困难,所以业界要求写出的程序具有良好的结构。上个世纪70年代以来,结构化程序的概念逐渐被人们普遍接受。体现这一要求对某些语言并不困难,比如Pascal、C,因为它们都具有反映基本控制结构的相应得控制语句。但对于有些开发语言要做到这一点,程序人员就要很注意程序结构化的要求,比如说汇编语言,若使用汇编语言编写程序,开发人员就尤其要注意程序的结构化要求。
正是由于这个原因,系统地检查程序的控制结构变得十分有意义了。
a)控制流图
程序流程图又称框图,是我们最熟悉,也是最容易理解的一种程序控制结构的图形表示了。在这种图上的框里面常常标明了处理要求或者条件,但是,这些标注在做路径分析时是不重要的。为了了更加突出控制流的结构,需要对程序流程图做一些简化。在图4-2种我们给出了简化的例子。其中(a)图示一个含有两个出口判断和循环的程序流程图,我们把它简化成(b)的形式,称这种简化了的程序流程图叫做控制流图。
在控制流图中只有两种图形符号,它们是:
●节点:以标有编号的圆圈表示。它代表了程序流程图中矩形框表示的处理、菱形表示的
两个到多个出口判断以及两条到多条流线相交的汇合点。
●控制流线或弧:以箭头表示。它与程序流程图中的流线是一致的,表明了控制的顺序。
为了方便讨论,控制流线通常标有名字,如图中所标的a、b、c等。
为了使控制流图在机器上表示,我们可以把它表示成矩阵的形式,称为控制流图矩阵。图4-3表示了图4-2的控制流图矩阵,这个矩阵有5行5列,是由该控制图中5个节点决定的。矩阵中6个元素a、b、c、d、e和f的位置决定了它们所连接节点的号码。例如,弧d 在矩阵中处于第3行第4列,那是因为它在控制流图中连接了节点3至节点4。这里必须注意方向,图中节点4到节点3没有弧,所以矩阵中第4行第3列也就没有元素。
a
cb
f
d
e
(a ) (b )
图4-2程序流程图和控制流图 图4-3 控制流图矩阵 除了用程序流程图可以转化成控制流图以外,还可以把伪代码表示的处理过程转化成控制流图。根据程序建构控制流图很容易,如图4-4所示,我们把三角形伪代码实现过程转化成了控制流图。对于不可执行语句我们不把它映射成节点,比如变量和类型说明语句。 1. Program triangle2 ‘version of simple 2. Dim a,b,c As Integer 3. Dim IsATriangle As Boolean
4. Output(“
5. Input(a,b,c)
6. Output(“Side A is ”,a)
7. Output(“Side B is ”,b)
8. Output(“Side C is ”,c)
9. If (a
14. Then if(a=b)AND (b=c) 15. Then Output(“Equilateral ”)
16. Else If(a<>b)AND(a<>c)AND(b<>c) 17. Then Output(“Scalence ”)
18.Else Output(“Isosecles”)
19.EndIf
20.EndIf
21.Else Output(“NOT a Triangle”)
22.EndIf
23.End triangle2
图4-4 三角形伪代码映射成的控制流图我们有的时候为了方便会把一条伪代码语句做为一个节点,但有的时候,我们可以把几个节点合并成一个,合并的原则是:若在一个节点序列中没有分支,则我们可以把这个序列的节点都合并成一个节点。比如图4-4我们可以合并成如图4-5的形式。对于不可执行语句我们不把它映射成节点,比如变量和类型说明语句。
当过程设计中包含复合条件时,生成控制流图的方法要复杂一些。在这种情况下,我们要把复合条件拆开成一个个简单条件,让每一个简单条件对应流图中一个节点。这样的节点我们把它叫判定节点,它会引出两条或者多条边。如图4-6所示。
图4-5 简化后的三角形控制流图图4-6 包含复合条件的伪代码转化成控制流图
b)程序结构的基本要求
我们对于程序结构提出以下4点基本要求,这些要求是,写出的程序不应该包含:
●转向并不存在的标号;
●没有用过的语句标号;
●从程序入口进入后无法达到的语句;
●不能达到停机语句的语句。
显然,这些要求是合理的。目前,对这些情况的检测主要通过编译器和程序分析工具来实现。
2.数据流分析
在单元测试中,数据仅仅在一个模块或者一个函数种流通。但是,数据流的通路往往涉及多个集成模块,甚至于整个软件,所以我们有必要进行数据流的测试,尽管它非常耗时。
数据流分析最初是随着编译系统要生成有效的目标代码而出现的,这类方法主要用于优化代码。数据流测试是指一个基于通过程序的控制流,从建立的数据目标状态的序列中发现异常的结构测试方法。数据流测试用作路径测试的“真实性检查”。
早期的数据流分析常常集中于现在叫做定义/引用异常的缺陷:
●变量杯定义,但是从来没有使用。
●所使用的变量没有被定义。
●变量在使用之前被定义了两次。
因为程序内的语句因变量的定义和使用而彼此相关,所以用数据流测试方法更能有效地发现软件缺陷。但是,在度量测试覆盖率和选择测试路径的时候,数据流测试很困难。
4.2.4 DD-路径测试
引言:DD路径测试,即决策到决策路径测试。在讨论DD-路径测试之前,我们先要了解什么叫做链,在这里,链出现在有向图中,是一条起始节点和终止节点不同的路径,并且每个节点的出度=1,入度=1。也有一种长度为0的退化链情况,意思就是这条连只有一个节点和0条边。
1.DD路径概念:
DD-路径是控制流图中的一条链,只要满足下列五种情况之一:
(1)由一个节点组成,入度=0;
(2)由一个节点组成,出度=0;
(3)由一个节点组成,入度>=2或者出度>=2;
(4)由一个节点组成,入度=1并且出度=1;
(5)长度>=的最大链。
2.举例
为了便于理解,我们用图3-4三角形伪代码映射成的控制流图来说明这五种情况。很显然,我们可以看出节点4的入度为0,是DD-路径的第一种情况,我们把它叫做“第一”;节点5-8是第五种情况,我们可以把这4个节点合成一个DD-路径,为什么是5-8,而不是5-7或者5-9呢?因为若是5-9的话,就会违反入度=出度=1的原则,若是5-7,就会违反“最大”的原则;节点10、11、15、17、18、21是情况4的DD-路径;节点9、12、13、14、16、19、20、22是情况3的DD-路径;而节点23的出度为0,是DD-路径的第二种情况,我们把它叫做“最后”。根据图4-4,我们画出图4-8对应的三角形程序DD-路径图,它包括的路径名都列举在表4-8中。
控制流图节点DD-路径名称定义情况
4 第一 1
5-8 A 5
9 B 3
10 C 4
11 D 4
12 E 3
13 F 3
14 H 3
15 I 4
16 J 3
17 K 4
18 L 4
19 M 3
20 N 3
21 G 4
22 O 3
23 最后 2
图4-8 三角形程序DD-路径图
提出DD-路径的目的很多质量机构都把DD-路径覆盖作为测试覆盖的最低可接受级别。
https://www.doczj.com/doc/d61761980.html,ler发现,当通过一组测试用例满足DD-路径覆盖要求时,可以发现全部缺陷中的大约85%(Miller 1991)。
如果每一条DD-路径都被遍历,则我们知道每个判断分支都被执行,其实就是遍历DD-路径图中每条边。对于if类的语句,这意味着真、假分支都要覆盖。对于CASE语句,则每个子句都要覆盖。
4.2.5基本路径测试
引言:基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。基本路径测试法包括以下5个方面:
(1)程序的控制流图:描述程序控制流的一种图示方法。
(2)程序环境复杂性:
环形复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序
的基本独立路径数目边。
例如:图4-8中的复杂性度量,我们用V(G)表示,用n代表节点数目,用e代表控制流线的数目,那么:V(G)=e-n+2=20-17+2=5。由此,我们可以得到三角形程序段的基本路径集中最多有5条独立路径。
(3)导出测试用例:通过程序的控制流图导出基本路径集,列出程序的独立路径。
(4)准备测试用例,确保基本路径集中的每一条路径的执行。
(5)图形矩阵:是在基本路径测试中起辅助作用的软件工具,利用它可以实现自动地确定一
个基本路径集。
下面我们通过一个实例来说明基本路径测试。
例:请看以下代码,它由C++语言书写。,把它转化成图形矩阵,,最后请使用基本路径测试法为变量temp设计测试用例,使之满足基本路径覆盖要求。
1.void ReadPara( CString temp)
2.{
3.if ( temp = = ">=")
4.m_oper.SetCurSel(0);
5.else
6.{
7.if (temp = = ">")
8.m_oper.SetCurSel(1);
9.else
10.{
11.if ( temp = = "= =")
12.m_oper.SetCurSel(2);
13.else
14.{
15.if( temp = = "<=")
16.m_oper.SetCurSel(3);
17.else
18.{
19.if ( temp = = "<")
20.m_oper.SetCurSel(4);
21.else
22.m_oper.SetCurSel(5);
23.}
24.}
25.}
26.}
27.return;
28.}
1.画出这段代码的控制流图,如4-9所示:
图4-9 例题控制流图
2.根据控制流图,计算环路复杂度V(G)=22-18+2=6。
3.导出测试用例,列出路径:
Path1:2-3-4-27-28
Path2:2-3-7-8-26-27-28
Path3:2-3-7-11-12-25-26-27-28
Path4:2-3-7-11-15-16-24-25-26-27-28
Path5:2-3-7-11-15-19-20-23-24-25-26-27-28
Path6:2-3-7-11-15-19-22-23-24-25-26-27-28
4.设计测试用例
根据第3步中给出的路径,下面设计测试用例列在表3-9中。
5.图形矩阵的画法在前面我们已经讲过,这里不再赘述。
4.2.6 程序插桩
在软件测试中,常常要用到一种“插桩”技术,通过在源代码中加入记录信息语句,以便进行运行信息的追踪和调试,统计有关的运行资源状况。
想做插桩,可以思考以下几点:
(1)如果出现在语句中包含了return语句,怎么在它前面插入指定语句?同时保证语句的语法合法性?
例如: for ( j=0;j<10000;j++)
{
if ( j == k)
return ; <----- 不能直接在之前插入,否则意义全变了;
}
(2)当出现需要在for 循环语句、while循环语句中进行插入信息时候,很可能会导致程序运行时间非常长,是否有办法改进“插桩”机制?
(3)是否可以由用户进行指定,比如for 语句、while语句或者指定的语句前不允许进行“插桩”,怎么实现?
(4)如果对于一个庞大的系统软件,我们需要进行对所运行的程序的每个函数记录其运行的有关参数,如:运行开始时间、退出时间、运行总时间、调用次数等等的统计,您有什么更好的建议与想法呢?
小结
白盒测试作为软件质量保证中的重要一环,对产品稳定性起到至关重要的影响,不幸的是,由于实施白盒测试有较高技术难度,该软件过程常被厂商忽略,因为难于实施,所以容易失败,失败后产生畏惧心理,就更不愿意进一步去尝试,如此形成恶性循环。我们应该克服这种心理恐惧,不畏惧“白盒测试”这只拦路虎,只要方法得当,白盒测试还是能做起来的。
第10章习题解答 1、WEB测试中的连接测试主要包括哪些方面? 链接测试可分为三个方面。首先,测试所有链接是否按指示的那样确实链接到了该链接的页面;其次,测试所链接的页面是否存在;最后,保证Web 应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的URL 地址才能访问。 2、对一个WEB服务器应测试它的哪些性能指标? Web服务器指标: * Processor Time: 指服务器CPU占用率,一般平均达到70%时,服务就接近饱和; * Memory Available Mbyte : 可用内存数,如果测试时发现内存有变化情况也要注意,如果是内存泄露则比较严重; * Physicsdisk Time : 物理磁盘读写时间情况; * Avg Rps: 平均每秒钟响应次数=总请求时间/ 秒数; * Successful Rounds:成功的请求; * Failed Rounds :失败的请求; * Successful Hits :成功的点击次数; * Failed Hits :失败的点击次数; * Hits Per Second :每秒点击次数; * Successful Hits Per Second :每秒成功的点击次数; * Failed Hits Per Second :每秒失败的点击次数; * Attempted Connections :尝试链接数; 3、WEB网站压力测试的步骤是什么? 步骤如下: * 确定接受请求并完成响应的最大允许的延时。 * 估计WEB应用程序的最大并发用户数量。 * 模拟用户请求,以一个比较小的负载开始,逐渐增加模拟用户的数量,直到WEB应用程序的相应延时超过最大延时。 * 如果负载比估计的用户数量小,那么应该优化这个WEB程序,否则你选择性的执行优化。
《软件测试基础》授课教案 授课内容:第四章白盒测试技术 授课课次:第9次课 授课时数:2学时授课日期: 上课教室: 目的与要求: 掌握白盒测试中基本路经测试的概念和方法; 了解程序插桩的概念和方法。 教学重点: 基本路经测试 教学难点: 程序插桩 教学方式: 1.运用《白盒测试技术》课件进行课堂讲授,让学生理解基本路径测试的概念,掌握 基本路径测试方法; 2.进行课堂练习,加深对基本路径测试的理解和使用。 教学内容: 1.程序结构分析 2.DD路径测试 3.基本路径测试 4.程序插桩 内容提要及时间分配: 1、课前引导(8分钟) ◆回顾6种覆盖法的基本思想。 ◆白盒测试中有哪些常用方法? 2、本课内容(75分钟) ◆程序结构分析 ◆DD路径测试 ◆基本路径测试 ◆程序插桩 3、课后小结(5分钟) 4、布置作业(2分钟) 教学参考书:
1.软件测试方法和技术朱少民清华大学出版社 2.软件测试Paul C.Jorgensen 机械工业出版社讨论与思考: 把第2章的NextDate问题的伪代码转换成为控制流图,并简化。作业: 1.请把下面的程序流程图转化成控制流图。 2.重新编写程序片断14~20,用嵌套if-then-else语句替代复合条件。 14.if(a=b)AND (b=c) 15.Then Output(“Equilateral”) 16.Else If(a<>b)AND(a<>c)AND(b<>c) 17.Then Output(“Scalence”) 18.Else Output(“Isosecles”) 19.EndIf 20.EndIf 比较你改写后的程序和上面程序片断的圈复杂度。 复问题目:
操练与练习型课件制作 实验目的 1.熟悉操练与练习型课件的基本结构。 2.掌握操练与练习型课件的设计与制作方法。 实验学时 4学时 实验器材 多媒体计算机、操作系统Windows10/7/XP、Authorware软件。 实验原理 操练与练习型课件给学生提供与所学到的例子相似的练习项目,通常是一次一个项目,对每个项目给予反馈,反馈的内容取决于学生的输入,反馈形式包括简单的对或错判定、提示继续尝试、动画演示等。操练与练习型课件设计基本环节包括引论节、选择项目、提问、反馈、判别应答、结尾等。 实验内容与步骤 以下以“单词测试”程序为例说明操练与练习型课件的制作方法与技术。 单词测试程序的功能是通过选择的词库显示一个单词,并朗读该单词,同时显示4个中文含义,用鼠标单击选择其中一个含义,程序会根据选择的中文含义是否正确回答OK或者ERRO,并显示正确答案,然后对正确和错误的次数进行统计。其流程图3-1所示。
图3-1 “单词测试”流程图 1.制作函数库部分 在流程线放置一个框架图标,在其右边放置一个群组图标,命名为数据库,在其属性面板中选上包含编写的函数,其基本功能是连接数据库。其代码如下:DBConnString:="DRIVER={Microsoft Access Driver (*.mdb)};DBQ="^FileLocation^"db1.mdb"^";" ODBCHandle:=ODBCOpenDynamic(WindowHandle, ErrorVar, DBConnString) Result@"数据库":=ODBCExecute(ODBCHandle,args@"数据库") ODBCClose(ODBCHandle) 2.制作背景音乐及标题部分 (1)用声音图标导入一段背景音乐,并发性设置为同时。 (2)用显示图标输入标题:欢迎使用单词测试。 3.制作程序主体部分 (1)拖放框架图标在流程线上释放,命名为“框架”。框架图标内的结构全部删除,并用一交互结构控制背景音乐的开与关,结构图和计算图标代码如图3-2所示。
---------------------------------------------------------------最新资料推荐------------------------------------------------------ 北大测试全套课件和教案27. 第9章第1讲 《软件测试基础》授课教案授课内容: 第九章面向对象软件的测试授课课次: 第 27 次课授课时数: 2 学时授课日期: 上课教室: 目的与要求: 通过课堂教学,使学生了解面向对象软件的特征,了解面向对象软件测试的问题,理解面向对象软件测试与传统软件测试方法的不同;熟悉面向对象软件测试的模型和策略,掌握面向对象软件类测试的基本策略和方法。 教学重点: 1.面向对象软件测试与传统软件测试的不同 2.面向对象软件测试中类测试的方法和策略教学难点: 面向对象软件测试中针对面向对象软件特征的测试教学方式: 1. 运用《软件测试技术》课件进行课堂讲授,加深对面向对象软件测试基本概念,方法和策略的理解; 2. 讲授和课堂讨论,课堂练习相结合的方式。 教学内容: 1. 面向对象软件的特征及其测试的问题 2. 面向对象软件测试基础 3. 类测试内容提要及时间分配: 1 / 10
1、面向对象软件特征及其测试的问题(20 分钟)面向 对象测试的单元面向对象软件特征的涵义及其测试上的问题 面向对象软件测试的层次 2、面向对象软件测试基础(25 分钟) 面向对象软件测试的模型面向对象软件测试的基本策略 3、类测试(40 分钟)面向对象软件中测试的单元以方法为单元以类为单元 4、课后小结和布置作业(5 分钟)教学参考书: 1. 软件测试方法和技术朱少民清华大学出版社 2. 软件测试 Ron Patton 机械工业出版社 3. 软件测试教程贺平电子工业出版社讨论与思考: 1. 面向对象软件测试为什么和传统的软件测试有很大的不同,不同点在什么地方? 2. 面向对象软件测试中选择类为单元的测试与选择方法为单元的测试相比有什么优点?作业: 1. 简述面向对象软件测试和传统软件测试的不同。 2. 简述面向对象软件测试的重要原则或策略。 复问题目: 序号题目学生成绩 1 2 3 教学内容与方法步骤 9.1 面向对象测试的问题一、面向对象软件的特征 1 继承 2 封装 3 多态 4 开发过程的迭代性二、面向对象测试的单元 1 单元的选取问题 2 合成和封装的涵义及其测试问题考虑 3 继承的涵义及其测试问题考虑 4 多态性的涵义及其测试问题考虑三、面向对象测试的层次 9.2 类测试一、类测试的主