软件工程导论(张海藩)——第七章

  • Post author:
  • Post category:其他




实现

通常把编码和测试统称为实现

1.编码的任务?

2.良好的编码风格,应遵循哪些规则?

3.测试的目标是什么?

4.测试分哪几个步骤,每个步骤解决什么问题?

5.什么是黑盒测试和白盒测试,各包含哪些测试技术

6.单元测试有哪些内容?驱动模块和存根模块的作用

7.什么是集成测试?非渐增式与渐增式测试有何区别

8.调试的任务是什么?有哪些调试途径?

9.什么是软件可靠性和软件可用性?

10 .如何估算测试时间和程序中的故障总数?



编码

把软件设计结果翻译成程序



1、选择程序设计语言



2、编码风格

1、使用一致和有意义的标识符名

2、匈牙利标记法:[Prefix]-BaseTag-Name

3、用缩进显示程序结构

4、用加括号的方式排除二义性

5、避免大量使用循环嵌套和条件嵌套

6、当心运算符的副作用

7、把数定义成常量

8、利用sizeof()计算对象的大小

9、清晰的代码,而非最巧妙的代码



软件测试基础

测试是为了发现程序中的错误而执行程序的过程



测试步骤:

1、模块测试(单元测试)

2、子系统测试(集成测试)

3、系统测试(集成测试)

4、验收测试(确认测试)



测试方法:

测试任何产品都有两种方法:如果已经知道了产品应该具有发功能,可以通过测试来检验是否每个功能都能正常使用;如果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常执行。前一种方法称为黑盒测试,后一种方法称为白盒测试(结构测试)。



单元测试

集中检测软件设计的最小单元—模块

单元测试和编码属于软件过程的同一个阶段

主要使用白盒测试技术

可并行地测试多个模块



测试重点

  1. 模块接口
  2. 局部数据结构
  3. 重要的执行通路
  4. 出错处理通路
  5. 边界条件



集成测试



自顶向下集成

这种组装方式将模块按系统程序结构,沿控制层次自顶向下进行组装。

优点

早期实现并验证系统的主要功能;

早期发现上层模块的错误;

缺点

设计较多的存根模块,测试开销大。

早期不能并行工作,不能充分利用人力



自底向上集成

这种组装的方式是从程序模块结构的最底层的模块开始组装和测试。

优点

驱动模块随着上移逐步减少,测试开销小一些。

早期可以并行工作。

低层模块的错误能较早发现。

缺点

系统整体功能最后才能看到。

上层模块错误发现的较晚。



确认测试



Alpha&Beta测试

Alpha测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试。开发者负责记录发现的错误和使用中遇到的问题。总之,AIpha测试是在受控的环境中进行的。

Beta测试由软件的最终用户们在一个或多个客户场所进行。与Alpha测试不同,开发者通常不在Beta测试的现场,因此,Beta测试是软件在开发者不能控制的环境中的“真实”应用。用户记录在Beta测试过程中遇到的一-切问题(真实的或想象的),并且定期把这些问题报告给开发者。接收到在Beta测试期间报告的问题之后,开发者对软件产品进行必要的修改,并准备向全体客户发布最终的软件产品。



白盒



1、逻辑覆盖


|



(1)语句覆盖

为了暴露程序中的错误,至少每个语句应该执行一次。

程序应该执行的路径为sacbed.

所有语句覆盖,但是实际上,只执行了判断为真的路径。



(2)判定覆盖(分支覆盖)

不仅每个语句必须执行一次,而且每个判定的每种可能的结果都应该执行一次,也就是每个判定的每个分支都至少执行一次。

程序应该执行的路径为sacbd,sabed.

所有判断结果都执行了,但是实际上,只执行了一半的路径。



(3)条件覆盖

不仅每个语句必须至少执行一次,而且使判定表表达式中的每个条件都读取到各种可能的结果。

程序在a点应该有下述结果:

A>1;A<=1;B=0;B!=0

程序在b点应该有下述结果:

A=2;A!=2;X>1;X<=1

虽然每个条件都取到了两个不同的结果,但是判定表达式可能只取一个值。例如:

A=2,B=0,X=1

(A>1,B=0,A=2,X<=1)sacbed

A=1,B=1,X=2

(A<=1,B!=0,A!=2,X>1)sabed



(4)判定/条件覆盖

选取足够多的值,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种不同的结果。



(5)条件组合覆盖

选取足够多的值,使得每个判定表达式中条件的各种可能组合都至少出现过一次。

在程序中,共有八种可能性:

  1. A>1,B=0
  2. A>1,B!=0
  3. A<=1,B=0
  4. A<=1,B!=0
  5. A=2,X>1
  6. A=2,X<=1
  7. A!=2,X>1
  8. A!=2,X<=1

尽管如此,还是可能有没有检测到的路径存在。



(6)点覆盖

同语句覆盖,用于流图



(7)边覆盖

同判定覆盖,用于流图



(8)路径覆盖

选取足够多的值,使得程序的每条可能路径都至少执行一次。

路径覆盖不一定满足条件组合覆盖。

在这里插入图片描述



2、结构控制测试



(1)基本路径测试



(2)条件测试



(3)循环测试



黑盒

黑盒测试着重测试软件的功能。黑盒测试不能取代白盒测试,它是与白盒测试互补的测试方法。



1、等价划分

把所有可能的输入数据划分成若干个等价类,从每个等价类中选一组数据作为测试数据。在确定输入数据的等价类时常常还需要分析输出数据的等价类,以便根据输出数据的等价类导出输入数据的等价类。

例2:某一报表处理系统,要求用户输入处理报表的日期,假设日期限制在2000年1月至2004年12月,即系统只能对该假设期内的报表进行处理。如果用户输入的日期不在此范围内,则显示输入错误信息。该系统规定:日期由年、月的 6位数字字符组成,前4位代表“年”,后2位代表“月”。

现要求用等价类划分法设计测试用例,来测试程序的“日期检查功能”

在这里插入图片描述

在这里插入图片描述



2、边界值分析

设计程序运行在边界情况附近的测试方案。



3、错误推测

输入数据正常,输入数据的组合出错。

靠直觉和经验



调试

调试是在测试发现错误之后排除错误的过程。



调试途径

  1. 蛮干法
  2. 回溯法
  3. 原因排除法



软件可靠性

软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功的运行的概率。



版权声明:本文为weixin_42385782原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。