实现 | 软件工程7

298 阅读5分钟

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

编码就是把软件设计结果翻译成用某种程序设计语言书写的程序。

软件测试在软件生命周期中横跨两个阶段。通常在编写每个模块之后就对它做必必要的测试(称为单元测试)。在这个阶段结束后,对软件系统还应该进行各种综合测试。

编码

编码风格

源程序代码的逻辑简明清晰、易读易懂是好程序的一个重要标准,为了做到这一点,应该遵循如下规则,其中3-5为程序员的修养。

  • 1.程序内部文档(注解)
  • 2.数据说明
  • 3.语句构造
  • 4.输入输出
  • 5.效率

软件测试基础

软件测试的目标

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

软件测试准则

  • 1.所有测试应该能追溯到用户需求
  • 2.应该给远在测试开始之前就制定出测试计划
  • 3.把Pareto原理应用到软件测试中(28法则)
  • 4.应该从“小规模”测试开始,并逐步进行“大规模”测试
  • 5.穷举测试是不可能的
  • 6.为了达到最佳的测试效果,应该由独立的第三方从事测试工作

测试方法

如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用,称为黑盒测试

如果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行,称为白盒测试

黑盒测试又称为功能测试,白盒测试又称为结构测试。

测试步骤

  • 1.模块测试
  • 2.子系统测试
  • 3.系统调试
  • 4.验收测试
  • 5.平行运行(同时运行新旧系统)

白盒测试技术

通常把测试数据和预期输出结果称为测试用例。

设计测试方案的基本目标是,确定一组最可能发现某个错误或某类错误的测试数据。

以下为白盒方法测试软件时设计测试数据的典型技术。

逻辑覆盖

逻辑覆盖是对一系列测试过程的总称

语句覆盖

含义:选择足够多的测试数据,使被测程序中每个语句至少执行一次。

语句覆盖是很弱的逻辑覆盖标准

判定覆盖

含义:不仅每个语句必须执行一次,而且每个判定的每种可能性的结果都应该至少执行一次

条件覆盖

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

控制结构测试

根据程序的控制结构设计测试数据的技术

基本路径测试

设计足够多的测试用例,运行所测程序,要覆盖程序中所有可能的路径。但在路径数目很大时,真正做到完全覆盖是很困难的,必须把覆盖路径数目压缩到一定限度。例如程序中的循环体只执行一次。

基本路径测试在程序控制图的基础上,通过分析控制构造的环行(圈,loop)复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每一个可执行语句至少执行一次。

基本步骤

  • 1.根据过程设计结果画出相应的流图。
  • 2.计算流图的环形复杂度
  • 3.确定线性独立的路径的基本集合(复杂度为几就有几条独立路径)
  • 4.设计可强制执行基本集合中每条路径的测试用例

黑盒测试技术

黑盒测试着重测试软件功能。黑盒测试与白盒测试是互补的测试方法。

黑盒测力图发现下述类型的错误:

  • 1.功能不正确或遗漏了功能
  • 2.界面错误
  • 3.数据结构错误或外部数据库访问错误
  • 4.性能错误
  • 5.初始化或终止错误

白盒测试在测试过程的早期阶段运行,而黑盒测试主要用于测试过程的后期。

等价划分

等价划分是一种黑盒测试技术,这种技术把程序的输入域划分成若干个数据类,据此导出测试用例。

步骤一:划分等价类

有几条启发式规则供参考:

  • 1.如果规定了输入值的范围,则可划分除一个有效的等价类,两个无效的等价类
  • 2.如果规定了输入数据的个数,则类似的也可以划分除一个有效的等价类和两个无效的等价类
  • 3.如果规定了输入数据的一组值,而且程序对不同输入值做不同处理,则每个允许的输入值是一个有效的等价类,此外还有一个无效的等价类
  • 4.如果规定了输入数据必须遵循的规则,则可以划分除一个有效的等价类和若干个无效的等价类
  • 5.如果规定了输入数为整型,则可以划分除正整数,零和负整数三个有效类
  • 6.如果程序的处理对象是表格,则应该使用空表,以及含一项或多项的表

步骤二:根据等价类设计测试方案

有两个步骤:

  • 1.设计一个新的测试方案已尽可能多地覆盖尚未覆盖的有效等价类,重复这一步骤知道所有有效等价类都被覆盖为止
  • 2.设计一个新的测试方案,使它覆盖一个而且只覆盖一个尚未覆盖的无效等价类,重复这一步骤直到所有无效等价类都被覆盖为止