本文是软件测试课程课堂笔记总结
大纲
软件bugs规范定义
1.功能缺失: Doesn’t do something it should do.
2.错误、缺陷:Does something it shouldn’t do.
3.功能冗余:Does something it doesn’t mention.
4.隐性需求的遗漏:Doesn’t do something it doesn’t mention but should.
5.用户体验:hard to use, slow,will be viewed by the end user as just plain not right.
IEEE定义软件bugs
1.Software Fault:A static defect in the software.软件中的静态缺陷.
2.Software Error:An incorrect internal state that is the manifestation of some fault.软件内部错误.
3.Software Failure:External, incorrect behavior with respect to the requirements or other description of the expected behavior.软件外部不符合预期要求的行为.
软件测试工程师的目标
1.Find Bugs
2.Find Bugs As Early As Possible
3.Make Sure Bugs Get Fixed
总结来说就是,尽快找到软件中的bugs并修复
软件开发生命周期模型
1.Big-Bang:大爆炸模型,最简单的软件开发模型
2.Code-and-Fix:边写边改模型,重复开发
3.Waterfall:瀑布模型,遵循Idea-Analysis-Design-Development-Test过程开发
4.Spiral:螺旋模型,重复的瀑布模型
5.Test-Driven Development:测试驱动开发,属于敏捷软件开发模型,在开发功能代码前先编写测试代码,只编写测试可以通过的功能代码来驱动整个开发过程的进行
软件测试模型——V模型
V模型:与瀑布模型开发相匹配,表明了测试过程中存在不同级别和测试与开发过程各阶段的对应关系
V模型优点
V模型指明了软件测试过程遵循Unit-Module-Integration-System-Acceptance过程,特别存在如下阶段
- Unit-Module-Integration阶段:检测程序是否满足软件设计要求
- System阶段:检测程序系统功能、性能质量是否达到系统要求的指标
- Acceptance阶段:软件实现是否满足用户需要或者合同要求
V模型缺点
将测试安排在需求分析、系统设计、编码后,忽视了测试对需求分析、系统设计的验证
软件测试模型——W模型
W模型:W模型在V模型基础上增加了同步进行的验证和确认,明确了测试与开发的并行性
W模型优点
1.测试伴随整个软件开发周期
2.测试对象除了程序增加了需求、设计、功能
3.一但有文档提供就要及时确定测试条件和编写测试用例
W模型缺点
1.开发和测试是线性前后关系相互制约,只有上一阶段结束才可以开始下一阶段
2.不支持迭代、自发性及变更调整
软件测试模型——H模型
H模型:强调软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发进行
软件测试模型——X模型
X模型:强调针对单独的程序片段进行分离的编码和测试,最后通过频繁的交接集成合成为可执行程序
宏观软件工程与软件测试关系
软件测试实现情况与准则
- It’s Impossible to Test a Program Completely:完全测试一个程序是不可能的,输入集、输出集、软件路径数量十分大,bugs还是feature是有主观性的
- Software Testing Is a Risk-Based Exercise:软件测试有成本风险,需要管理和明智地规避风险
- Testing Can’t Show That Bugs Don’t Exist:软件测试完成后不能保证软件无bug
- The More Bugs You Find, the More Bugs There Are:软件bug存在关联性
- The Pesticide Paradox:杀虫剂悖论,对软件进行越多的测试,那么该软件对软件测试人员的测试就越具有免疫力,让其他的人员来测试程序将有助于打破”杀虫剂悖论”
- Not All the Bugs You Find Will Be Fixed:修复bug有成本,需要权衡
- When a Bug’s a Bug Is Difficult to Say:软件说明书不详细或者软件较难理解
- Product Specifications Are Never Final:产品需求变更使得需要添加新的测试或者删除修改旧的测试报告
- Software Testers Aren’t the Most Popular Members of a Project Team:寻找错误的人不被欢迎
- Software Testing Is a Disciplined Technical Profession:软件测试是一门需要训练学习的技术
软件测试专有名词
Verification(验证):构建的产品正确吗?—评审
Validation(确认):是否构建了正确的产品?确认系统或部件是否满足需求,常需要用户参与—测试
SQA(软件质量保证):通过对软件产品和活动有计划进行评审和审计来验证软件是否符合标准的系统工程活动
测试与SQA:测试是SQA的一个环节,SQA以预防为主,测试以事后检查为主,SQA指导测试、监控测试