【软件测试】软件测试的相关概念
-
什么是软件测试?
验证软件的功能是否满足用户的需求 -
软件测试的目的和原则
目的:验证软件有没有问题
原则:以客户为中心,遵循软件测试的规范,流程,标准和要求 -
什么是需求
满足用户的期望或者正式规定的文档(标准,规范,合同)所需要的条件或者权能。包含用户需求和软件需求 -
什么是bug
① 当且仅当**规格说明书(软件需求说明书)是存在的并且正确时:程序与规格说明之间不相符合是错误;
② 当没有需求规格说明书的时候:当用户的需求存在并且合理,程序没有满足用户需求,就是软件错误** -
测试用例的概念
测试用例是为了实施测试而向被测试系统发起的一组操作集合:包含测试环境,测试数据,操作步骤,预期结果等(一般从测试的标题,测试的功能模块,前提条件,重要性这几方面下手)比如说:网易邮箱的登录测试用例
① 标题:网易邮箱登录测试用例
② 功能模块:登录模块
③ 前提条件:已有注册账户
④ 重要性:重要
⑤ 测试环境:hp win10系统 Chrome浏览器
⑥ 测试数据:用户名,密码
⑦ 操作步骤及预期结果:
操作步骤 | 预期结果 |
---|---|
打开网易登录页面 | 进入网易登录页面 |
输入正确的用户名和密码 ,点击登录按钮 | 登录成功 |
- 开发模型 和 测试模型
-
软件的生命周期:需求分析,计划,设计,编码,测试,运行维护
-
软件开发模型
① 瀑布模型(线性顺序进行的软件开发模式)
瀑布模型是所有其他模型的基础框架。他的每个阶段都只执行一次,因此是线性顺序进行的软件开发模式。
优点:强调开发的阶段性;强调早期计划及需求调查;强调产品测试
缺点:风险往往到后期的测试阶段才显露,因而失去及早纠正的机会② 螺旋模型(渐进式开发模型的代表之一)
适合前期需求不是很明确,并且有一定风险的项目
优点:强调风险把控
缺点:对风险管理的技术水平要求很高,对人员,资金,时间的投入大③ 增量模型,迭代模型
增量和迭代的区别点:
比如说一个项目分为ABCD四个板块,要求两周完成:
增量模型:第一周完成AB两个业务模块板块,第二周完成CD两个业务模块板块
迭代模型:第一周完成ABCD的基础板块,第二周完成ABCD的复杂业务功能优点:抗风险能力强,迭代模型抗风险能力强于增量模型
④ 敏捷开发(常考)
个体与交互重于过程和工具
可用的软件重于完备的文档
客户协作重于合同谈判
响应变化重于遵循计划
在每对比对中,后者并非全无价值,但我们更看重前者敏捷开发的一种 ----- scrum
-
特点:
- 轻文档轻流程,重目标重产出
- 轻量级的开发过程,迭代时间短,参与人数少
-
scrum的角色:
PO (product owner):客户的代表,和客户沟通,把客户的需求转化为user story
SM (scrum master):scrum流程的保障者,组织,主持各种会议
ST (scrum Team):研发团队,各种技能的人员组成,完成迭代的目标 -
scrum的基本的工作流程:
1. 发布计划会议:由PO对用户需求整理成user story,然后对user story进行排版,确定出本期要进行完成的user story
2. 迭代计划会议:SM召集ST细分任务,形成小的任务,确认具体开发人员和完成时间
3. 每日站会:总结昨天的工作,碰到的问题,今天的计划
4. 演示会议:向用户演示迭代的成果,客户提出问题,PO把用户的合理建议整理成user story放到下一次迭代中
5. 回顾会议:复盘,回顾本次迭代,对不好的地方改进
敏捷开发中的测试:
特点:- 轻文档,轻流程,重目标,重产出 拥抱变化
- 削弱了测试用例的作用,进行探索性测试(用思维导图的方法)
-
特点:
-
软件测试模型:
① V模型(瀑布模型的变种)
java中的单元测试框架是junit,一般用白盒测试
一般集成测试用的是黑盒测试
局限性:只对程序进行测试,未对需求进行验证
特点/优点: 后期测试的每一个阶段对应前期开发的阶段,有明确的测试依据
缺点: 不利于项目前期风险的及时发现
(由于是编码之后才进行测试,所以系统前期出现的风险/缺陷没能及时发现,导致后期才可能发现问题,此时如果需要修改就要重新返工)② W模型(双V模型)
第一个V开发交付阶段
第二个V测试时间在每个阶段要做的事
特点:
测试的对象不仅仅是程序,还有需求,设计等
优点:
有利于项目前期的问题及时发现,避免造成后期开发完成后才发现前期的问题
缺点:
阶段性比较强,不适用于敏捷开发(因为敏捷开发是拥抱变化的)