第2章软件测试基础
1、软件测试和软件质量
软件测试:在规定条件下对程序进行操作,以发现错误,对软件质量进行评估
软件质量:软件特性的总和,软件满足规定或潜在用户需求的能力
2、软件测试和质量保证的区别
1)、QA主要着眼于软件开发活动中的过程、步骤和产物,而不是对软件进行剖析找问题或评估
2)、软件测试关心的不是过程的活动,而是对过程的产物以及开发出的软件进行剖析
3、软件测试的目的
以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。
4、软件测试原则
1)、所有的软件测试都应追溯到用户需求
2)、应把“尽早地和不断的进行软件测试”作为测试者的座右铭
3)、完测试是不可能的,测试需要终止
4)、测试无法显示软件潜在的缺陷
5)、充分注意测试中的群集现象
6)、程序员避免测试自己的程序
7)、尽量避免测试的随意性
5、软件测试对象
程序,数据和文档
6、测试分类
1)、按开发阶段划分
单元测试、集成测试、确认测试、系统测试、验收测试
2)、按实施组织划分
开发方测试(a测试)、用户测试(B测试)、第三方测试
3)、按照测试技术划分
白盒、黑盒、灰盒
7、V模型
定义:是软件开发瀑布模型的变种,主要反映测试活动与分析和设计的关系
局限性:把测试作为编码后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现
8、W模型
定义:在V模型的基础上,增加了开发阶段的同步测试,形成W模型;测试与开发同步进行,有利于尽早的发现问题局限性:仍把开发活动看成是从需求到编码结束的一个串行过程,只有完成上一阶段活动后,才下进行下一阶段活动,不支持迭代、自发性变更调整。
9、H模型
定义:在H模型中,软件测试过程活动完全独立,贯穿于整个产品的周期,与其它流程并发的进行,某个测试点准备就绪,就可以从测试准备阶段进行到测试执行阶段;软件可以尽早的进行;软件测试可以根据被测产品的不同分层进行。
10、 模型使用
V模型:强调了在整个项目开发需要经历的若干个测试级别,并与每一个开发级别相对应;忽略了测试对象不应该仅仅包括程序,没明明确指出对需求、设计的测试。
W模型:补充了V模型中忽略的内容,强调了测试计划等工作的先行和对系统需求与系统设计的测试,与V模型相同,没有对软件测试的流程进行说明。
H模型:强调测试是独立的,只有测试准备完成就可以执行测试
11、软件生命周期测试策略
1)、测试信息流:软件配置、测试配置、测试工具
2)、分析设计阶段:分析阶段是评审与测试相结合,包括需求说明书评测、概要设计说明书评测、详细设计说明书评测以及软件编码规范评测
3)、开发阶段:
单元测试:针对软件设计的最小单位(程序模块),进行正确性检验的测试工作
目的:发现各模块内部可能存在的各种差错
测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试
集成测试:在单元测试的基础由,需要将所有模块按照概要设计说明书和详细设计说明书的要求进行组装。
测试方式:一次性组装方式、增殖式组装(自顶向下、自底向上)
组装时需要考虑的问题:
穿越接口的数据是否会丢失;一个模块的功能是否会对另一个模块的功能产生不利影响;各子功能组合起来能否达到预期的父功能;全局的数据结构是否有问题;单个模块的误差积累起来是否会放大以至达到不能接受的程度。
集成测试完成的标志:成功地执行了测试计划中规定的所有集成测试;修正了发现的错误;测试结果通过了专门的小组评审。
确认测试:是验证软件的功能和性能及其他特性是否与用户的要求一致。包括有效性测试和软件配置复查
系统测试:将通过集成测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际或者模拟运行(使用)环境下,对计算机系统进行一系列测试。
目的:通过与系统的需求定义作为比较,发现软件与系统定义不符合或与之矛盾的地方
验收测试:以用户为主的测试
12、软件失效分类
软件错误:在软件生存周期内不希望或不可能接受的错误
软件缺陷:存在软件(文档、数据、程序)之中的那些不希望或不可接受的偏差
软件故障:软件运行过程中出现的一种不希望或不可接受的内部状态。
软件失效:软件动行时产生的一种不希望或不可接受的外部状态
13、白盒测试
通过检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能接预定要求正确工作。静态方法和动态方法
14、黑盒测试
通过测试来检测每个功能是否能正常使用。主要针对软件界面和软件功能进行测试。
发现以下错误:功能不正确或遗漏、界面错误、数据库访问错误;性能错误、初始化和终止错误
15自动化测试
自动化测试就是通过测试工具或其他手段,按照测试工程师的预定计划对软件产品进行自动的测试。
16、自动化测试的优势
提高测试质量;提高测试效率;执行手工测试不能完成的测试任务;更好的重现软件缺陷的能力;更好的利用资源;增进测试人员与开发人员之间的合作伙伴关系;
17、自动化测试的局限性
定制型项目;周期很短的项目;业务规则复杂的对象;人体感观与易用性测试;不稳定的软件;涉及物理交互
18、自动化测试工具的分类
负载压力:LoadRunner,QALoad,E-Test Suite
功能测试:WinRunner,QARun
白盒测试:PRQA,DevPartner
网络测试:---
测试管理:TestDrector,TestManger
19、选择自动化工具从几方面来权衡
功能;价格;测试工具的长期设资考虑
20、功能自动化测试
采取录制回放的方式来模拟用户的实际操作。
测试工具采取两种录制模式:环境判断模式,模拟模式
操作步骤:创建脚本;调试脚本;执行脚本;结果分析
21、负载压力自动化测试
采用联机事务处理方式的数据库应用、WEB应用和初步点播应用等系统。
录制回放模式:进程回放模式、线程回放模式
操作步骤:协议选择、创建测试脚本、参数化测试数据、创建虚拟用户、执行测试、结果分析