目录
前言
什么是软件测试
- 软件测试就是验证产品特性是否满足用户需求
- 开发软件是为了盈利,必须满足用户才会盈利
测试和调试的区别
- 目的 测试是为了找出软件中的错误,调试是找出错误并解决错误
- 人员 测试有测试人员和开发人员 调试只有开发人员(单元测试,集成测试)
- 阶段 测试是贯穿整个软件的生命周期 调试是在编码阶段
优秀的测试人员需要的能力
- 快速学习能力
- 沟通能力
- 文字能力
- 开发能力
- 掌握自动化技术 (项目测试+技术事务)
- 编写优秀的测试用例
- 探测性思维
- 责任感和抗压能力
- 对测试感兴趣
几个常见的名词
需求
- 满足用户的期望或者正式文档(合同,标志,规范)所具有的条件和权能,包含用户的需求和软件需求
- 用户需求:可以简单理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成 的任务。该需求一般比较简略。
- 软件需求:或者叫功能需求,该需求会详细描述开发人员必须实现的软件功能。
大多数公司在进行软件开发的时候会把用户需求转化为软件需求,开发人员和测试人员工作的直接依据就是软件需求- 需求是测试人员开展软件测试工作的依据,因为测试用例依赖于需求
需求的重要性
- 从软件功能需求出发,无遗漏的识别出测试需求是至关重要的,这将直接关系到用例的测试覆盖率
- 对于识别出的每个测试需求点,需要采用具体的设计测试用例的方法来进行测试用例的设计
如何才可以深入理解被测试软件的需求
- 在需求分析和设计阶段就开始介入,因为这个阶段是理解和掌握软件的原始业务需求的最好
什么是BUG
注意:以上说法是片面的,准确的来说: 当且仅当规格说明是存在的并且正确,程序与规格说明之间的 不匹配才是错误 当需求规格说明书没有提到的功能,判断标准以最终用户为准: 当程序没有实现其最终用户合理预期的 功能要求时,就是软件错误。测试用例
测试用例( Test Case )是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环 境、操作步骤、测试数据、预期结果等要素实例
为什么要设计测试用例
围绕着软件需求去设计测试用例,防止重复测试,原则:防止测试用例用过即弃
软件生命周期
- 需求分析:分析用户的需求是否合理,转换为软件需求,由产品经理完成(市场分析,技术分析..)->软件需求文档
- 计划:制定需求执行计划
- 设计:将需求细化成一个个子任务,进行技术设计(设计那些接口,采用那些技术)——>设计文档
- 编码:开发人员按照需求文档以及设计文档来进行编码
- 测试:测试人员参考调用用例来执行测试
- 运行维护:项目上线后对产品进行先上的维护 修复性维护,完善性维护 预防性维护
开发模型
瀑布模型
- 瀑布模型最主要的特点就是线性开发,就是一定要按照这些步骤执行
- 缺陷:不能去应对需求的变化 测试被后置 风险往往在后期才显现,因而失去了及早修正的时间 必须要有足够的时间预留给测试活动,否则测试不充分,从而直接把缺陷留给用户 可运行的产品很迟才能被看见
- 优点 : –强调开发的阶段性; –强调早期计划及需求调查;
- 适用场景 需求固定的小项目
- 但是它是其他模型的基本框架
螺旋模型
- 其基础还是瀑布模型,就是在瀑布模型每个阶段到下一个阶段添加了风险分析
- 逻辑模型引入了全流程的风险分析,每次分析完之后都会生成一个新的原型
- 适合那些规模庞大,复杂度高,风险大的场景
优点: – 强调严格的全过程风险管理。 – 强调各开发阶段的质量。 – 提供机会检讨项目是否有价值继续下 去。 缺点: 引入非常严格的风险识别、风险分析和风险控制,这对风险管理的技能水平提出了很高的要求。这需要人员、资金和时间的投入。 风险分析能力与产品遗留风险成反比增量和迭代模型
明确增量和迭代的区别
敏捷模型
敏捷宣言
scrum
- 三角色,五个会议
- 产品经理:收集用户的需求。编写需求文档,对产品负责的人
- 项目经理:负责召开各种会议,协调项目,为研发团队服务
- 研发团队:开发人员,测试人员,ui设计人员等
五个会议
例子
测试模型
软件测试v模型
- 每个开发阶段对应测试阶段
- 概要设计整体构建,框架
- 详细设计设计模块与模块之间的详细设计
- 集成测试和单元测试通常由开发人员来执行
- 特点:明确标注了测试的类型 明确标注了测试阶段和开发阶段之间的对应关系
- 缺点:测试任然是在开发之后才执行,测试后置
软件测试W模型
- 测试从需求阶段就开始介入了
- 缺点:1上一个阶段完成了下一个阶段才能完成 2开发模型和测试模型也保持着一种前后的线性关系
优点:有利于尽早地全面的发现问题。例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,显著减少总体测试时间,加快项目进度。- 重文档,重过程,不支持其敏捷模式