软件工程复习之软件测试

软件测试技术

    • 经历的阶段(5个 考点)
    • 三种软件测试技术:
    • 软件测试的对象?
    • 软件测试目的?
    • 什么是软件测试?
    • 错误类型
    • 测试过程模型?
    • 软件测试技术??
    • 路径测试技术?
      • 控制流程图?
        • 注意:与程序流程图区别。
      • 测试策略???
        • 总结:
      • 路径选取与用例设计原则?
    • 黑盒测试技术??
      • 基于事务流的测试技术
        • 事务:
        • 事务流:
        • 事务流程图:
          • 事务流程图相关概念:
          • 事务流程图设计测试用例步骤:
      • 等价类法
        • 目的
        • 有效与无效等价类
        • 划分原则:
        • 设计用例步骤
        • 实例
      • 边值分析法
      • 因果图法
      • 生成测试用例步骤:
    • 软件测试步骤?
      • 单元测试:
        • 考虑模块4个特征:
        • 真题 2020年10月
      • 集成测试:
        • 两种策略:
      • 有效性测试:
      • 系统测试:

软件测试保证软件过程质量和产品质量的基础。动态评估技术。

经历的阶段(5个 考点)

  1. 认为软件测试和软件调试没什么区别
  2. 认为测试为了表明软件能正常工作
  3. 认为测试为了表明软件不能正常工作
  4. 测试是为了将已经察觉的错误风险降到一个可接受的程度
  5. 测试不仅仅是一种行为,而是一种理念。即测试是产生低风险软件的一种训练。

三种软件测试技术:

  • 基于程序路径的白盒测试技术
  • 基于需求规约的事务流测试技术(黑盒)
  • 等价类划分技术

软件测试的对象?

软件=程序+文档,测试对象就是 程序+文档

软件测试目的?

尽可能多的发现软件当中存在的错误。证明“软件有问题”。

什么是软件测试?

按照特定规程发现软件错误的过程。使用人工或自动手段,运行或测定系统的过程。目的是检验软件是否符合规定的要求,清楚了解预期结果与实际结果之间的差异。
与调试区别:

  • 测试是从一个侧面证明程序员的“失败”,调试证明程序员“正确”
  • 测试以已知条件开始,使用预先定义的程序且有预知的结果。调试一般是以不可知的内部条件开始,结果是不可预见的。
  • 测试要有完备计划,并要进行测试设计,调试不受时间约束
  • 测试要由第三方小组独立完成。在不了解软件设计的条件下完成。调试必须由了解详细设计的程序员完成。
  • 不太常考区别:
    • 测试是一个发现在错误,改正错误,重新测试的过程。调试是一个推理的过程
    • 测试的执行是有规程的,调试的执行往往要求 程序员进行必要的推理
    • 大多数测试的执行和设计可由工具支持,调试时,程序员能利用的主要是调试器。

错误类型

  1. 功能错误,处理功能说明不完整或不确切,致命编程时对功能有误解而产生的错误
  2. 系统错误,与外部接口错误、子程序调用错误、参数使用错误等
  3. 过程错误,算术运算错误和逻辑运算错误
  4. 数据错误,数据结构、实体、属性错误
  5. 编程错误,语法错误、程序逻辑错误、编程书写错误。

测试过程模型?

  • 测试设计,需要建立三个模型
    环境模型:对程序运行环境的抽象
    对象模型:从测试角度对程序的抽象
    错误模型: 对程序中的错误及其分类的抽象
  • 测试执行
  • 测试结果比较

软件测试技术??

分为人工测试和机器测试。机器测试又分为:
黑盒测试:也称为功能测试,只关注接口
白盒测试:逻辑测试或称结构测试

路径测试技术?

一种白盒测试技术
依据程序的逻辑结构
采用控制流程图来表达被程序的模型
合理的选择一组穿过程序的路径来达到某种测量度量。

控制流程图?

表示的程序控制结构图形,基本元素,过程块、结点、判定。

注意:与程序流程图区别。

  • 过程块:没有被判定或被结点分开的语句。
  • 判定:程序点,控制流出现分叉
    结点:也是程序点,汇聚的点,控制流进行了结合。
  • 链:过程块、判定、节点之间具有特定语义的关系。即画带箭头的线
    • 路径:由链组成。包含一串指令或语句,其长度是由链的数目决定。对软件测试而言,从程序入口开始,在出口结束

测试策略???

相关软考总结点软考考点之Mccabe度量计算及路径覆盖

  • 路径覆盖(PX):把程序所有路径都走遍。最强的测试度量。
  • 语句覆盖(C1):把程序中所有语句都执行一次。最低测试度量。
  • 分支覆盖(P2):把分支的每一种情况执行一次。也是语句。
  • 条件覆盖与条件组合覆盖:把条件中每一个条件都执行一遍。

总结:

语句覆盖 <= 分支覆盖 <= 条件组合覆盖 <= 路径覆盖

路径选取与用例设计原则?

最小的强制性测试需求是语句覆盖率。
路径选取原则:

  • 选择最简单的,具有一定功能含义的入口/出口路径。
  • 在已选取的基础上,选择无循环的路径,选取短路径,简单路径
  • 选取没有明显功能含义的路径,要研究该路径为什么存在,有没有必要存在。

黑盒测试技术??

基于事务流的测试技术

是一种功能测试技术

事务:

从系统用户角度出发所见到工作单元,有其“生”,有其“亡”。
事务由一系列操作完成,用“事务流”表达。

事务流:

系统行为的一种表示方法,为功能模型建立了程序的动作模式。

事务流程图:

表达系统行为,多个事务流的执行。

事务流程图相关概念:

并生:事务处理产生一个新事务,由此这两个事务继续执行
丝分裂:事务处理产生两个新事务。
汇集:事务的不同活动可以汇集到一处再重新开始
吸收:一个事务被另一个事务吸食
结合:两个事务结合后产生一个新事务。

事务流程图设计测试用例步骤:

获取事务流程图
浏览、复审
用例设计
测试执行

等价类法

根据程序I/O特性,把程序的输入划分为有限的等价区段,使得从每个区段内抽取的代表性的数据进行的测试等价于该区段内任何数据的测试。

目的

就是用少量的测试用例,取得较好的测试效果。

有效与无效等价类

有效等价类:指对于程序的规格说明来说,是合理的、有意义的输入数据集合。利用它,可以检验程序是否实现了规格说明预先的功能和性能。

无效等价类:对于程序规格说明来说,是不合理的、无意义的输入数据集合,这一类测试用例主要用于检查程序中功能和性能的实现是否不符合规格说明的要求。

划分原则:

输入条件规定了输入数据的取值范围,可以确定一个有效等价类和两个无效等价类
输入条件规定了输入数据的个数,可建立一个有效等价类和两个无效等价类
规定输入数据一组n个可能取的值,每一个输入就是一个有效等价类,所以可以确定n个有效等价类和一个无效等价类
输入条件是一个布尔值,可以划分一个有效等价类和一个无效等价类。
规定了必须符合的条件,可以划分一个有效等价类和一个无效等价类。
已划分某个等价类中各元素在程序中处理方式不同,则应将此等价类进一步进分为更小的等价类

设计用例步骤

  1. 为每一个等价类规定一个唯一的编号
  2. 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类。重复这一步,直到所有的有效等价类都被覆盖
  3. 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类。重复这一步,直到所有的无效等价类都被覆盖。

实例

一个程序读入3个整数,把这3个数值作为一个三角形的3条边的长度值,这个程序要打印出信息,说明这个三角形是不是等边的、是等腰的、还是一般的。”
分析:能构成三角形,必须满足:A>0,B>0,C>0,且A+B>C,A+C>B,B+C>A。
如果是等腰的,还有判断 A=B,或B=C,或A=C
如果是等边的,则需判断A=B且B=C且A=C
解决:

  1. 列出等价类,并编唯一的号
输入条件 有效等价类 无效等价类
是否三角形的3条边 (A>0), (1)
(B>0), (2)
(C>0), (3)
(A+B>C), (4)
(B+C)>A, (5)
(A+C)>B, (6)
(A<=0), (7)
(B<=0), (8)
(C<=0), (9)
(A+B<=C), (10)
(B+C<=A), (11)
(A+C<=B), (12)
是否等腰三角形 (A=B), (13)
(A=C), (14)
(B=C), (15)
(A!=B) and (B!=C) and (A!=C),(16)
是否等边三角形 (A=B) and (B=C) and (A=C),(17) (A!=B), (18)
(B!=C), (19)
(C!=A), (20)
  1. 设计测试用例
序号 【A,B,C】 覆盖等价类 输出
1 【3,4,5】 (1),(2),(3),(4),(5),(6) 一般三角形
2 【0,1,2】 (7) 不能构成三角形
3 【1,0,2】 (8) 不能构成三角形
4 【1,2,0】 (9) 不能构成三角形
5 【1,2,3】 (10) 不能构成三角形
6 【1,3,2】 (11) 不能构成三角形
7 【3,1,2】 (12) 不能构成三角形
8 【3,3,4】 (1),(2),(3),(4),(5),(6),(13) 等腰三角形
9 【3,4,4】 (1),(2),(3),(4),(5),(6),(14) 等腰三角形
10 【3,4,3】 (1),(2),(3),(4),(5),(6),(15) 等腰三角形
11 【3,4,5】 (1),(2),(3),(4),(5),(6),(16) 非等腰三角形
12 【3,3,3】 (1),(2),(3),(4),(5),(6),(17) 等边三角形
13 【3,4,4】 (1),(2),(3),(4),(5),(6),(18) 非等边三角形
14 【3,4,3】 (1),(2),(3),(4),(5),(6),(19) 非等边三角形
15 【3,3,4】 (1),(2),(3),(4),(5),(6),(20) 非等边三角形

边值分析法

根据I/O边界等价类上或紧靠边界的条件选择测试用例的更有效方法。

因果图法

因-输入条件和果-输出结果,通过因果图将功能说明转换成一张判定表,然后为每种输入条件的组合设计测试用例。主要内容:检查输入条件的组合
原因和原因之间的关系:、

E(互斥) 只能有一个成立
I(包含) 至少有一个条件成立
O(唯一) 有且仅有一个成立
R(要求) 当a出现时,b必须出现
M(屏蔽) 当a=1时,b必须是0,当a=0,b不确定

生成测试用例步骤:

  • 找出模块的原因(输入条件或输入条件的等价类)和结果
  • 分析原因与结果之间的对应关系,画出因果图
  • 在因果上标识出特定的约束和限制条件。
  • 把因果图转换成一个判定表。
  • 把判定表中的每一列作为依据来设计测试用例。

软件测试步骤?

按照与系统开发相反的方向来进行:

单元测试:

确保模块的逻辑和功能是否正确。逻辑用白盒测试,接口用黑盒测试。相关软考知识点:软考考点之单元测试

考虑模块4个特征:

  • 模块接口
  • 局部数据结构
  • 重要的执行路径
  • 错误执行路径
    为了测试接口,还要开发承接模块(被测试模块调用的模块)和驱动模块(调用测试模块的模块)

真题 2020年10月

在这里插入图片描述

集成测试:

模块之间接口的正确性,也就是模块之间的数据和控制传递。与单元测试是并行的。

两种策略:

  • 自顶向下,需要设计承接模块 ,相关软考考点软考考点之集成测试策略
  • 自底向上,需要设计驱动模块
    新加模块后,还要进行回归测试。

有效性测试:

软件实现功能和需求规约是否一致。采用黑盒测试。

系统测试:

放到硬件平台上,软硬件协调和配合。采用黑盒测试。

你可能感兴趣的:(自学考试,测试工具,单元测试)