一、V&V:
Verification(验证):编码的正确性
Validation(确认):是否满足需求定义
二、遵循原则:
1、Good enough原则:投入与产出适当权衡
2、Pareto原则(80-20原则):80%BUG在分析、设计、评审极端可以被发现和修正,20%需由系统的软件测试来发现
3、尽可能早开展测试
4、在发现较多错误的地方投入更多的测试
5、同化效应
三、分类
可靠性测试:
1、完整性测试:评估测试对象的强壮性(防失败能力)、技术兼容性、资源利用率
2、结构性测试
基本测试:
1、BVT测试(编译检查测试):源码是否能正确编译成一个新的、完整可用的版本
2、冒烟测试:是否实现基本可测性要求
功能性测试:
1、配置测试:在不同软硬件配置上按预期运行测试
2、功能测试:按计划运行,提供需求的服务、方法或用例的测试
3、安装测试:在不同软硬件配置、不同条件(磁盘空间不足、电源中断)下按预期安装测试,主要关注:(1)安装过程是否必要?
(2)安装过程
(3)卸载
(4)升级安装
(5)安装后第一次运行
性能测试:
1、配置测试:通过被测试软件的软硬件配置进行测试,找到系统各项资源的最有分配原则,为系统调优提供重要依据。
2、竞争测试(并发测试):核实测试对象对多个主角请求相同资源处理是否可以接受的测试
3、强度测试:确保系统可在遇到异常条件时按预期进行
4、安全性测试:测试人员像黑客一样攻击系统,发现系统包含的安全漏洞
(1)网页安全漏洞的检测方法:代码审查、Web Developer工具
(2)SQL注入的检测方法:代码审查,看所有涉及SQL语句提交的地方,是否正确处理字符串
(3)命令注入:SQL注入是其中一种
(4)缓冲区溢出:尤其用C语言开发的系统
检测方法:尝试不同长度的数据输入、代码审查、AppVerifer工具
(5)整数溢出
(6)跨站脚本攻击(XSS):
①目的:盗走客户端cookies,或用于确定客户身份的敏感信息
②原因:Web应用程序从用户处获取输入,对输入字符串没验证就在页面显示
③检查方法:代码走查看Request、Response、字符串输入类型空间的处理代码
结合黑盒测试:字输入框输入脚本,检验web程序是否进行解释
6、压力测试:目的是找到系统极限点,在系统崩溃或性能指标不符时的点
7、负载测试:需多次测试,记录随并发的虚拟用户增加,系统的响应时间、内存使用、CPU等情况(在性能需求不明确时往往进行负载测试而不是压力测试)
8、容量测试:核实测试对象大于数据量的处理能力的测试
(1)估算软件系统的业务数据量和常用功能操作
(2)模拟生成业务数据量
(3)找到需要进行大数据量性能测试的功能模块
(4)分析功能模块要用到的数据库表,往表插入估算的数据量的业务数据
(5)把数据加载到软件系统进行功能测试
(模拟大批量数据方法:DataFactory工具、编写SQL插入数据库表、编程产生)
9、可靠性测试:给系统加载一定的业务压力(eg:CPU资源在70%-90%的使用率)的情况下,运行一段时间,检查系统是否稳定。
10、失效测试:检测系统局部发生故障,用户能否继续使用系统,用户受到多大影响
回归测试:
1.基于风险的回归测试:评估系统不同部分蕴含的风险,并专注于测试高风险处
评估风险:可能性(可能出错的机会)、影响(出错后会造成的影响程度)
探索性测试:
1.概念:强调测试人员的发散思维,在测试过程中运用获得的关于测试对象的信息设计新的更好的测试(适合需求不是很明确的测试任务,在复杂的测试情况、对产品了解极少的情况下特别有用)
单元测试:
1、依据是详细设计文档
2、以黑盒测试为主,核心模块或风险较高模块可以辅助使用白盒测试(检查代码)
3、多个模块可以同时并行进行测试
4、可能需要测试人员编写驱动模块和桩模块
驱动模块:模拟被测模块上一级模块的那个模块
桩模块:模拟被测模块下一级模块的那个模块
集成测试:
主要以黑盒测试为主,对于有bug的地方可以用白盒测试
系统测试:
1、在系统测试之前通常会有确认测试,需要确认
①系统是否值得一测(冒烟测试)
②确认相关文档是否齐全(尤其是交付给用户的文档)
验收测试(用户接受度测试):
1、alpha测试:在开发环境中,由最终用户(或内部人员)参与的测试
2、beta测试:在用户实际环境中,由最终用户参与的测试,一般就使用实际数据
四、AEP(自动错误预防):
1、5个步骤:识别错误、找出错误原因、定位产品产生错误的地方、执行预防措施来确保相同的错误不再出现、监视整个过程。把这5步骤用自动化的方式衔接并执行
五、软件测试的各个阶段(PDCA循环):
测试需求的分析和确定
测试计划
测试设计
测试执行
测试记录和缺陷跟踪
回归测试
测试总结和报告
六、需求规格说明书检查内容:
正确性、必要性、优先级、明确性、可测性、完整性、一致性、可修改性
七、项目的四个因素:
时间:项目计划
成本:合同
范围:需求文档
质量:QA计划或测试计划
八、自动化测试与手工测试
1.不宜在进度紧迫的项目中开展自动化测试
2.自动化测试不应过早进行,因为早期程序界面不稳定需频繁改动