北大测试全套课件和教案 9. 第4章 第3讲
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《软件测试基础》授课教案
授课内容:第四章白盒测试技术
授课课次:第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 ”)