IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 精读-软件测试的艺术之模块测试及更高级别的测试 -> 正文阅读

[开发测试]精读-软件测试的艺术之模块测试及更高级别的测试

本文是关于精读书籍《软件测试的艺术》的一些学习笔记和分享

本书共有九章包括测试思想(心理,经济),代码检查,测试用例设计,模块测试更高级别的测试,调试,极限测试和因特尔应用系统的测试。

本文主要介绍了一些介绍了一些模块测试和一些更高级别的测试,并结合《软件测试》这本书对这两方面进行补充。

模块(单元)测试

模块测试的目的是将模块的功能与定义模块的功能过个说明或接口规格进行说明比较。

测试用例的设计方式

模块测试总体上是面向白盒测试的。具体的白盒测试方法已经在上一章节进行了讨论。在模块测试中主要需要模块的规格说明和模块的源代码。

  1. 列举出程序中所有的条件和判断
  2. 在得到数量较少的判断后,选择多重条件覆盖
  3. 对覆盖原则,设计充足的测试用例

增量(集成)测试及集成的顺序

非增量测试:先独立的测试每一个模块,然后再将这些模块组装成完整的程序

增量测试:将下一步要进行测试的模块组装到测试完成的模块集合中,然后在进行测试

对比:

  • 非增量测试所需的工作量量要多一点
  • 增量测试可以较早地发现模块中与不匹配接口、不正确假设相关的编程错误。
  • 增量测试会更容易一点
  • 增量测试会进行的更彻底
  • 非增量测试多占用的机器时间更少一点
  • 模块测试阶段开始时,如果使用的是非增量测试,就会有更多的机会进行并行操作(所有模块可以同时进行)

对比之后,基于计算机行业当前的趋势(硬件成本已经降低而且势必持续下去,硬件成功会不断增加,而人力成本和软件错误的的代价在不断增长),所以错误发现得越早,改正它的成本就越低。进而我们可以得到结论,增量测试要更好一点。

驱动模块是用来模拟被测试模块的上一级模块,相当于被测模块的主程序。它接收数据,将相关数据传送给被测模块,启用被测模块,并打印出相应的结果。

桩模块是指模拟被测试的模块所调用的模块,而不是软件产品的组成的部分。

自顶向下测试

自顶向下的测试是从程序的顶部或初始模块开始。自顶向下测试包含两种测试策略,分别是深度优先和广度优先。

广度优先:

测试顺序:A,B,C,D,E,F,G,H,I,J,K,L

深度优先:

?测试顺序:A,B,E,F,J,C,G,K,D,H,L,I

总体的测试策略就是:

  • 设计模块序列时应将这些关键模块尽早的添加进去
  • 应将I/O模块尽可能早的添加进来

自底向上测试

自底向上的策略开始于程序中的终端模块,是从系统层次结构图的最底层模块开始进行组装和集成测试的方式。对于某一个层次的特定模块,因为它的子模块(包括子模块的所有下属模块)已经组装并测试完成,所以不再需要桩模块。在测试过程中,如果想要从子模块得到信息可以通过直接运行子模块得到。

同样的如果我们可以将上面的图进行分解,找到相应的桩模块

对比:

优点缺点
自顶向下
  • 如果主要的缺陷发生在程序的顶层将会非常的有利
  • 早期的程序框架可以进行演示,可激发积极性
  • 必须开发桩模块
  • 桩模块要比最初表现更复杂
  • 再引入I/O功能之前,向桩模块中引用测试用例比较困难
  • 创建测试环境可能很难,甚至无法实现
  • 观察测试输出很困难
  • 使人误解设计和测试可以交迭进行
  • 会导致特定模块测试的完成延后
自底向上
  • 如果主要的缺陷发生在程序的底层将非常有利
  • 测试环境比较容易建立
  • 观察测试输出比较容易
  • 必须开发驱动模块
  • 知道最后一个模块添加进去,程序才形成一个整体

我们可以发现,无论是自顶向下还是自底向上都会各自的优缺点,所以有这一种“三明治”集成测试的方式可以分别利用这两种测试方法的有点。“三明治”集成测试通过分层将各自分层的部分可以分别采用自顶向下和自底向上的方法。

对执行模块测试的建议

当测试用例造成模块输出的实际结果与预期结果不匹配的情况时,存在两种可能的解释。要么是测试用例不正确,要么是模块存在错误。为了避免这样的混乱,我们在执行测试之前,应对测试用例集进行审核和检查。

使用自动化测试工具可以使测试过程中的枯燥劳动减至最低。

更高级别的测试

在更高级测试中,主要讨论了功能测试,系统测试,验收测试和安装测试。

功能测试

功能测试就是一个试图发现程序与其外部规格说明之间存在不一致的过程。这里外部规格说明就是一份从最终用户的角度对程序行为的精确描述。

功能测试通常是黑盒测试,所以在黑盒测试方法中等价类划分,边界值分析,因果图分析法和错误猜测的方法都很适用于功能测试。

系统测试

系统测试主要包括能力测试,容量测试,强度测试,易用性测试,安全性测试,存储测试,配置测试。兼容性/配置/转换测试,安装测试,可靠性测试,可恢复性测试,适用性测试,文档测试,过程测试等

1.能力测试

判断目标文档提及的每一项能力是否都确实得到实现。过程就是逐条语句地检查目标文档。此类测试常常可以在不适用计算机的情况下进行。

2.容量测试

使程序经受大容量数据的检验。由于容量测试显然需要大量的资源,鉴于对机器和工时考虑,不可进行过多的容量测试。

3.强度测试(压力测试)

强度测试就是使程序承受高负载或强度的检验。高强度是指在很短的时间间隔内达到的数据或操作峰值。强度测试适用于在可变负载下运行的程序,例如对于一些Web的并发量测试。

4.易用性测试

  • 易用性测试通常要考虑的问题:
  • 用户界面是否要根据用户的智力,教育背景和环境进行调整
  • 程序的输出是否有意义、不模糊且没有计算机的杂乱信息
  • 错误诊断是否直接
  • 整体的用户界面是否存在语法,格式,风格等问题
  • 在准确性要求高的环境中,输入中是否有足够的确认信息
  • 对于所有的输入,系统是否返回了某些即时确认信息
  • 程序是否包含过多或不太可能用到的选项
  • 程序是否易用

5.安全性测试

安全性测试是设计测试用例来突破程序安全检查的过程。

6.性能测试

描述为在特定负载和配置环境下程序的响应时间和吞吐率。注:设计测试用例来说明程序不能满足其性能标准

7.存储测试

描述程序使用的内存和辅存的容量以及临时文件或溢出文件的大小。同样,设计测试用例来证明这些存储目标没有得到满足

8.配置测试

一些配置的因素比如操作系统,数据库管理系统和信息交换系统等都支持多种硬件配置,包括不同类型和数量的I/O设备和通信线路,或不同的储存容量。

9.兼容性/配置/转换测试

对于一些涉及对现有系统的兼容以及从现有系统转换的过程,测试其兼容性目标和转换过程

10.安装测试

安装程序如果出现故障,会影响用户对软件的成功体验。所以测试安装过程是系统的一个重要的部分。

11.可靠性测试

可靠性测试是为了保证产品在规定的寿命期间内,在预期的使用、运输或储存等所有环境下,保持功能可靠性而进行的活动。进一步可以研究归纳断言的概念。

12.可恢复性测试

对系统如何从程序错误,硬件失效和数据错误中恢复出来的测试

13.适用性测试

帮助您的产品符合法律安全与性能要求,同时提高用户体验,满足当地生活习惯和消费习惯需求

14.文档测试

对用户文档的正确定,完整性和清晰性进行检查

15.过程测试

对多有依规定的人工过程,如系统操作员,数据库管理员或最终用户的操作过程进行测试。

验收测试

验收测试是将程序与其最初的需求及最终用户当前的需要进行比较的过程,该测试通常是由程序的客户或最终用户来进行。

测试的计划与控制

测试计划应包括:

目标:必须定义每个测试阶段的目标

结束准则:制定准则以规定每一个测试阶段何时可以结束

进度:每个阶段都须有时间表

责任:确定设计,编写,和验证测试用例的人和发现软件错误的人

测试用例库及标准:确定、编写以及存储测试用例的系统方法

工具:确定需要使用的测试工具

计算机时间:计划每个测试阶段所需要的计算机时间

硬件配置:描述特别需要的硬件配置或设备

集成:定义程序如歌组装在一起的方法(如自定向下的增量测试)

跟踪步骤:跟踪测试的方方面面,包括对错误易发模块的定位,以及有关进度、资源和结束准则的估计

调试步骤:制定上报已发现错误、跟踪错误修改进程以及修改部分加入系统中去的机制

回归测试:回归测试在对程序作了功能改进或进行了修改之后,判断程序的改动是否引起其他程序其他方面的退步。

测试结束准则

三个参考原则:

  1. 测试用例通过率
  2. 对错误的发现和修改进度
  3. 错误发现的频率

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-09-18 10:30:21  更:2021-09-18 10:30:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 20:57:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码