本文是软件测试课程课堂笔记总结
大纲
三大模型
- V Model
- W Model
- H Model
软件测试定义
FindbugsFind bugs as earlyas possible
Make sure bugs get fixed
静态白盒测试(Static White-Box Testing)
Static white-box testing is the process of carefully and methodically reviewing the software design, architecture, or code for bugs without executing it.
主要方法和形式为:走查(Walk Through),审查(Inspection),评审(Review)
Test-Driven Development(TDD,测试驱动开发)
TDD测试驱动开发的基本思想:在开发功能代码之前先编写测试代码
内容:在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。然后循环进行添加其他功能,直到完全部功能的开发
JUnit Framework
Bug Management Process
Software Maintenance(软件维护)
软件维护是指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程
类型:改正性维护、适应性维护、完善性维护、预防性维护
改正性维护(Corrective):在软件交付使用后,识别和纠正因开发时测试不彻底不完全遗留下来的隐藏错误
适应性维护(Adaptive):在软件交付使用后,修改产品以适应变化的外部环境或数据环境
完善性维护(Perfective):在软件交付使用后,开发产品以扩充软件功能、加强软件性能
预防性维护(Preventive):在软件交付使用后,提高软件产品的可维护性、可靠性,为进一步改进软件打下基础
Process of Software Configuration Management(软件配置管理计划)
步骤:配置管理计划、配置库管理、变更管理、版本管理、配置审计
Relationship Between Specification and Bugs
软件需求说明和bug之间的关系,即通过需求说明什么是bug
1.功能缺失: Software don’t do something Specification should do.
2.错误、缺陷:Software do something Specification shouldn’t do.
3.功能冗余:Software do something Specification don’t mention.
4.隐性需求的遗漏:Software don’t do something Specification don’t mention but Software should do.
5.用户体验:Software hard to use, slow,will be viewed by the end user as just plain not right.
Unit Test
- 模块接口测试:是单元测试的基础,检测数据正确流入、流出模块,如IO参数个数、次序、格式、文件属性等
- 局部数据结构测试:保证临时存储在模块内的数据在程序执行时完整、正确,如数据类型、变量初始化、变量名、溢出、地址异常
- 独立路径测试:通过全局数据发现因计算错误、比较错误、判断错误等造成的错误
- 错误处理测试:预设各种出错处理方案,如输出错误信息难以理解、异常处理不当等
- 边界条件测试:针对边界值及其左右设计测试用例,可能发现新的错误
单元的内部结构:单元的逻辑和数据流,一般采用白盒测试
单元的外部结构:单元的功能和可观测行为,一般采用黑盒测试
白盒测试路径测试法
步骤:
- 根据程序画出程序框图(判断用菱形,流程用箭头直线),将框图中每个语句框标上序号
- 根据程序框图画出程序流图(均用圆形表示语句),注意若程序框图中某些语句框仅有一个流程流出需要与下个语句框合并
- 计算环路复杂度=区域数量=流图边数-流图节点数+2=流图判定节点数+1
- 计算独立路径集,个数等于环路复杂度
- 根据独立路径设计测试用例
黑盒测试等价类划分
步骤:
- 根据规定的输入文本,提取出输入条件
- 根据输入条件,划分出有效等价类和无效等价类,并编号
- 根据每个编号编写测试用例
Driver(驱动模块)
模拟被测模块的上级模块
驱动模块在集成测试中接受测试数据,把相关的数据传送给被测模块,启动被测模块,并打印出相应的结果
Stub(桩模块)
模拟被测模块工作过程中所调用的模块
桩模块由被测模块调用,它们一般只进行很少的数据处理,例如打印入口和返回,以便于检验被测模块与其下级模块的接口
Acceptance Testing(验收测试)
在软件产品完成功能测试和系统测试之后、产品发布之前所进行的软件测试活动,是技术测试的最后一个阶段,也称为交付测试
Version Control(版本控制)
版本控制就是管理在整个软件生存周期中建立起来的某一配置项的不同版本。
在软件工程过程中所涉及的软件对象都要加以标识。在对象成为基线以前可能要做多次变更,在成为基线之后也可能需要频繁地变更。这样对于每一配置对象可以建立一个演变图,以方便记叙这个对象的变更历史
Testcase(测试用例)
1.满足特定目的的测试数据、测试代码、测试规程的集合
2.是发现软件缺陷的最小测试执行单元
3.有特殊的书写标准和基本原则
Relation between Costs of Bugs and Time
SQA and Software Testing
- SQA 是管理工作、审查对象是流程、强调以预防为主
- 测试是技术实施工作、测试对象是产品、主要是以事后检查(文档、程序)为主
- SQA指导测试、监控测试
- 测试为SQA提供依据
- 测试是SQA的一个环节、一个手段
Stress Testing(压力测试)
压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。
压力测试是在一种需要反常数量、频率或资源的方式下,执行可重复的负载测试或强度测试,以检查程序对异常情况的抵抗能力,找出性能瓶颈
包括:稳定性压力测试和破坏性压力测试
LoadRunner(压力测试工具)
步骤:
- Virtual User Generator创建虚拟用户脚本
- 中央控制器(Controller来调度虚拟用户
- 运行脚本开始测试
- 分析scenario方案得出测试结果