软件开发流程
了解软件测试,有必要先了解软件开发的一般流程
软件开发的一般流程:用户需求→需求分析→概要设计→详细设计→编码→测试
常见软件开发模型:V模型,W模型
(图片来源网络)
V模型通过开发和测试同时进行的方式来缩短开发周期,提高开发效率。V模型很明确地标明了测试阶段和开发过程期间各阶段的对应关系。
缺点:V模型仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段,忽视了测试对需求分析,系统设计的验证。需求是否得到满足,要到后期的验收测试才能知道。
(图片来源网络)
相对于V模型,W模型增加了软件开发各阶段中同步进行的验证和确认活动。W模型中,测试与开发是同步进行的,测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等开发输出的文档同样要测试。W模型可以尽早发现软件缺陷,节约开发成本。
缺点:在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型。
软件测试类型分类
按开发阶段分类
根据开发的阶段,可以将测试分为:单元测试、集成测试、系统测试、确认测试
• 单元测试
单元测试:指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,会根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。单元测试一般由开发人员完成。
测试内容:模块接口测试、局部数据结构测试、边界条件测试、执行路径测试和出错处理测试。
• 集成测试
集成测试:指在单元测试的基础上,将已测试过的模块按照设计要求进行组装集成。目的在于检验与软件设计相关的程序结构问题。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。一些局部反映不出来的问题,在全局上很可能暴露出来。
测试内容:模块间数据传输是否丢失、模块间功能是否冲突、全局数据结构是否被异常修改、模块集成功能是否符合预期、单模块缺陷对系统的影响是否可控。
• 系统测试
系统测试(确认测试):指在集成测试的基础上,检验软件是否满足需求规格说明中的功能和性能需求,确定软件配置完全、正确。同时,检验软件产品能否与实际运行环境中整个系统的其他部分(如:硬件、数据库及操作人员)协调工作。
测试内容:系统是否符合需求规格说明、软件配置复查、健壮性(容错能力、恢复能力)
• 验收测试
验收测试:是检验软件产品质量的最后一道工序,主要让用户对软件进行测试,并重新执行已经做过的测试的某个子集,保证没有引入新的错误。验收测试是以用户为主的测试,软件开发人员和质量保证人员也应参加。验收测试由用户参加设计测试用例,通过用户界面输入测试数据,分析测试的输出结果。一般使用生产中的实际数据进行测试。在测试过程中,除了考虑软件的功能和性能外,还应对软件的可移植性、兼容性、可维护性、错误的恢复功能等进行确认。α测试和β测试用于发现可能只有最终用户才能发现的错误。
α测试可以是一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。α测试是在受控制的环境下进行的测试。
β测试是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试,开发者通常不在测试现场。因而,β测试是在开发者无法控制的环境下进行的软件现场应用。
按代码是否运行分类
根据测试是否运行代码,可以分为静态测试、动态测试
•静态测试
静态测试:指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。
测试内容:代码检查(包括代码走查、桌面检查、代码审查)、静态结构分析、代码质量度量。
•动态测试
动态测试:指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能。
测试内容:构造测试用例、执行程序、分析程序的输出结果
按是否查看代码分类
根据是否关注产品内部代码,可以分为白盒测试、灰盒测试、黑盒测试
•白盒测试
白盒测试:又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异
•灰盒测试
灰盒测试:介于白盒测试与黑盒测试之间,灰盒测试多用于集成测试阶段,它不仅关注输出、输入的正确性,同时也关注程序内部的情况。灰盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态。
•黑盒测试
黑盒测试:也称功能测试,是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的,黑盒测试不关注代码内部构造,主要检查UI和功能是否符合设计书。
其他测试分类
•冒烟测试
冒烟测试:是指在正式测试前,在新编译的版本中对软件基本的功能进行测试,确保软件基本的功能正常,整体流程可以通,可以进行后续的正式测试工作。
•回归测试
回归测试:贯穿整个测试的各个阶段的测试活动,其目的是检验已经发现的缺陷有没有正确修改和修改过程中有没有引发新的缺陷。策略:1)完全重复测试2)选择性重复测试
•随机测试
随机测试:是指测试者根据经验对软件进行功能和性能抽查。随机测试是根据测试说明书执行用例测试的重要补充手段,是保证测试覆盖完整性的有效方式和过程。随机测试主要是对被测软件的一些重要功能进行复测,也包括测试那些当前的测试用例没有覆盖到的部分。
【参考】
《软件测试基础 》西安电子科技大学出版社.周元哲.2011.6
软件测试概念及分类整理汇总 - Findyou - 博客园
集成测试常见策略 - CSDN博客
系统测试
静态测试
黑盒测试
随机测试
V模型
W模型