1.测试的定义
测试用于保证程序的正确性->发现程序的错误->使用人工或自动手段来运行或测量软件系统的过程,以检验是否满足需求以及发现与预期结果之间的差异;
2.五大要素&2个目标
人员,资源,技术,流程->软件质量
提高测试覆盖率,提高测试效率
3.软件分类
测试阶段
单元测试 | 最小的可测试单元:保证测试用例独立,一般由开发人员进行;单元测试框架Junit;依据详细设计 |
集成测试 | 在单元测试的基础上,组装成模块,子系统,系统中各部分是否达到标准,针对各个单元模块之间的接口; Big Bang :所有都组装好 自顶向下:主程序延控制层向下集成,需要桩模块; 自底向上(最常用):最底层模块向上组装 核心系统集成(敏捷) 高频集成(敏捷) 依据概要设计; |
系统测试 | 将经过集成测试的软件,作为系统中的一个部分,在实际运行环境下进行测试; 针对整个系统的功能和性能; |
验收测试 | 交付测试,针对用户需求交互流程进行的测试 用户验收测试(开发方),运行验收测试(运维),合同和规范验收测试 alpha测试:开发者提供的场所和环境 beta测试:在用户环境下进行 |
测试手段
黑盒测试 | 不考虑内部逻辑;界面/功能;测试覆盖率较低,自动化复用率低;主要用于系统测试; 是否有遗漏或不正确的功能;在接口上:输入输出;是否有数据结构或是访问错误;性能测试; 主要的方法:等价类划分,边界值划分法,错误推测法,因果图法,正交实验分析法,状态图前移法,流程图法 |
白盒测试 | 逻辑单位:语句,条件,条件组合,分支(判定覆盖),路径(可能的路径); 昂贵,无法检测遗漏的路径及数据敏感的错误,无法直接验证需求正确性; 主要的方法:代码检测法,静态结构分析,静态质量度量法,逻辑覆盖法,基本路径测试法 |
静态测试 | 无须执行被测程序,互审,走查,会议; |
动态测试 | 运行 |
手工测试 | 人工 |
自动化测试 | 测试工具 |
传统瀑布型 | 顺序,每一个阶段的输出作为下一阶段的输入 |
V模型 | 测试阶段与研发阶段一一对应 |
W模型(双V模型) | 加入测试设计 |
X模型 | 支持迭代 |
H模型 | 独立的测试流程 |
敏捷测试 | 不强调测试阶段,具备条件就进行测试; 预防缺陷终于发现缺陷; |
探索式测试 | 抛开脚本; 局部探索式测试;漫游式测试法; |
工具:QTP,silkTest,selenium(web 应用)
性能测试:验证系统能满足需求所要求的性能指标;
页面静态性能评估(Web应用):静态测试,Yslow, PageSpeed
负载测试:逐步增加负载,并记录性能表现,在正常指标范围下的最大
压力测试:在极限情况下的
稳定性测试:稍大于正常量的持续长时间的稳定性的情况
性能指标:并发用户数,吞吐量,响应时间,设备性能
工具:LoadRunner,Jmeter,Webload
安全测试:确保其符合产品安全需求和质量标准
渗透测试:模拟对软件系统的恶意攻击来评估系统安全性
测试工具:appscan,Webinspect,Nessus
兼容性测试:
软件本身的兼容性:新版本对历史版本的兼容
不同平台的兼容:多平台,浏览器内核兼容(BrowserShots)
软件对设备的兼容性
软件互操作的兼容性
文档测试:对用户手册等配套文档进行测试
可靠性测试:
软件可靠性:规定时间内规定环境完成规定内容
硬件可靠性:气候等环境因素因素的影响
易用性测试:
本地化测试:针对软件的本地化版本的针对性测试(语言,书写,时区,货币,风俗,法律法规)
部署测试:不同环境下的部署验证;
回归测试:软件功能修改后再测试确认没有引入新的错误或其他错误(关键模块,重点功能)
Monkey测试:随机操作软件测试系统健壮和稳定性
冒烟测试:用于确认代码中的更改按预期运行,不会破坏整个版本的稳定性。
AB测试:为页面提供两个版本给客户使用