浅谈软件测试方法

      软件测试已然成为生产高质量软件必不可少的一个工程实践活动,其中软件测试方法更是种类繁多,对于初学者而言,记忆起来比较困难。于是我经过课上听讲及查阅资料加以简单地整理总结,方便你们有个总体的了解。编程

从测试设计方法分类                                                        

测试名称                                 测试内容
Black Box Testing黑盒测试 黑盒测试也称功能测试,它是经过测试来检测每一个功能是否都能正常使用。在测试中,把程序看做一个不能打开的黑盒子,在彻底不考虑程序内部结构和内部特性的状况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
White Box Testing白盒测试 白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运做的。"白盒"法全面了解程序内部逻辑结构、对全部逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。

Gray Box Testing灰盒测试安全

灰盒测试,是介于白盒测试与黑盒测试之间的,能够这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是经过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种状况很是多,若是每次都经过白盒测试来操做,效率会很低,所以须要采起这样的一种灰盒的方法。
 
 
其中黑盒测试和白盒测试尤其常见,二者之间的比较以下:
                                     

从是否执行程序的角度分类                                               

测试名称 测试内容
静态测试Static Test 静态方法是指不运行被测程序自己,仅经过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序作结构分析、流程图分析、符号执行来找错。静态方法经过程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不容许的递归、未使用过的变量、空指针的引用和可疑的计算等。静态测试结果可用于进一步的查错,并为测试用例选取提供指导。

动态测试 网络

Dynamic Test架构

动态测试方法是指经过运行被测程序,检查运行结果与预期效果的差别,并分析运行效率、正确性和健壮性等性能。这种方法由三部分组成:构造测试用例、执行程序、分析程序的输出结果。

  

     静态测试包括对软件产品的设计规格说明书的审查,对程序代码的阅读、审查等。静态分析的查错和分析功能是其余方法所不能替代的.已被当作一种自动化的代码校验方法。函数

  动态测试是经过观察代码运行时的动做,来提供执行跟踪、时间分析,以及测试覆盖度方面的信息。动态测试经过真正运行程序发现错误。经过有效的测试用例,对应的输入脚出关系来分析被测程序的运行状况。工具

     不一样的测试方法各自的目标和侧重点不同,在实际工做中。应将这两种方法结合起来运用,以达到更完美的效果。性能

从测试是否手动分类                                                        

 

测试名称单元测试

测试内容测试

Manual Test 手动测试ui

测试人员用鼠标去手动测试 (测试GUI),或者进行手动演算

Automation 自动化测试

用程序测试程序 (测试API)

      不管是自动化测试仍是手工测试,其核心永远是测试用例。无效的用例,用任何方法去测试,都不会达到良好的测试目的。目前大部分的项目组都是手动测试和自动化测试相结合。由于不少测试没法作成自动化,不少复杂的业务逻辑也很难自动化, 因此自动化测试没法取代手动测试。固然自动化测试的目的是节约人力成本及时间成本,把枯燥的回归测试自动化起来,缩短项目周期,而这也偏偏是手动测试没法比拟的,手动测试最大的缺点就是技术含量低,单调乏味。

     总而言之,手工测试胜在测试业务逻辑,而自动化测试胜在测试底层架构。

 

从软件开发的过程按阶段划分分类                                         

测试名称 测试内容
单元测试  单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,通常来讲,要根据实际状况去断定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中能够指一个窗口或一个菜单等。总的来讲,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程当中要进行的最低级别的测试活动,软件的独立单元将在与程序的其余部分相隔离的状况下进行测试。
集成测试  集成测试,也叫组装测试或联合测试。在单元测试的基础上,将全部模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试
确认测试  确认测试的目的是向将来的用户代表系统可以像预约要求那样工做。经集成测试后,已经按照设计把全部的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是确认测试的任务,即软件的功能和性能如同用户所合理期待的那样。
系统测试  系统测试是针对整个产品系统进行的测试,目的是验证系统是否知足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。系统测试发现问题以后要通过调试找出错误缘由和位置,而后进行改正。是基于系统总体需求说明书的黑盒类测试,应覆盖系统全部联合的部件。对象不只仅包括需测试的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。
验收测试  验收测试是部署软件以前的最后一个测试操做。在软件产品完成了单元测试、集成测试和系统测试以后,产品发布以前所进行的软件测试活动。它是技术测试的最后一个阶段,也称为交付测试。验收测试的目的是确保软件准备就绪,而且可让最终用户将其用于执行软件的既定功能和任务。
 回归测试  回归测试是指修改了旧代码后,从新进行测试以确认修改没有引入新的错误或致使其余代码产生错误。自动回归测试将大幅下降系统测试、维护升级等阶段的成本。回归测试做为软件生命周期的一个组成部分,在整个软件测试过程当中占有很大的工做量比重,软件开发的各个阶段都会进行屡次回归测试。在渐进和快速迭代开发中,新版本的连续发布使回归测试进行的更加频繁,而在极端编程方法中,更是要求天天都进行若干次回归测试。所以,经过选择正确的回归测试策略来改进回归测试的效率和有效性是很是有意义的。
Alpha测试   Alpha测试是由一个用户在开发环境下进行的测试,也能够是公司内部的用户在模拟实际操做环境下进行的测试。Alpha测试的目的是评价软件产品的FLURPS(即功能、局域化、可以使用性、可靠性、性能和支持)。尤为注重产品的界面和特点。Alpha测试能够从软件产品编码结束之时开始,或在模块(子系统)测试完成以后开始,也能够在确认测试过程当中产品达到必定的稳定和可靠程度以后再开始。
Beta测试   Beta测试由软件的最终用户们在一个或多个客房场所进行。与 Alpha测试不一样,开发者一般不在Beta测试的现场,因Beta测试是 软件在开发者不能控制的环境中的“真实”应用。用户Beta测试中遇到的一切问题(真实在或想像的),而且按期把这些问题报告给开发者。接收到在Beta测试期间报告的问题以后,开发者对软件产品进行必要的修改,并准备向全体客户发布最终的软件产品

从测试的目的分类                                                            

测试名称 测试内容
功能测试

功能测试检查实际的功能是否符合用户的需求。测试的大部分工做也是围绕软件的功能进行,设计软件的目的也就是知足客户对其功能的需求。若是偏离的这个目的任何测试工做都是没有意义的。

功能测试又可能够细分为不少种:逻辑功能测试、界面测试、易用性测试、安装测试、兼容性测试等

非功能测试 一个软件除了基本功能以外,还有不少功能以外的特性,这些叫“Quality of Service requirement服务质量需求。没有软件的功能,这些特性都无从表现出来,所以,咱们要在软件开发的适当阶段-基本功能完成后作这些测试。
性能测试

能测试是经过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

  软件的性能包括不少方面,主要有时间性能和空间性能两种

  时间性能:主要是指软件的一个具体的响应时间。好比一个登陆所须要的时间,一个交易所须要的时间等。固然,抛开具体的测试环境,来分析一次事务的响应时间是没有任何意义的。须要搭建一个具体且独立的测试环境。

  空间性能:主要指软件运行时所消耗的系统资源,好比硬件资源,CPU、内存,网络带宽消耗等。

安全性测试 安全性测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程 
相关文章
相关标签/搜索