软件测试导论
软件测试基础
需要学习的内容
了解软件生命周期
了解什么是软件测试
了解软件测试的目的
了解缺陷
研发组织和流程
1、什么是软件测试?
测试软件的bug;提升软件质量;验证软件的正确性;测试软件是否符合需求;测试软件是否符合客户隐形需求。
软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误的衡量软件质量,并对其是否满足设计要求进行评估的过程
2、软件测试的目的
1、找到软件的bug
2、证明软件可用
3、预防bug
测试的目的体现3个阶段
项目早期:开发对项目还不够熟悉,测试主要找致命或严重的bug
项目中期:整个项目比较稳定,测试证明软件是否可用
项目末期:软件的质量基本OK,可通过外部测试或者bug大少出找遗漏的bug
以下是软件生命周期
1,项目计划
项目计划是由谁来写的?项目经理(PM)
项目计划什么时候写的?项目启动之前写
项目计划里面包含的主要内容:who人员(做项目由哪些人) when时间(什么时间段做什么事情) what什么事情(做研发这个项目我们要做哪些事情)
2/需求分析
需求分析师由需求分析师来分析,需要分析客户具体想要的软件功能.界面以及不想要的比如错误处理等等
3/设计
设计是由系统架构是来设计的,需要输出需求规格说明书(SRS),概要说明书(HLD)
4/编码
编码是由谁来编的?开发工程师,要输出详细设计说明书(LLD),要写代码完成功能的实现,界面的开发等等
5/测试
测试由谁来测试?测试工程师,要执行测试检查实际结果和预期结果一致,检查需求或者设计是否由遗漏
6/维护
维护由谁来维护?技术支持工程师/维护工程师,需要做的事情,剥壳解决用户问题(bug),新增加需求,运维统计数据
缺陷
缺陷不仅仅指功能有问题,还要考虑许多问题
缺陷相关术语
错误:人为主观问题
缺陷‘:按正常操作了,但是结果返回的是错误
故障:当一个缺陷被激活,便产生了缺陷,比如闪退,崩溃,都属于缺陷
失效:故障不能很好的处理就可能导致失效
研发部门:
开发部(包含人员):需求分析师、系统架构师、设计人员(界面UI设计、美工、数据结构)、编码人员(开发)。
测试部(包含人员):测试工程师、测试开发工程师、QC质量管控(一般是由测试人员兼职)
质量部(包含人员):QA质量保证、CMO配置管理员
QA会监控:
1、监督输出成果物(文档、代码、帮助说明)等
2、各阶段任务完成的及时性
3、各种工作的规范性
CMO配置管理员:
1、管理配置库,所有的成果物存放的地方叫配置库
研发流程
1/瀑布模型:
优点:流程比较稳定/简单/清晰,整个研发的流程参考软件生命周期
缺点:测试接入太晚,没有办法预防bug
客户相对较晚才能看到软件系统
从开发的角度看,也希望尽快能跟客户确认软件是否符合客户需求的
2/螺旋模型:
把需求分阶段实现,每个阶段都遵循软件生命周期,每个阶段都由风险分析,避免分线
3/双V模型
(1)开发工作和测试工作是并行的
()测试设计顺序和测试执行顺序是相对的
()测试设计和测试执行时分离的,先设计,在执行
设计顺序:ST(系统测试)--->IT(集成测试)---> UT(单元测试)
执行顺序:UT(单元测试)--->IT(集成测试)--->ST(系统测试)
瀑布模型适合的项目,时间周期相对较短,需求编号不频繁的
螺旋模型适合的项目,时间不算长也不算短的,运行寻求有一点的变化
双V模型适合的项目,大型项目,时间周期相对较长,运行需求频繁变化
测试过程
理解软件测试的4个阶段和4个活动
1/单元测试
单元测试是指:正对代码最小单元进行的测试,最小单元类似函数或者类,参考LLD。
关注的是内部逻辑和函数功能
2/集成测试
继承测试是指内部模块与模块之间的接口,参考的文档时HLD,关注的测试内容一个是集成后的功能,第二个关注的是内部接口,(主要使用灰盒测试方法)
3/系统测试
系统测试是指:将所有模块集成成一个完整的系统,以完整的系统功能来进行测试,参考的稳定时SRS,关注的内容是需求中的所有特性是否实现,使用黑盒测试
4/验收测试
验收测试分为两种测试:正式验收和非正式验收,使用的是黑盒测试方法。
阿尔法测试:内部人员进行验收,内部人员包括:开发/测试/OA/项目经理或者特邀的客户。
测试环境:在受控的环境下,受控的意见在开发的电脑上进行测试
测试过程中:当有问题或者疑问的时候,开发可以立即定位和解答
贝塔测试:
在外部的人员进行验收,外部人员包括:客户亲自参与验收,实际的用户。
测试环境:在不受控的环境,不受控的环境下(在公网,inter网上)。
测试过程中:当有问题或者疑问的时候,没有开发人员可以立即定位和解答。
阿尔法测试和贝塔测试的区别:
1/阿尔法测试时在受控的环境下,由内部人员进行测试,并且发现问题理解得到解决
2/贝塔测试时在不受控的环境下,由外部人员进行测试,发现问题不能立即得到解决
单元测试针对软件系统的最小单元进行测试
集成测试考虑模块与模块之间的接口测试
系统测试,从需求的角度考虑每个需求都是否实现兵正确,还要考虑非功能系统指标比如:性能测试,可靠性能指标、安全、兼容、安装、升级,和用户使用手册等等。
验收测试主要让内部客户和外部客户对软件验收进行的一个测试
单元测试/集成测试/系统测试之间的关系:
1.从测试的深入系统的层次来讲:
最底层就是单元测试:
中间层的就是集成测试:
最上层的就是系统测试。
2.从测试难度和范围来讲:
1.单元测试最简单,也是范围最小的。
2.集成其次。
3.系统测试是最复杂,也是范围最大的。
回归测试:
1、验收开发是否吧bug修复的过程
2、再次验收软件已有的功能和旧的用来,是否引入新的缺陷
回归测试由分为完全回归测试和选择性回归测试
完全回归:在不考虑人力时间成本的情况下选择完全回归,因为质量更高。
选择性回归:时间紧张,回归bug是否修复,以及bug相关的功能,主要业务功能。如果考虑人力时间成本,那么只能选择 选择性回归。
到底是用完全回归还是选择性回归,由测试经理决策。
回归测试的选择回归测试,主要表现为三个方法:
1、覆盖修改发:正对发生错误的模块,选取这个模块的全部测试用例进行测试,只能验证本模块是否还存在缺陷,但不能保持周边与它有关联的模块不会应为这侧改动而引发缺陷。
2、周边影响发:除了吧出错模块的用力执行之外,还要吧与它相关联的模块用来也执行一遍,保证回归测试的质量。
3指标达成法:我们还可以从量化的角度来分析模块的质量,比如金国上面的一系列回归测试后,看看遗留的缺陷率是否以及在允许的范围之内了,那么我们以此为标准可以结束本次回归测试,在测试完成后,看看有没有达到既定的标准
测试的4个活动
1、测试计划
由测试经理来写,测试计划的主要内容:什么测试人员在什么时候测试什么内容,参考SRS
2、测试设计
有高级测试工程师来写测试方案,主要内容:怎么进行测试,需要使用什么方法,工具等,测试方案文档,参考测试计划、SRS。
3、测试实现
由普通测试工程师来写测试用例(testcase),需要参考的文档由测试方案、测试计划、SRS
4、测试执行
1、搭建环境
测试人员自己搭建测试环境,参考环境搭建说明文档(来源开发)
2、执行测试用例
参考测试用例进行执行测试
3、提交测试日报
当发现软件bug'后要提交缺陷报告,发现缺陷后立即提交缺陷报告,不要等到第二天或以后在提
4、提交测试日报、编写项目总结
测试日报是汇报你当前的工作内容(要有数据),遇到的问题,反馈风险等,方便你的测试经理控制项目进度以及解决问题和风险。项目完成之后测试经理会要求每个测试人员编写项目总结,总结项目里做的号的如何保持,做的不好的如何改进等等
5、提交测试报告
测试报告(软件项目的测试报告)测试经理来写的。
主要内容:多少人测试的、测试时间、发现bug、编写用例、执行的用例、存活的bug,没有修改完的bug,跟开发经理协商过的,需求分析师确认、证明软件可以发布
测试方法
了解黑、白、灰测试方法
了解静态、动态测试方法
了解人工、自动化测试方法
从测试方法分类:
黑盒测试方法
黑盒测试不关注内部的结果,指关注外部的输入盒输出,一般用于系统测试,集成测试,单元测试。
白盒测试方法:
白盒测试只关注内部的代码结构,不关注外部的输入盒输出,一般用于单元测试。
灰盒测试方法:
结合白盒测试的方法和黑河测试的方法叫灰盒测试,一般用于集成测试。测试时基于部分外在特性和部分内在信息,部分内部结构和部分外在功能。
白盒测试方法:
语句覆盖
判定覆盖
条件覆盖
判定条件覆盖
条件组合覆盖
路径覆盖
静态测试和动态测试:
1、凡是不运行代码进行的相关测试都叫静态测试:
(1) 对文档进行(SRS、测试计划开发,测试方案,HLD LLD,用户说明手册,帮助文档等等)
(2) 人工走读代码(检查是否逻辑正确)
(3) 静态检查工具扫描代码(扫描一些代码的安全漏洞,不规范的语法,包括代码注释率)属于自动化静态测试。
- 凡是必须要运行代码才能进行的测试都叫动态测试.
人工测试适合的范围:
需要智力和创造的工作。
自动化测试适合的范围:
适合简单、重复的工作。
自动化测试的优缺点:
1.优点:
1.效率高,成本(更)低,更好的可重复性
2.提升资源的使用率
3.不受时间限制
2.缺点:
1.测试类型单一, 内容不全
2.开发自动化的人员技能要求较高。
3.自动化测试不可能发现新缺陷,由于测试用例设计存在的不足会导致缺陷的遗漏
4.自动化测试不适用于中小型项目(周期短的),对于需求功能频繁变动的版本也是不适用的。
软件的缺陷:
1、软件缺陷定义:是指软件或程序中存在的各种问题及错误;(软件缺陷的存在会导致,软件产品在某种程度上不能满足用户的需求)
2、软件缺陷的判定标准:
a:软件未达到需求规格说明书中表明的功能
b:软件出现需求规格说明书指明不会出现错误的地方
c:软件的功能超出了需求规格说明书指明的范围
d:软件未达到需求规格说明书虽未指明但应该达到的目标
e:软件测试人员认为软件难以理解,不易使用,运行速度慢,或者最终用户体验不好: