测试基础
测试是为了度量和提高被测试软件的质量,对测试软件进行工程设计、实施、维护的的整个生命周期过程
软件测试是对软件形成过程的文档、检查软件数据和执行程序代码的测试,而不仅是对程序进行的测试。
定义:使用人工或自动手段来运行或测试某个系统的过程。
目的:在于检验它是否满足规定的需求或是弄清预期结果实际结果之间的差别,评估软件的质量。
软件生命周期(SDLC,System Development Life Cycle,SDLC)是软件从开始立项到最终被废弃不用这个过程叫做软件生命周期,整个生命周期包括需求调研阶段–需求分析阶段(需求规格说明书)–设计(设计文档)–编码–测试–上线交付(部署到客户)–产品支持(运维)
RAD模型是软件开发过程中的一个重要模型,他通过开发和测试同时进行的方式来缩短开发周期,提高开发效率。
软件测试阶段
单元测试
针对软件基本组成单元(软件设计最小单元,函数、类)来进行正确性检验的测试工作
集成测试
是对单元之间及单元与第三方接口之间的测试,目的是验证接口是否与设计相符,是否与需求相符
集成策略:自底而上(驱动模型)、自顶而上(桩模块的开发)、渐增式(依次增加一个没有测试的模块一起测试)
是将集成好的软件系统与计算机硬件、外设、数据、和人员等元素结合在一起,在实际运行环境下,对系统进行一系列测试
确认测试(有效性测试)
验证软件有效性,验证软件功能和性能及其特性是否与用户一致,若达到则表明软件是合格的
验收测试
在交付客户部署前,根据合同、SRS、《验收测试计划》进行测试
由公司员工进行
由其他人(用户)进行
用户对软件的接受程度的测试,系统操作的可行性、使用感等
测试–返现bug–提交bug–修改bug–再次验证的过程
在软件的任意阶段都可以进行,发现缺陷,缺陷得到修复,修改之后的代码是否影响了之前的功能
回归测试策略:完全重复性测试、选择性重复性测试(覆盖修改法、周边影响法、指标达成法)
验证当前开发交付的版本可不可以进行后续的测试,基本功能能不能跑通
软件测试类型
功能测试
根据SRS 和测试需求列表,检验产品的功能实现是否符合产品需求
根据需求来测的功能
用来测试软件在集成系统中的运行性能(响应时间)
Cpu使用情况
IO使用情况
内存使用情况
信道使用情况
每个模块执行时间百分比
一个模块等待IO
是不断的对被测对象,施加负荷,观察被测对象在不同符合指标下的性能情况,验证系统的负载承受能力,并要求在超负荷情况下,依然正常实现业务功能。
调查系统在超负荷情况下的表现,找到系统运行的极限条件,关注在超负荷的情况下,速度有多快
容量测试
系统到底能够处理多大的数据量
安全测试
是指验证系统的保护机制在实际保护系统不受非法的侵入,保证数据的完整性和保密性。在受到恶意攻击时,设备的自我保护能力、防护能力等
系统的登录
用户管理
防火墙
系统数据
Web安全性,如Web的加密,解密、数字签名等
数据库的安全性
内部的通信协议
系统防病毒测试
对系统界面进行测试,界面设计与界面设计的吻合情况,确认界面处理的正确性
测试对象:简单界面元素:各种控件
组合类界面元素:复杂的界面元素,不如:工具栏,组合框、菜单栏。
完整界面(窗口):对话框、单文档窗口、多文档父窗口、多文档子窗口等
从用户角度看软件好不好上手。
问题:过分复杂的功能或者指令、困难的安装过程、误信息不准确或者过于简单、用户被迫记住太多信息、语法、格式和定义不一致
根据安装、卸载文档进行检查文档中的步骤能不能正确安装。不仅是找安装软件的本身的错误,还要找安装文档本身的错误
系统异常测试与系统的指标测试有关系。通过人工干预手段是软、硬件异常,验证异常前后的功能和运行状态,来检查系统的容错、排错和恢复能力。可靠性测试
目标是验证用户文档是正确的,并保证操作手册的过程能够工作
网络测试
在网络环境下与其他设备对接,进行系统功能、性能与指标方面的测试,保证对接正常
长时间运行后,系统的状况如何,系统平均无故障MTBF时间是否满足系统设计要求
验证被测对象与硬件、其他软件之间的兼容情况、不同的版本、机型、分辨率等
软件测试方法
白盒测试
是依据被测软件的内部结构设计测试用例,来对内部控制流程进行测试,可不顾整体功能的实现
不运行被测软件
运行被测软件
只考虑整体功能,不考虑内部具体实现,又称基于规格的测试
灰盒测试
典型的灰盒测试,比如:集成测试和系统测试
既利用被测对象的整体,又利用内部具体实现,采用灰盒
人工测试