软件测试基础
软件错误:软件系统的功能和性能与预期的功能和性能不一致。
软件测试: 是发现软件错误的过程。
IEEE定义软件测试:使用人工或自动的手段,运行或测定某个系统的过程,其目的是检验它是否满足规定的需求,或是清楚了解预期结果与实际结果之间的差异。
测试方案:测试目的、测试数据和预期结果
测试用例(Test Case):测试数据和预期结果
注意:软件测试不能用于证明软件没有错误。测试就是为了发现错误而执行程序的过程;好的测试方案是可能发现了至今尚未发现的错误的方案;成功的测试是发现了至今尚未发现错误的测试。
1:所有测试都应该能追溯到用户需求;:
2:在测试开始前制定测试计划;
3:把Pareto原理应用于软件测试:80%的错误很可能是由程序中20%的模块造成,应该孤立这些模块重点测试。
4:从“小规模”测试逐步扩大到“大规模”测试:单个模块-> 子系统-> 整个系统;
5:包含所有情况的穷举测试通常是不可能的;彻底测试程序是不可能的;测试只能表明软件中存在错误;测试不能表明软件中不存在错误。
6:为达到“最佳测试效果”,应由独立的第三方承担测试工作。
从测试设计方法(设计测试数据的方法)分类:黑盒测试(功能性测试),白盒测试(结构性测试)
从测试是手动还是自动分类:手动测试(人工走查(Walkthroughs)+代码审查(Code Inspections));自动测试(利用自动化测试工具将大量的重复性工作交给计算机去完成)
从测试目的分类:功能测试:单元测试(单个模块测试)、集成测试(子系统测试(多个模块测试,着重测试模块间的接口和交互)、系统测试(全部模块测试))、确认测试也称验收测试(Alpha 测试(软件测试人员在真实用户环境中对软件进行全面的测试)、Beta 测试(真实的用户在真实的用户环境中进行的测试, 也叫公测))。非功能测试:压力测试(验证软件在超过负载设计的情况下仍能返回正确的结果,没有崩溃)、性能测试、兼容性测试、软件安全性测试
按测试测策略分类:回归测试(Regression test在软件被修改之后,重新执行以前执行过的测试用例(全部或部分),以确保对软件的改动没有引入新的错误)、探索性测试(随机进行的,探索性的测试)、粗略测试(粗略的测试, 只需要执行部分的测试用例)
按测试的时机和作用分类:冒烟测试(如果测试不通过,则不能进行下一步工作)、验收测试(为了全面考核某功能/特性而做的测试)
1一次性集成(又称“整体拼装”,“非渐增式集成”