SE Part2

120 阅读7分钟

1.软件测试

测试
  • 概念
    检测和评价软件以确定其质量的过程和方法,即评价软件或程序的属性和能力,以确定它是否满足所需结果的过程和方法。
  • 分类
    软件测试可以分为静态测试(审查检阅)和动态测试(运行和使用软件)
    • 进行静态分析时,不用运行软件,只对源代码进行分析。检测程序的控制流和数据流,以及发现执行不到的无用代码,死循环,重复定义的数据等。静态分析是动态测试开始前的有效质量检测的手段。
    • 动态测试技术借助于输入样例(测试样例)来执行软件,一般分为功能测试(黑盒测试)和结构测试(白盒测试)。

image.png

image.png

调试
  • 概念
    发现所编写软件中的错误,确定错误的位置并加以排除,使之能由计算机或相关软件正确理解与执行的方法与过程。
  • 与测试的区别
    • 1)测试是从侧面证明程序员的“失败”,调试是为了证明程序员的正确
    • 2)测试是以已知条件开始,用预先定义的程序,且有预知的结果,不可预见的只有程序是否通过测试。调试一般是以不可知的内部条件开始,除统计性调试外,结果是不可预见的。
    • 3)测试是有计划的,并进行测试设计。调试是不受时间约束的。
    • 4)测试是发现错误,改正错误,重新测试的过程。调试是一个推理过程。
    • 5)测试的执行是有规律的。调试的执行要求程序员进行必要的推理。
    • 6)测试经常由独立的测试组在不了解软件设计的条件下完成的。调试必须由了解详细设计的程序员完成。
    • 7)大多数测试的执行和设计可由工具支持。调试时,程序员利用的主要工具是调试器。

2.黑盒测试

  • 概念
    把测试对象看作一个黑盒子,测试人员不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。黑盒测试又叫做功能测试或者数据驱动测试。

注:黑盒测试是在程序接口上进行测试

  • 目的(主要几点)
    • 是否有不正确或者遗漏了的功能
    • 在接口上,输入能否正确的接受
    • 是否有数据结构错误或外部的信息(例如数据文件)访问错误
    • 性能上是否能够满足要求
  • 具体方法
    • 等价类划分法
      • 把程序的输入域划分为若干部分,然后从每一部分中选少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类中的其他值。
      • 具体过程:划分等价类->设计测试用例
    • 边界值分析法
    • 错误推测法
    • 因果图法
    • 判定表驱动法
    • 正交实验设计法
    • 功能图法

3.白盒测试

4.软件度量

5.软件维护

  • 定义

    • 软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需求而修改软件的过程
  • 类型

    • 改正性维护;适应性维护;完善性维护;预防性维护;
  • 特点

    • 非结构化维护(没有完善的文档);
    • 结构化维护(有完善的文档的维护);
  • 什么叫软件的可维护性(所关注的几个主要的因素:测试能力/友好程度)

软件可维护性是指软件产品被修改的能力,修改包括纠正、改进或软件对环境、需求和功能规格说明变化的适应

  • 软件维护的度量-可测试性
    • 一个可维护的软件必然是可测试的。软件的可测试性是指验证软件程序正确的难易程度。可测试性好的软件,通常意味着软件设计简单,复杂性低。因为软件的复杂性越大,测试的难度也就越大。
  • 软件维护的度量-可理解性
    • 软件可理解性表现为外来读者理解软件的结构、接口、功能和内部过程的难易程度。模块化、详细的设计文档、结构化设计、源代码内部的文档和良好的高级程序设计语言等等,都对改进软件的可理解性有重要贡献。
  • 软件维护的度量-可修改性
    • 软件容易修改的程度和软件设计原理和规则直接有关。耦合、内聚、局部化、控制域与作用域的关系等等,都影响软件的可修改性。一个软件可维护性较低,也就是说会随着性能要求的变化而“腐烂”的原因有四个:过于僵硬、过于脆弱、复用率低、耦合过高。

6.习题

等价类习题

知识点

  • 等价类
    有效等价类:对程序的规格说明是有意义的、合理的输入数据所构成的集合。
    无效等价类:对程序的规格说明是无意义的、不合理的输入数据所构成的集合
  • 划分原则
  1. 如果输入条件规定了取值范围或个数,则可确定一个有效等价类和两个无效等价类。例如,如果输入值x在0到100之间,那么有效等价类是0<=x<=100,无效等价类是x<0和x>100。
  2. 如果输入条件规定了输入值的集合或是规定了“必须如何”的条件,则可以确定一个有效等价类和一个无效等价类。例如,如果输入值是日期类型,那么有效等价类是日期类型的数据,无效等价类是非日期类型的数据。
  3. 如果输入条件是布尔表达式,则可以分为一个有效等价类和一个无效等价类。例如,如果要求密码非空,则有效等价类为非空密码,无效等价类为空密码。
  4. 如果输入条件是一组值,且程序对不同的值有不同的处理方式,则每个允许的输入值对应一个有效等价类,所有不允许的输入值的集合为一个无效等价类。例如,如果级别的值是初级、中级、高级,则有效等价类应该有三个,分别为初级、中级、高级,无效等价类有一个,为其他任何级别。
  5. 如果规定了输入数据必须遵循的规则,则可划分出一个有效等价类(符合规则)和若干个无效等价类(从不同的角度违反规则)
  • 划分步骤
  1. 对每个输入和外部条件进行等价划分,画出等价类表,并为每个等价类进行编号。
  2. 设计一个测试用例,使其尽可能多地覆盖有效等价类,重复这一步直到其有效等价类被覆盖。
  3. 为每一个无效等价类设计一个测试用例。

在某一PASCAL语言版本中规定: “标识符是由字母开头,后跟字母或数字的任意组合构成。有效字符数为8个,最大字符数为80个。” “标识符必须先说明,再使用。” “在同一说明语句中,标识符至少必须有一个。”
要求: 1.用等价类划分的方法,建立输入等价类表;
2.选取足够多的测试用例,覆盖所有的等价类。