谈软件测试常用方法和测试流程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要:软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件开发过程的重要组成部分,是软件质量保证的关键步骤。软件测试的方法可分为人工测试和机器测试,人工测试包括个人复查、走查和会审,机器测试可分为白盒测试和黑盒测试。软件测试虽然是一个独立的阶段,但在实际工作中,测试的流程主要包含单元测试、组装测试、确认测试、系统测试四个阶段。
关键词:软件测试;白盒;黑盒;单元测试;组装测试;确认测试;系统测试
一、软件测试的常用方法
软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件开发过程的重要组成部分,是软件质量保证的关键步骤。采用面向对象技术进行软件开发产生了两个结果:一是开发出功能更强大更便于用户使用的软件产品,二是生成规模庞大的程序代码和文档,这也必然导致更大规模的软件测试和维护工作。因此,规范化的软件测试势在必行。规范化不只是测试的需求(有效代码量、结构/逻辑的复杂性、高性能/高精确性/高可靠性需求)和消耗资源(人力/时间/测试频度)规模化,更要求在面对规模庞大的软件测试需求,在合理的资源消耗基础上,实施有效的测试。
下图描述的是常用的一些测试方法:
1、人工测试的方法
(1)个人复查
个人复查是指程序员自行设计测试用例,对源代码、详细设计进行仔细检查,并记录错误、不足之处等。个人复查主要包括检查变量的正确性、检查标号的正确性、检查子程序、宏、函数、常量检查、标准检查、风格检查、比较控制流、选择、激活路径、对照详细说明书,阅读源代码和补充文档等方面的测试内容。
(2)走查
走查是指测试人员先阅读相应的文档和源代码,然后人工将测试数据输入被测试程序,并在纸上跟踪监视程序的执行情况,人工沿着程序的逻辑走查运行一遍,跟踪走查运行的进程来发现程序的错误。走查的具体测试内容包括模块特性、模块接口、模块的对外输入或输出、局部数据结构、数据计算错误、控制流错误、处理出错和边界测试等方面。
(3)会审
会审是指测试人员在会审前仔细阅读软件的有关资料,根据错误类型清单(根据以往的经验、对源程序的估计等,并在以后测试中给以丰富补充)填写检测表,提出根据错误类型要提出的问题。会审时,由程序设计人员讲解程序的设计方法,由程序编写人员逐个讲解程序代码的编写,测试人员需要逐个审查,提问,讨论可能出现的问题。会审对程序的功能、结构、逻辑和风格都要进行审定。会审的测试内容与“走查”的内容相同。
2、机器测试
(1)定义
机器测试的目的是检查程序的动态性能,检查程序在执行过程中存在的错误。尤其是发现程序在实现功能、逻辑通路、数值计算、数据处理、边界处理、错误处理等方面存在的错误。机器测试分为白盒测试和黑盒测试。
(2)黑盒测试
黑盒测试即功能测试,这种方法是把软件看成一个看不见里面内容的黑盒,在完全不考虑程序内部结构和特性的情况下,测试软件的外部特性。根据软件的需求规格说明书设计测试用例,从程序输入和输出特性上检查程序是否满足设定的功能。黑盒测试常采用的方法是设计适量有效和无效的输入数据进行测试,以期用最小的代价发现最多的错误。
(3)白盒测试
白盒也称结构测试,这是将软件看成一个透明的白盒子,按照程序的内部结构和处理逻辑来选定测试用例,对软件的逻辑路径及过程进行测试,检查它与设计是否相符。
二、软件测试的流程
软件测试虽然是一个独立的阶段,但在实际工作中,测试的流程主要包含单元测试、组装测试、确认测试、系统测试四个阶段。
1、单元测试
单元测试也叫模块测试,单元指清晰定义了子功能的最小单位,如程序的最小编译单位等,是测试工作的第一步,通常单元测试需要编写桩程序及耙程序。单元测试是要保证每个独立的模块完成清晰定义的子功能,发现编码和详细设计的错误。它将整个系统分解,减少测试复杂度,在模块范围定位错误的位置,并且可以多个模块并行测试。测试可以由编码人员也可以由测试人员来完成。测试方法以白盒测试为主,辅以必要的黑盒测试。测试内容包括模块接口、模块内部数据结构、逻辑通路、边界值、出错处理等。
2、组装测试
组装测试也叫综合测试、集成测试、联合测试,它是在单元测试之后需要按照设计时做出的层次模块图把测试模块连接起来,进行组装测试。测试目的是检查能够独立实现子功能的单元模块能否在组装过程中逐级实现组合起来的主功能。测试人员由编码人员和测试人员共同进行。测试方法是黑盒测试。组装测试的策略分为非增式测试和增式测试,增式测试又分为自顶向下、自底向上和混合式三种。
3、确认测试
确认测试也叫合格性测试、验收测试,经过组装测试后,所有模块已连接成为一体,确认测试是将整个软件作为测试对象,进一步检查软件是否符合需求规格说明书的要求。确认测试的目的是检查系统是否能够按预定要求工作。确认测试主要由测试人员完成。确认测试要进行以下几方面的内容:在模拟的环境下,运用黑盒测试的方法,验证测试可包括功能测试、可移植性、兼容性、错误恢复能力、可维护性等性能测试。有些确认测试还将软件配置审查,α测试,β测试也包含进来。
4、系统测试
系统测试是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持系统、数据和人员等整个系统其他元素系统结合在一起,在实际运行环境中,在用户的直接参与下进行,是测试阶段的最后一步。系统测试的目的是在实际运行环境中,系统本身性能的实现、与其他系统配合情况以及环境异常情况和人为恶意破坏时自我保护等。系统测试应有软件实际用户、测试人员、质量保证人员等组成。系统测试采用的方法是黑盒法。系统测试的内容可包括:集成功能测试、可靠性与适应性测试、系统自我保护及恢复能力的测试、安全性测试、强度测试等。
三、结束语
在现实生活中,业界人员所热衷追求的往往是高效的软件开发技能,而高效的软件测试技能却相对为人们所冷落。在当今的大学,计算机专业均没有开设任何软件测试方面的课程,每年毕业进入业界的学生,几乎全无软件测试方面的知识,软件测试的培训与教育并无法满足当今IT产业的需求。随着敏捷开发方法等新一代软件工程概念的风靡,软件编码和测试过程多次迭代,测试人员更积极地参与到软件生命周期的各个阶段中,使得整个项目团队收取事半功倍的成效。编码和测试人员越来越紧密地协同工作,优秀的程序必然需要了解测试的方法和概念,优秀的测试人员所具备的技能也不再是仅仅是对现成的程序进行直观的功能测试,软件测试的涵义和策略日益复杂,软件质量风险控制涉及到愈来愈多的方面。