软件测试基本概念
什么是软件测试
软件测试就是验证软件的功能是否满足用户的需求
一场考试,做完所有题目之后,进行一遍检查,就是“测试”;
买来一台电视,安装好之后打开试试能不能正常使用,这也是“测试”。
什么是需求
需求就是满足用户的期望或规定的文档(合同、规范、标准)所需要的条件或权限,通常包括用户需求和软件需求。软件需求从用户需求转化而来,用户需求转化为软件需求的核心是沟通。
用户需求:可以简单理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务。该需求一般比较简略。
软件需求:或者叫功能需求,该需求会详细描述开发人员必须实现的软件功能。软件需求是测试人员进行测试工作的基本依据
什么是BUG
当且仅当规格说明书(软件需求说明书)存在并且正确,程序和规格说明之间不相符合,称之为软件错误(BUG)。简单来说,就是当用户的需求存在并且合理,程序没有满足用户的需求,称之为BUG。
BUG的状态转换
BUG的生命周期
● New:新发现的Bug,未经评审决定是否指派给开发人员进行修改。
● Open:确认是Bug,并且认为需要进行修改,指派给相应的开发人员。
● Fixed:开发人员进行修改后标识成修改状态,有待测试人员的回归测试验证。
● Rejected:如果认为不是Bug,则拒绝修改。
● Delay:如果认为暂时不需要修改或暂时不能修改,则延后修改。
● Closed:修改状态的Bug经测试人员的回归测斌验证通过,则关闭Bug。
● Reopen:如果经验证Bug仍然存在,则需要重新打开Bug,开发人员重新修改。
无效的bug:open->closed open-rejected-closed
什么是测试用例
测试用例就是向被测试系统发起的一组操作集合,包含测试环境、测试数据、操作步骤、预期结果等。
测试用例的编写
开发模型和测试模型
软件开发的生命周期
需求分析 -> 计划 -> 设计 -> 编码 -> 测试 -> 运行维护
开发模型
瀑布模型
优点:
- 强调开发的阶段性;
- 强调早期计划及需求调查;
- 强调产品测试。
缺点:
- 依赖于早期进行的唯一一次
- 需求调查,不能适应需求的变化;
- 由于是单一流程,开发中的经验教训不能反馈应用于本产品的过程;
- 风险往往迟至后期的测试阶段才显露,因而失去及早纠正的机会
螺旋模型
适用于前期需求不明确,风险比较大,需求庞大的项目
优点:
- 强调严格的全过程风险管理。
- 强调各开发阶段的质量。
- 提供机会检讨项目是否有价值继续下去。
缺点:
- 引入非常严格的风险识别、风险分析和风险控制,这对风险管理的技能水平提出了很高的要求。这需要人员、资金和时间的投入。
增量模型
一个系统开发A,B,C,D四个业务模块,两周时间,第一周完成A,B两个模块,第二周完成C,D两个模块。
迭代模型
一个系统开发A,B,C,D四个业务模块,两周时间,第一周完成A,B,C,D四个模块,第二周补充完成复杂的业务功能。
敏捷模型
scrum里面的角色
scrum由product owner(产品经理)、scrum master(项目经理)和team(研发团队)组成。
product owner负责整理user story(用户故事),定义其商业价值,对其进行排序,制定发布计划,对产品负责。
scrum master 负责召开各种会议,协调项目,为研发团队服务。
研发团队则由不同技能的成员组成,通过紧密协同,完成每一次迭代的目标,交付产品。
scrum的基本流程
scrum的基本流程如上图所示:
- 产品负责人负责整理user story,形成左侧的product backlog。
- 发布计划会议:product owner负责讲解user story,对其进行估算和排序
- 发布计划会议的产出就是制定出这一期迭代要完成的story列表,sprint backlog。
- 迭代计划会议:项目团队对每一个story进行任务分解,分解的标准是完成该story的所有任务,每个任务都有明确的负责人,并完成工时的初估计。
- 每日例会:每天scrum master召集站立会议,团队成员回答昨天做了什么今天计划做什么,有什么问题。
- 演示会议:迭代结束之后,召开演示会议,相关人员都受邀参加,团队负责向大家展示本次迭代取得的成果。期间大家的反馈记录下来,由po整理,形成新的story。
- 回顾会议:项目团队对本期迭代进行总结,发现不足,制定改进计划,下一次迭代继续改进,已达到持续改进的效果。
特点
- 轻文档
- 轻流程
- 重目标
- 重产出
- 拥抱变化
软件测试的生命周期
需求分析 -> 测试计划 -> 测试设计(测试开发) -> 测试执行 -> 测试评估
测试模型
V模型
优点:
后期测试的每一个阶段对应前期开发的阶段,有明确的测试依据
缺点:
不利于项目前期风险的及时发现
W模型
特点:
测试的对象不仅仅是程序,还有需求、设计等
优点:
有利于项目前期的问题及时发现,避免造成后期开发完成之后才发现前期的问题
缺点:
阶段性比较强,不适用于敏捷开发