一、什么是软件测试?
软件测试是验证软件产品的特性是否满足用户需求。
软件测试是贯穿于软件的整个生命周期的。
二、测试和调试的区别
测试和调试主要有以下三点不同:
- 目的不同:测试只是为了找出软件中的缺陷;调试是为了发现缺陷并进行解决。
- 执行的阶段不同:测试贯穿于整个软件的生命周期;调试只是在编码阶段进行。
- 参与的角色不同:测试不仅有测试人员还会有开发人员的参与,像单元测试和集成测试等;但是调试只有开发人员参与。
三、软件测试的相关概念
1、需求
所谓需求就是满足用户需求或正式规定文档所具有的条件和权能,包含用户需求和软件需求。
- 用户需求:甲方所提出的需求,若没有甲方就是终端用户在使用产品是必须要完成的任务,用户需求一般比较简略。用户需求还要进行市场分析还技术分析来确定可行性。
- 软件需求:开发人员必须实现的软件功能,软件需求一般比较详细。
2、BUG
当且仅当规格说明书或需求文档存在并且正确时,程序与规格之间不匹配就会出现BUG
如果需求在规格说明不存在或者错误的时候,就最终以用户为准,当程序没有正确实现用户预期的需求功能时也会出现BUG.
对于BUG,应如何进行描述?
- 发现BUG的版本;
- 发现BUG的版本;
- 发现BUG的操作步骤;
- 预期结果;
- 实际结果;
- 以及BUG的类型、等级等。
公司一般会对BUG进行等级划分,例如:崩溃、严重、一般、和次要。
BUG的生命周期:
● New:新发现的Bug,未经评审决定是否指派给开发人员进行修改。
● Open:确认是Bug,并且认为需要进行修改,指派给相应的开发人员。
● Fixed:开发人员进行修改后标识成修改状态,有待测试人员的回归测试验证。
● Rejected:如果认为不是Bug,则拒绝修改。
● Delay:如果认为暂时不需要修改或暂时不能修改,则延后修改。
● Closed:修改状态的Bug经测试人员的回归测斌验证通过,则关闭Bug。
● Reopen:如果经验证Bug仍然存在,则需要重新打开Bug,开发人员重新修改。
3、测试用例
测试用例就是为了实现测试而向被测试的系统提供的一组集合,在测试用例中包含了测试环境(软件+版本号+操作系统)、操作步骤、测试数据和预期结果等等。
设计测试用例需要围绕软件需求。
设计测试用例的原则:避免用后即弃。
设计测试用例的目的:
有利于理清测试的思路,避免漏测和避免重复测试测试的问题。
四、 软件的生命周期
- 需求分析:进行软件开发之前,需要知道软件的需求,并且需要分析用户的需求是否合理。
- 计划:根据需求来计划软件开发的时间和人员等。
- 设计:将需求细化成小的任务,进行技术设计。
- 编码:按照需求和设计来进行编码。
- 测试:测试人员依据测试用例来对软件进行测试。
- 运行维护:项目上线之后对产品进行线上的维护,有修复性维护、完善性维护和预防性维护。
五、开发模型
1、瀑布模型
- 特点:线性的开发流程,不能应对需求的变化。
- 缺点:由于线性开发,测试后置导致风险在后期在暴露出来,不能及时纠正,还有预留给测试的时间短,测试不充分可能会把缺陷遗留给用户。
- 应用场景:需求固定的小项目。
瀑布模型是其他模型的基础框架。
2、螺旋模型
螺旋模型是在瀑布模型的基础上给每个阶段加上了风险风险分析,引入了全流程的风险分析,每次分析完之后都会生成一个新的模型。
缺点:时间耗费长,并且也耗费人力、财力等资源。
适用场景:规模庞大、复杂度高并且风险大的项目。
3、迭代模型
迭代模型就是先开发出一个基础版本(A、B、C),然后在基础版本上不断进行优化。
4、增量模型
假设有A、B、C三种需求,增量模型就是A、B、C三种需求相互独立并行去实现,如果A功能代码实现了就去测试A,如果B代码实现了就会测试B,不必等到所有需求的代码都完成了再去进行实现。
举一个通俗的例子:假设对画一幅人物肖像,对于迭代模型就是先勾勒出人的整体轮廓再进行染色等,而增量模型就是先画出人物脸部再来画身体等。
5、敏捷模型
敏捷模型中有一个敏捷宣言:
个体与交互重于过程和工具
可用的软件重于完备的文档 客户协作重于合同谈判
响应变化重于遵循计划
在每对比对中,后者并非全无价值,但我们更看重前者。
敏捷模型的特点:轻文档、轻流程、重目标和重产出。
敏捷模型中的scrum开发模式当前比较流行,scrum主要包含:
三个角色:
- 产品经理:收集用户的需求并编写需求文档,为整个项目负责。
- 项目经理:协调项目,为研发团队进行服务。
- 研发人员:包括测试人员和开发人员等。
五个会议:
- 发布计划会议:产品经理从需求池里面整理出需求,开展发布计划会议。
- 迭代计划会议:将需求进行细化成小任务,将这些任务进行人员的分配。
- 每日例会:团队成员汇报每天的任务进度,遇到的问题以及计划下一步的工作。
- 演示会议:团队展示本次迭代的成果。
- 回顾会议:对于本次的迭代总结经验并进行分析。
六、软件测试的生命周期
软件测试是伴随软件的整个生命周期的。
软件测试的生命周期:
需求分析->测试计划->测试设计、测试开发->测试执行->测试评估
需求分析阶段:对于用户查看需求逻辑是否正确,是否符合用户的需求以及行为习惯,对于开发人员考虑需求是否能够实现以及实现的难度。
测试计划阶段:指定测试计划,例如测试人员的安排。
测试设计、开发阶段:设计测试用例等。
执行测试:利用测试用例对软件进行测试。
测试评估阶段:测试人员需要记录测试,做好缺陷管理记忆测试的评估。
七、测试模型
1、V模型
特点:明确标注了测试的类型以及每个测试阶段对应的开发阶段。
缺点:测试后移,在编码结束后才进行测试。
2、W模型(双V模型)
缺点:
- 上一个阶段完成后下一个阶段才能进行;
- 开发模型和测试模型也始终保持着前后关系;
- 重文档、重过程,不适用于敏捷模型。