浅谈软件测试方法
2014-04-06耿宏超
耿宏超
(曲阜师范大学 计算机科学学院,山东 日照 276826)
1 软件测试概述
1.1 软件测试概念
软件测试的概念是,在规定条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。软件测试对软件正确性、完整性、安全性进行检测和纠错,使用人工手动检测或自动检测方法对某段程序进行运行和测试。
1.2 软件测试活动的五个过程
(1)标志测试条件和测试优先级。测试条件是对被测环境的具体描述,可以采用表格、语言、图标等方式进行描述。(2)设计测试用例。测试用例的设计包括测试过程中能够用到的输入值、期望值,以及运行过程中涉及的相关信息。(3)开发测试用例。开发是设计方案的具体实施,包括测试脚本、测试输入、测试数据及期望输出。(4)执行测试用例。手动测试:将事先设计开发好的数据输入,并观察结果、记录问题。自动测试:启动测试工具,选择测试用例,获取测试结果。(5)将测试结果与预期输出进行比较。对每个测试用例的输出和预期值进行比较分析,判断软件程序运行是否符合要求。
2 软件测试类型
2.1 BVT(Build Verification Test)。BVT 是在检入代码并编译生成版本之后进行的测试类型,主要用于检测新版本功能是否完整、特性是否正确。
2.2 Scenario Tests(基于用户实际应用场景的测试)。在进行BVT 功能测试的同时辅助模仿用户操作的真实环境,提供完整的用户操作流程。
2.3 Smoke Test。当发现一个程序错误并由开发人员进行修改之后,需要重新测试问题是否解决,这种专门测试某个修改过的错误的测试就是Smoke Test。
2.4 Application Compatibility Test(兼容性测试)。软件设计不仅要能在测试机上使用,还要能在不同平台和系统中使用,兼容性测试完成才能确保新软件能在不同环境下正常运行。
2.5 除了上述四种主要测试类型,还有Functional Test(功能测试)、Security Test (安全性测试)、Stress Test (压力测试)、Performance Test(性能测试)、Regression Test(回归测试)、Setup/Upgrade Test(安装升级测试)等类型测试,此处不做赘述。
3 软件测试方法
软件测试方法多种多样,根据是否需要执行被测软件分为静态测试和动态测试; 根据测试针对角度不同分为白盒测试和黑盒测试。下面详细介绍这几种测试方法。
3.1 静态测试和动态测试
3.1.1 静态测试。静态测试只检查程序代码、界面或文档中可能存在的Bug,不运行被检测软件。它包括代码测试、界面测试、 文档测试三部分。代码测试只检测代码逻辑是否符合标准;界面测试主要测试软件界面与用户需求界面是否一致;文档测试根据用户要求检测用户手册、需求说明文档。
3.1.2 动态测试。与静态测试相对,动态测试是通过运行软件来检测软件的功能、结果是否正确,应用范围及频率远高于静态测试。动态测试在测试软件过程中分为几个阶段: 单元测试:测试软件中的基本组成单元,检测软件最基础的正确性;集成测试: 首先进行组装测试,对单元相互联系模块接口进行检测,然后确认检测,对组装测试结果进行进一步检测和确认;系统测试: 对集成测试完成之后的软件进行软件系统正确性和功能性检测,确保软件系统运行正常;验收测试:软件发布使用之前的最后一道检测,也可以看做是用户的试用阶段测试;回归测试:在软件试用之后,对试用阶段的问题进行修改和再检测。
3.2 白盒测试和黑盒测试
3.2.1 白盒测试
白盒测试是在了解程序内部结构和实现代码结果的基础上设计测试用例进行检测的方法。它针对软件结构或逻辑驱动进行测试,仅检测每天程序是否按规定执行,并不对其产生的功能进行检测。
白盒测试的主要测试方法有逻辑驱动测试和基本路经测试两种。其中逻辑驱动测试以程序内部逻辑结构为基础,针对覆盖率进行测试,包括语句覆盖、分支覆盖、条件覆盖、路径覆盖四部分。基本路经测试是根据程序运行流程图设计测试用例进行测试的方法,它的测试步骤包括画控制流程图、计算程序圈复杂度、导出测试用例、准备测试用例,期间涉及的测试工具主要是图形矩阵。
白盒测试虽然增大了检测代码覆盖率、发现代码中隐藏问题、提高了代码的正确性,但是它仍具有很多缺陷,测试路径复杂、不能检测软件设计的正确性、增大了系统开销等。
3.2.2 黑盒测试
黑盒测试将软件系统看做一个封闭的空间,利用测试用例输入和输出检测软件功能是否正确。黑盒检测的目的是检测结果正确性、需求是否满足、边界条件、性能稳定性、压力承受力、错误恢复、安全性、兼容性。相比于白盒测试,黑盒测试具有简单易行、不涉及内部结构、关注用户角度、测试方便等优点,但是同时它的代码覆盖率低、 自动化测试复用性低等缺点也限制了它的检测全面性。
4 结语
软件测试在软件设计开发过程中占有很大的比重,任何软件的成功推行都必须有完整的测试体系来确保软件的运行正确性和功能完整性,是软件系统的强有力的保障。
[1]陈汶斌.软件测试技术基础[M].北京:清华大学出版社,2008.