软件测试知识分享-测试的基础理论(重点)--软件开发阶段划分
测试的基础理论(重点)
一、软件开发阶段划分
1、需求分析阶段
由需求分析师完成
产出物:《需求规格说明书》
2、概要设计阶段
3、详细设计阶段
由系统架构师(分析师)完成
产出物:《概要设计说明书》《详细设计说明书》
4、编码阶段
程序开发人员
产出物:程序(源代码)
问题:哪个阶段引入的bug最多?哪个阶段最少?
需求分析阶段引入bug最多,其次是设计阶段,编码阶段引入bug最少。
所以:1)测试工作不能只测程序,文档也要测
2)测试工作应该尽早介入,最好从需求分析阶段就开始,测试工作应该贯穿整个开发周期始终。(尽早测试原则和不断测试原则)
二、软件测试阶段划分
1、单元测试阶段
1)单元测试是最小的测试单位,一般是一个功能模块(方法),一个窗口,一个类等
2)主要依据是详细设计文档
3)单元测试是以白盒测试为主。(也有可能辅助以黑盒测试)
4)单元测试可能要求测试人员编写桩模块和驱动模块
驱动模块:模拟被测模块的上一级模块(调用被测模块的)
桩模块:模拟被测模块的下一级模块(被“被测模块”调用)
总结、;驱动模块-->被测模块-->桩模块
5、在实际工作中,单元测试往往由程序员完成(可以节约成本。但是测试测试质量不严格,质量没有保证,所以企业往往会1)交换测试 2)由测试人员再测一轮软件测试知识分享,双保险)
2、集成测试阶段(组装测试)
1)也叫组装测试,通常在单元测试的基础上将软件的功能模块逐步地组装在一起,执行测试的过程。
2)组装的过程一般是逐步完成的,会形成很多临时的版本。
3)集成测试是以黑盒(功能)测试为主,核心模块也会辅助以白盒测试
4)集成测试阶段主要依据的是概要设计文档
5)冒烟测试:也叫版本验证测试
拿到一个新版本后,一般先做“冒烟测试”,使用较少的人(1-3人,经验丰富),较少的时间(0.5-2天)对软件的核心功能进行快速测试,如果软件的核心功能没有问题,就全测试组投入全面测试,如果问题较多,版本不稳定,就打回开发组。
6)问题:在集成测试阶段,拿到一个新的版本时的基本工作思路?
--首先冒烟测试,决定该版本是否接受
--返测:对解决的bug,进行测试,验证bug是否已经解决
--回归测试(回测):对于上一个版本测过的功能,要再次测试一遍--验证修改了的代码和新加的功能对原有功能是否有影响,产生新的bug
--对该版本新加的功能进行测试(有些版本可能只是修复之前的bug,没有新功能)
3、系统测试阶段
1).整个功能全部完成之后,对集成了硬件、软件的完整系统进行的模拟真实环境的测试。
2).系统测试的重点:
(1)整个系统在模拟真实环境下能否正确运行
(2)系统的兼容性
3)系统测试阶段主要依据的是需求文档
4)系统测试全部为黑盒测试
5)在系统测试之前,一般会安排“确认测试”,主要确认:
A:该系统是否可以进入全面的系统测试阶段。
B:确认相关文档是否齐全,尤其是给用户的文档,参与认证评估的文档
说明:确认测试一般时间较短,参与人员较少。所以一般不把其与单元测试、集成测试、系统测试、验收测试所并列
4、验收测试阶段
UAT:User Acceptance Testing---用户接受度测试
1)由用户参与的检查过程
2)验收测试一般会分为两个小阶段:
A:alpha测试:在软件开发公司提供的环境中,由最终用户对软件进行检查。(实际情况一般是要么客户请第三方测试机构代替进行;要么软件公司替客户完成)
B: beta测试:在用户的实际环境中,由最终用户对软件进行检查。
例如:公共类软件(os、输入法、网络游戏等)一般把软件免费发放给最终用户,通过用户的使用收集bug。---公测版本
三、软件测试模型
1、软件测试模型表达的是测试阶段和开发阶段的对应关系
1)V模型(重点:面试频率高)
(1)会画
(2)优、缺点
优点:A:开发和测试阶段(级别)划分明确,对应关系明确
B:测试阶段既包含单元测试(专业级、代码级)又包含验收测试(用户级)
缺点:软件开发前期的需求和设计过程的测试阶段没有体现软件测试知识分享,容易造成误解测试只是开发完成后的收尾工作。没有体现出尽早测试原则和不断测试原则。
2)W模型(了解)
(1)可以看出是双V模型:第一个V是开发活动过程;第二个V是测试活动
(2)W模型加入了需求和设计的文档测试内容。
优点:体现出测试对象不仅仅是程序,需求和设计文档同样需要测试
体现出了尽早测试和不断测试原则
四、软件测试的分类
1、按测试技术划分:
说明:
1)、白盒测试一般对风险较大、难度较大的核心模块进行补偿测试
2)、白盒测试要求测试人员懂代码,测试效率较低。时间成本较高
3)、白盒测试也需要写测试用例
2、按是否需要运行代码划分:
不需要运行程序就能进行的测试
例如:界面测试、文档测试、静态代码测试:主要测试代码是否符合相应的标准和规范
使程序运行起来进行的测试(例如:功能/黑盒一般都是动态测试)
说明:白盒测试有可能是动态测试,也有可能是静态测试
问题:(静态)代码测试和白盒测试有区别吗?
白盒测试主要关注代码的逻辑功能,测试者必须懂代码,要求编写测试用例
代码测试主要关注代码的规范性,标志性,测试者可以不懂代码,也不用写测试用例,只要参考代码审查单即可。
3、按照软件的特性分类:
1)功能测试
A:任何软件必须先做功能测试,以保证其功能的正确性。
B:功能测试既可以手工测试,又可以借助自动化工具实现
2)性能测试
A: 性能测试主要针对分布式软件(B/S和C/S)
B: 性能测试必须要依赖于性能自动化测试工具
4其他(名词、术语)
1)、返测:对解决的bug,进行测试,验证bug是否已经解决
2)、回归测试:对于上一个版本测过的功能,要再次测试一遍--验证修改了的代码和新加的功能对原有功能是否有影响,产生新的bug。回归测试存在大量的重复性工作,所以可以使用自动化工具以提高测试效率。
3)、随机测试:(猴子测试)在测试用例执行完成之后,对软件进行随意测试的过程。随机测试只是时间充足时,对正常测试用例之外的补充测试
4)、兼容测试:指所设计的软件与硬件、软件之间的兼容性的测试。
主要分三类:
与整机兼容
与外设兼容
与操作系统兼容
与应用软件之间的兼容
不同浏览器的兼容
数据库的兼容
不同版本间的数据兼容
5)、软件项目的测试流程:
步骤1:需求(阅读、熟悉理解需求)
步骤2:制定测试计划
步骤3:用例设计(通过测试方法,设计合理测试用例)
步骤4:执行测试
步骤5:记录执行结果,如果有bug要记录缺陷
步骤6:跟踪、管理bug
步骤7:进行测试总结(报告)
6)、测试的策略:
就是将7种测试方法的应用场合说明出即可
总结:测试时通常不是一种测试方法,往往会将2-4种测试方法综合应用