测试基础
V模型
在软件测试 V 模型图中,左边表示开发过程中的各阶段,右边表示测试过程中的各阶段,每个开发阶段对应一个测试阶段。编码<—>单元测试、系统结构设计<—>系统测试、详细或者程序设计<—>功能测试、需求分析<—>验收测试。
水平虚线上部表明,其需求分析、功能设计和验收测试等主要工作是面向用户,要和用户进行充分的沟通和交流,或者是和用户一起完成。水平虚线下部的大部分工作,相对来说,都是技术工作,在开发组织内部进行,由工程师完成。
V 模型的优缺点如图所示。它在编码完成后才开始进行测试工作,这样在需求、设计阶段产生的错误要到后期才能发现,当在最后验收测试中发现需求方面的错误时可能很难再更改程序的结构去修正这些问题,从而导致整个项目的失败。并且在编码完成后再进行测试,需要给测试留出充分的时间,否则会导致测试工作做的不充分。
V 模型失败的原因是它把系统开发过程划分成具有固定边界的不同阶段,导致测试人员很难跨过这些边界来采集测试所需要的信息,并且阻碍了测试人员从系统描述的不同阶段中取得信息进行考虑。
软件测试类型
按照不同的划分方式,软件测试可分为不同的类型,如图所示
1.按照开发阶段划分
按照开发阶段划分的软件测试类型如图所示
单元测试
单元测试又称模块测试,是针对软件设计的最小单元(程序模块)进行正确性验证的工作。单元测试可以作为无错编码的一种辅助手段,也可以作为规格说明来工作。单元测试必须是可重复的。
单元测试的原则如下:
应该尽早地进行软件单元测试。应该保证单元测试的可重复性。尽可能采用测试自动化的手段来支持单元测试活动。
集成测试
集成测试又称组装测试、联合测试、子系统测试或部件测试。集成测试是在单元测试的基础上,将所有模块按照设计要求组成子系统或系统进行的测试活动。
集成测试的目的是要找出在模块接口上面,包括整体体系结构上的问题。
集成策略分为增值策略与非增值策略两种。二者的区别如表所示。
系统测试
系统测试是对已经集成好的软件系统进行测试,以验证软件系统的正确性和性能等是否满足其规约所指定的要求。
系统测试的目的是在真实系统工作环境下通过与系统的需求定义作比较,检验完整的软件配置项能否和系统正确连接,发现软件与系统设计文档或软件开发合同规定不符合或与之矛盾的地方。并且还要检验系统的文档是否完整、有效。系统测试一般使用黑盒测试技术,并由独立的测试人员完成。
验收测试
验收测试是在软件产品完成了功能测试和系统测试之后、产品发布前进行的软件测试活动,是技术测试的最后一个阶段,也称为交付测试、发布测试或确认测试。
验收测试是按照项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收系统。
验收测试主要包括易用性测试、兼容性测试、安装测试、文档(如用户手册、操作手册)等内容。
验收测试完成标准如下:
完全执行了验收测试计划中的每个测试用例。在验收测试中发现的错误已经得到修改并且通过了测试。完成软件验收测试报告。
验收测试需要注意以下几点:
必须编写正式的、单独的验收测试计划。验收测试必须在实际的用户运行环境中运行。由用户和测试部门共同执行比较好。
2.按照测试实施组织划分
按照测试实施组织划分的软件测试类型如图所示:
开发方测试:也叫’‘验证测试“或 “Alpha”测试即 a 测试。开发方通过检测和提供客观证据,证实软件的实现早否满足规定的需要。其特点如图所示。有关的手册应该在开发方测试前准备好。
用户测试:也叫Beta测试(即β测试),该测试是在用户的应用环境下,用户通过运行和使用软件,检测与核实该软件实现是否符合自己预期的要求。用户测试的特点如图所示.只有当 Alpha 测试达到一定的可靠但度后,才能开始 Beta 测试
第三方测试:也称为”独立测试”,是介于软件开发方和用户之间的测试组织的测试,其目的是为了保证测试工作的客观性.并且尽最多地发现程序中的错误。
3.按照测试技术划分
按照测试技术划分的软件测试类型如图所示
黑盒测试
也称为“功能测试”,在测试中把程序看成一个不能打开的黑盒子,在接口处进行测试而不考虑程序内部结构。黑盒测试行为必须能够加以量化。黑盒测试的优缺点如表所示。
黑盒测试特点如图所示,它主要用于发现以下几类错误:
功能不正确或遗漏数据库访问错误界面错误性能错误输入和输出错误初始化和终止错误
白盒测试
又称为“结构测试”,把程序看成是装在一个透明盒子里,能清楚了解程序结构和处理过程。
它的优点有:可以检查内存的泄露;检查异常处理分支语句是否正确;执行了多少逻辑,可以作为衡量测试是否完整的一个指标。
白盒测试必须遵循以下原则,才能达到测试目的:
保证一个模块中的所有独立路径至少被测一次。所有逻辑覆盖均需测试真( true )和假( false )两种情况。检查程序的内部数据结构,保证其结构的有效性。在上下边界及可操作范围内运行所有循环。
灰盒测试
介于白盒测试和黑盒测试之间,它的优缺点如图所示
4.按照测试执行方式划分
按照测试执行方式划分的软件测试类型如图所示:
静态测试
静态测试是指不运行程序,通过人工对程序和文档进行分析与检查。它实际上是对软件中的需求说明书、设计说明书、程序源代码、用户手册等进行非运行的检查。静态测试可以人工进行也可以借助软件工具自动进行。
动态测试
动态测试通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率结果与预期的差异,分析运行效率和健壮性等性能。
静态测试与动态测试的区别如下:
静态测试是用于预防的,动态侧试是用于校正。多次的静态测试比动态测试效率要高。静态测试综合测试程序代码。在相当短的时间里,静态测试的覆盖率能达到 100 % ,而动态测试是 50 %左右。动态测试比静态测试更花时间。 ·静态测试比动态测试更能发现bug。静态测试的执行可以在程序编码编译前,动态测试只能在编译后才能执行。
软件测试技术
1.黑盒测试法
2.白盒测试法
白盒测试方法分类如图所示。其中静态白盒测试的优点有:能尽早发现软件缺陷;为黑盒测试提供思路。
参考个人博客
发表评论