基础
前言
一、概念
1.什么是软件测试?
软件测试就是验证测试软件功能是否满足用户的需求
(最终交付的产品是否和用户本来的需求一致;如果不一致则找出不同点)
2.软件测试和软件研发区别?
技能要求专业度:
软件研发:技能的要求专业度高,技能要求专一
软件测试:技能要求比较广泛,但是专业度不高
3.软件测试和软件调试区别?
软件测试:验证软件是否实现它的用户需求
软件调试:是开发人员验证软件是否实现他想让软件实现的功能
角色:
测试是由开发人员(白盒测试)和测试人员共同完成;
调试是由开发人员完成
阶段:
测试贯穿了整个软件开发的生命周期(需求->计划->设计->编码->测试->运维)
调试是在开发阶段
4.一个优秀的软件测试人员所具备的素质(你为什么选择测试岗位)
(1)综合能力:沟通能力,编程能力、学习能力、文字描述能力(BUG写清楚)
(2)自动化开发能力(开发自动化脚本和工具的能力)
(3)编写测试用例的能力
(4)探索性思维,发散思维
(5)兴趣
(6)责任感和压力
5.什么是需求?
一个软件如何诞生?需求->实现(软件)->上线使用
需求就是用户的期望或者满足文档(合同、标准、规范)所需要的条件或者权限
需求包含两个方面:一个是用户需求;一个是软件需求
用户需求:一般比较粗略概括,直接实现会有困难
软件需求:是从用户需求转化而来的,是用户需求的细化,使用户需求具体实现和规范
所以,需要软件需求把用户需求细节实现和规范,把用户需求变成一个具体的可实现的过程文档
软件需求是测试人员进行测试工作的基本依据
需求是软件测试的依据:验证需求,确保需求正确可实现。细化需求,从需求中提炼出一个个测试项
软件测试人员如何深入了解需求?
从需求分析阶段就开始介入了解需求(站在用户需求的角度)
6.测试用例
测试用例就是向被测试系统发起的一组集合,包括测试环境、测试数据、测试步骤、预期结果、(重要性、优先级、操作方式、标题等)
测试用例告诉我们测什么怎么测
优点:衡量需求的覆盖率;复用性,借鉴意义;可以用于回归测试;防止遗漏测试需求
7.什么是BUG(软件错误)
当且仅当,程序规格说明书(软件需求)存在并且合理。若软件功能和软件规格说明书不符合,我们就说是软件错误;当软件需求不存在,用户需求存在并且合理,软件功能和用户功能不相符合,就说明是软件错误
二、基础
1.开发模型(5个模型)
软件开发的生命周期:需求分析-计划-设计-开发-测试-运行维护
①瀑布模型
特点:阶段性强,每一个阶段比较独立;看重前期的需求分析和后期测试
缺点:测试在编码后才开始介入,导致前期问题后期才发现,会失去错误补救的机会
②螺旋模型
适合于项目庞大,风险大,不明确的项目
特点:强调每一个迭代的测试质量和风险分析
缺点:风险管控人力物力投入很多,成本比较大
③增量模型、迭代模型
同一个系统的四个模块A B C D 两周
增量模型:第一周开发A B 功能模块,第二周开发C D 功能模块
迭代模型:第一周开发A B C D的基础模块,第二周再在第一周的基础上完成其他的功能
二者特点:抗风险能力强,一般在增量模型的基础上使用迭代模型
⑤敏捷模型
个体与交互重于过程和工具,可用的软件重于完备的文档,客户协作重于合同谈判,响应变化重于遵从计划
特点:轻文档,轻流程,重目标,重产出
2.测试模型
①V模型
特点:每一个阶段独立性强,左边每一个阶段是右边测试阶段依据,和右边每一个测试阶段一一对应
缺点:瀑布模型的变种,所以编码后才进行测试,前期的错误后期才能发现,会失去错误即使纠正的机会
②W模型(双V模型)
特点:每一个阶段独立性强。测试一开始就介入,可以保证前期的问题及时发现和纠正。测试和开发并行的。
缺点:
每一个阶段都是串行的阶段。一个阶段结束后进去下一个阶段。(不支持敏捷开发(敏捷开发拥抱变化))