软件测试是一项复杂的系统工程,从不同的角度考虑可以有不同的划分方法,对测试进行分类是为了更好的明确测试的过程,了解测试究竟要完成哪些工作,尽量做到全面测试。
1,按是否需要执行被测软件的角度 按是否需要执行被测软件的角度,可分为静态测试和动态测试,前者不利用计算机运行待测程序而应用其他手段实现测试目的,如代码审核。(我认为主要是让测试人员对编译器发现不了的潜在错误进行分析,如无效的死循环,多余的变量等),而动态测试则通过运行被测试软件来达到目的。 2、按阶段划分: 1 单元测试 单元测试是对软件中的基本组成单位进行的测试,如一个模块、一个过程等等。它是软件动态测试的最基本的部分,也是最重要的部分之一,其目的是检验软件基本组成单位的正确性。因为单元测试需要知道内部程序设计和编码的细节知识,一般应由程序员而非测试员来完成,往往需要开发测试驱动模块和桩模块来辅助完成单元测试。因此应用系统有一个设计很好的体系结构就显得尤为重要。 一个软件单元的正确性是相对于该单元的规约而言的。因此,单元测试以被测试单位的规约为基准。单元测试的主要方法有控制流测试、数据流测试、排错测试、分域测试等等。 2 集成测试 集成测试是在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。它根据集成测试计划,一边将模块或其他软件单位组合成越来越大的系统,一边运行该系统,以分析所组成的系统是否正确,各组成部分是否合拍。集成测试的策略主要有自顶向下和自底向上两种。 3 系统测试 系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,它被称为测试的“先知者问题”。因此,系统测试应该按照测试计划进行,其输入、输出和其他动态运行行为应该与软件规约进行对比。软件系统测试方法很多,主要有功能测试、性能测试、随机测试等等。 4 验收测试 验收测试旨在向软件的购买者展示该软件系统满足其用户的需求。它的测试数据通常是系统测试的测试数据的子集。所不同的是,验收测试常常有软件系统的购买者代表在现场,甚至是在软件安装使用的现场。这是软件在投入使用之前的{zh1}测试。 5 回归测试 回归测试是在软件维护阶段,对软件进行修改之后进行的测试。其目的是检验对软件进行的修改是否正确。这里,修改的正确性有两重含义:一是所作的修改达到了预定目的,如错误得到改正,能够适应新的运行环境等等;二是不影响软件的其他功能的正确性。 6 Alpha 测试:在系统开发接近完成时对应用系统的测试;测试后,仍然会有少量的设计变更。这种测试一般由最终用户或其他人员员完成,不能由程序员或测试员完成。 7 Beta 测试:当开发和测试根本完成时所做的测试,而最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其他人员员完成,不能由程序员或测试员完成。 3、按测试方法划分: 1 白盒测试 白盒测试也称结构测试或逻辑驱动测试,是指基于一个应用代码的内部逻辑知识,即基于覆盖全部代码、分支、路径、条件的测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。 “白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。{dy},穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。 白盒测试可以借助一些工具来完成如Junit Framework,Jtest等。 2 黑盒测试 黑盒测试是指不基于内部设计和代码的任何知识,而基于需求和功能性的测试,黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在xx不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。 “黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。 黑盒测试也可以借助一些工具,如WinRunner,QuickTestPro,Rational Robot等。 3 ALAC(Act-like-a-customer)测试 ALAC测试是一种基于客户使用产品的知识开发出来的测试方法。ALAC测试是基于复杂的软件产品有许多错误的原则。{zd0}的受益者是用户,缺陷查找和改正将针对哪些客户最容易遇到的错误。 1、静态和动态测试
静态测试是不运行被测程序本身而寻找程序中可能存在的错误或评估程序代码的过程。通过分析或者检查源程序的语法、结构、过程、借口等来检查程序的正确性,找出问题。这些问题包括:参数不匹配、不适当的分支嵌套和循环嵌套、未使用过的变量、空指针的引用等。 文档的测试一般也是用静态测试。 静态测试可以用手工,也可以用工具实现。静态测试工具一般是对代码进行语法检查,找出不符合编码规范的地方,根据某种模型评价代码的质量,生成系统的调用关系图等,常见的工具有Telelogic公司的Logiscope、PR公司的PRQA等。 动态测试是运行被测试程序,输入相应的测试数据,检查运行结果与预期结果的差异,判定执行结果是否符合要求,从而检验程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性等性能。 2、黑盒测试、灰盒测试和白盒测试 黑盒测试又称为功能测试、数据驱动测试或者基于规格说明书的测试,注重测试软件的功能需求。测试人员不关心程序具体如何实现,根据软件的规格对软件进行各种输入,观察软件的各种输出结果,发现软件的缺陷。因为这类测试不考虑软件的内部运作原理,因此软件对用户来说就像一个黑盒子。 灰盒测试是介于黑盒测试与白盒测试之间的测试方法,在执行白盒测试的时候考虑使用黑盒测试的方法。 白盒测试又称结构测试、逻辑驱动测试或基于程序代码的测试。根据软件内部的工作原理分析来进行测试,测试人员通过阅读程序代码或者通过使用开发工具中的单步调试来判断软件的质量。 3、冒烟测试 冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件的基本功能正常,可以进行后续的正式测试工作。简单的说,冒烟测试就是用较少的人,在较短的时间内,测试程序的主要功能,如果通过再进行正式的测试。 4、回归测试(Regression testing) 在发生修改之后重新测试先前的测试以保证修改的正确性,以及修改后没有引发新的错误。 5、功能测试和性能测试 功能测试(Functional testing):根据产品特征、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。 性能测试(Performance testing):评价一个产品或组建与性能需求是否符合的测试。包括负载测试、强度测试、数据库容量测试、基准测试等类型。 6、压力测试和负载测试 压力测试:获取系统正确运行的极限,检查系统在瞬间峰值负荷下正确运行的能力,例如:对服务器做压力侧室时增加并发操作的用户数量,或者不停向服务器发送请求,或者一次性向服务器发送特别大的数据等。看服务器保持正常运行所能达到的{zd0}状态。 负载测试:用于检查系统在使用大量数据的时候正确工作的能力,即检验系统的能力{zg}能达到什么程度,例如:对信息检索系统,让他的使用频率达到{zd0},或者对多个终端的分时系统,让所有的终端都开动,在使整个系统的全部资源达到“满负荷”的情况下,测试系统的承受能力。区别于压力测试的是,负载测试一般模仿用户真实环境,大量数据也不会取到实际不可能达到的数值。 7、易用性测试:从客户角度出发,从使用软件的合理性和方便性等角度对软件系统进行检查,发现人为因素或使用上的问题。 8、安装测试:确保软件在正常情况和异常情况的不同条件下,如首次安装、升级、完整或自定义安装等都能进行安装。异常情况包括磁盘空间不足、缺少目录创建权限等。核实软件在安装后可正常运行。安装测试还包括卸载测试。 9、界面测试:用户界面风格是否满足用户要求,文字是否正确,版面是否美观等。包括窗口测试,菜单和鼠标操作,数据项测试。 10、配置测试:主要检查计算机系统内各个设备或各种资源之间的相互连接和功能分配中的错误,包括验证全部配置命令的可操作性,软件配置,硬件配置,利用手动方式进行配置状态间的转换。 11、文档测试:检查文档的正确性、完备性和可理解性。 12、兼容性测试(企业内常称为“共存性”):测试软件是否和系统的其它与之交互的元素之间兼容,如浏览器、操作系统、硬件等。 13、安全性测试(尤其B/S系统要求比较高):检查系统对非法入侵的防范能力,检查系统中已存在的系统安全性、保密性措施是否发挥作用,有无漏洞。系统安全设计的准则是,使非法侵入的代价超过被保护信息的价值。 14、恢复测试(Recovery testing):主要检查系统的容错能力。当系统出错时,能否在规定时间内修正错误并恢复正常。例如SQL的回滚机制。 15、可移植性测试:测试软件是否可以被成功移植到指定的硬件或软件平台上。 16、引导测试:软件开发中,验证系统在真实硬件和客户基础上处理典型操作的能力。在软件外包测试中,引导测试通常是客户检查软件测试公司测试能力的一种形式,只有通过了客户特定的引导测试,软件测试公司才能接受客户真实软件项目的软件测试。 17、随机测试:没有书面测试用例、记录期望结果、检查列表、脚本或指令的测试,主要是根据测试者的经验对软件进行功能和性能抽查。随机测试是根据测试说明书执行测试用例的重要补充手段,是保证测试覆盖完整性的有效方式和过程。 18、健全测试:软件主要功能成分的简单测试以保证它是否能进行基本的测试。 19、手工和自动化测试 自动化测试:使用自动化测试工具进行测试,一般不需要人工过多干预,在GUI、性能测试中用得较多。 20、国际化测试、本地化能力测试、本地化测试 国际化测试:目的是测试软件的国际化支持能力,发现软件的国际化的潜在问题,保证软件在世界不同区域中都能正常运行。国际化测试使用每种可能的国际输入类型,针对任何区域性或区域设置检查产品的功能是否正常,软件国际化测试的重点在于执行国际字符串的输入/输出功能。 本地化能力测试:本地化能力是指不需要重新设计或修改代码,将程序的用户界面翻译成任何目标语言的能力。常在软件的伪本地化版本上进行。 本地化测试:对象是软件的本地化版本。本地化测试的目的是测试特定目标区域设置的软件本地化质量。本地化测试的环境是在本地化的操作系统上安装本地化的软件。 21、通过测试:即正面测试,使用满足需求的数据测试系统的过程。 22、失败测试:负面测试,使用不满足需求的数据测试系统。 23、错误猜测:是通过直觉发现程序中的错误和缺陷的能力。 |