【软件测试】第三章·软件测试基本方法(缺陷模式、模型、形式化测试方法)
🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏:🏀软件测试与软件项目管理_十二月的猫的博客-CSDN博客💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光
目录
1. 前言
2. 回顾
3. 基于缺陷模式的测试
4. 基于模型的测试
4.1 功能图法
4.2 如何设计测试用例
5. 基于形式化方法的测试
6. 总结
1. 前言
考试前猫猫又开始更新考试科目了(也就是开始学了bushi)。本学期更新的科目有:
- 软件测试
- 软件项目管理
- 爬虫和Web数据管理
- 数据可视化
本系列【软件测试】将针对软件测试的基础知识进行拆分讲解,既是对自己学习的一次巩固也想为后面学习的猫友们提供一些帮助。如果大家有空可以点个免费的赞和收藏呀~~你的鼓励真的对猫猫很重要。
2. 回顾
软件缺陷是软件质量的对立面:软件质量有好几个因素包括功能、可靠、易用、可移植、可维护等。软件缺陷就是其反义词。
软件缺陷是什么:从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题;从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。
软件测试的分类:层次/对象(单元测试、集成测试、系统测试、验收测试)、类型(功能测试、安全性测试、可靠性测试等)、方法(静态测试和动态测试、黑盒测试和白盒测试等)
静态测试和动态测试:看是否运行可执行软件(静态仅仅看需求、设计文档和代码)
主动测试和被动测试:主动(测试人员主动操作被测对象,获得被测对象的响应情况)、被动(测试人员被动地监视在实际环境中运行的系统,从而获得系统数据)
黑盒测试和白盒测试:黑盒(不看具体代码,仅仅是输入数据看其输出数据是否正确)、白盒(允许看实际的代码)
软件测试的流程:测试需求分析、测试计划与设计、执行、结果评估
基于需求的测试方法:软件肯定是要满足用户的需求,因此基于需求出发去做软件测试肯定是最重要且必要的方法。具体方法有:等价类划分+边界值分析、判定表、因果图、Pairwise法、正交法。
基于逻辑覆盖和路径覆盖的测试方法:如果说前面的基于需求测试方法是黑盒测试,那么这两个方法就是白盒测试的典型代表。路径覆盖是相当全面(唯独缺少对条件的逻辑测试)的测试方式但是测试工作量很大;逻辑覆盖工作量相对较小,同时考虑了对条件的逻辑测试。路径覆盖中重要的方法是基本路径覆盖;逻辑覆盖中重要的方法有语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖。
3. 基于缺陷模式的测试
- 预处理/预编译
- 词法分析(LexicalAnalysis)
- 语法分析(Parsing)和语义处理(SemanticAnalysis)
- 抽象语法树生成
- 控制流图生成
- IP扫描
- 人工确认
4. 基于模型的测试
基于模型的测试(MBT,Model-basedtesting):通过构建能够正确描述被测软件系统功能特性的模型,然后基于这个模型产生测试用例并执行这些测试用例的过程。
具体实施流程:
- 为被测试系统(SUT)建模
- 基于模型产生测试用例
- 将抽象的测试具体化使测试用例具有可执行性
- 执行测试
- 分析测试结果
这个方法最难的地方就是如何根据被测对象建立能够正确描述其功能特性的模型。
4.1 功能图法
描述被测对象功能特性包括静态描述和动态描述。动态描述中一个很重要的方法就是功能图法,由状态迁移图(statetransitiondiagram,STD)和逻辑功能模型(logicfunctionmodel,LFM)构成。
状态迁移图
状态迁移图,描述系统状态变化的动态信息一一动态说明,由状态和迁移来描述,状态指出数据输入的位置(或时间),而迁移则指明状态的改变:
4.2 如何设计测试用例
功能图法是综合运用黑盒方法和白盒方法来设计测试用例,即整体上选用白盒方法一一路径覆盖、分支和条件覆盖等,而局部上选用的是黑盒方法一一决策表或因果图方法。
5. 基于形式化方法的测试
形式化方法:基于数学的方法(数学表示/精确的数学语义)来描述目标软件系统属性的一种技术。
形式化描述:
具体流程:
- 形式化描述
- 形式化开发
- 形式化验证
形式化开发:
形式化描述:
6. 总结
本篇的内容相对于前面两篇来说并没有那么重要,仅仅作为软件测试基本方法中的一个补充。重点讲了基于模型的测试方法、基于故障模式的测试方法以及基于形式化的测试方法。
如果想持续关注【软件测试】和【软件项目管理】系列文章,可以订阅:
- 软件测试与软件项目管理_十二月的猫的博客-CSDN博客
如果想学习计算机其他方面的核心知识(都是猫猫的优质好文哦),可以订阅:
- 计算机网络_十二月的猫的博客-CSDN博客
- 软件工程与面向对象_十二月的猫的博客-CSDN博客、
- 操作系统与数据库_十二月的猫的博客-CSDN博客
- 编译原理_十二月的猫的博客-CSDN博客
- 算法启示录_十二月的猫的博客-CSDN博客
如果觉得本文对你有帮助,友友们可以点个赞,收个藏呀~