软件测试分类1、黑盒测试:指把被测软件看作是一个黑盒子,我们不去关心盒子里面的结构是什么样子的,只关心软件的输入数据和输出结果。
2、白盒测试:指把盒打开,去研究里面的源代码和程序结构。
3、静态测试:指不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在错误的过程。
对于代码测试,主要测试代码是否符合相应的标准和规范。
对于界面测试,主要测试软件的实际界面与需求中的说明是否相符。
对于文档测试,主要测试用户手册和需求说明是否真正符合用户的实际需求。
4、动态测试:指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。
所以我们判断一个测试属于动态测试还是静态测试,唯一的标准就是看是否运行程序。
5、单元测试:指对软件中最小可测试单元进行检查和验证。
例如:C语言中,单元一般指1个函数;在Java里,单元一般指1个类;在图形化的软件中,单元也可以指1个窗口,1个菜单等。
总结起来,单元就是人为规定的最小的被测功能模块。
单元测试的通过标准是什么:(1)程序通过所有单元测试的用例(2)语句的覆盖率达到100%(3)分支覆盖率达到85%如何进行单元测试:单元测试主要用白盒测试方法,一般我们先静态地检查代码是否符合规范,然后动态地运行代码,检查其它实际运行结果。
当然检查程序的运行结果是否正确是一个最基本的要求,我们还要检查很多项,比如程序的非法数据的容错处理,程序的边界值处理等。
桩模块:是指模拟被测模块所调用的模块。
驱动模块:是指模拟被测模块的上级模块。
桩模和驱动模块例子:include<stdio.h>void main(void){int a=1,b=2,c;c=fun1(a,b);}int fun1(int x, int y){return X + Y;}主函数main调用fun1,fun1实现了计算两个参数之和功能,假设这两个函数是由两个程序员各自开发的,他们之间的开发开度不一样。
如果没有main函数,如何测试fun1函数,这时,我们需要模拟构一个新的main函数,它可以不包含main函数中需要的所有内容和细工,但至少要能够调用fun1,并且能够打印调用之后的结果,我们就把这个模拟的函数称为fun1的驱动模块。
如果没有fun1函数,这时,我们需要模拟构建一个新的fun1函数,它可以不包含fun1函数中需要的所有内容和细节,但至少能够被main函数调用,并有一个返回值,我们把这个模拟的函数就称为fun1的桩模块。
6、集成测试:是单元测试的下一个阶段,是指将通过测试的单元模块组装成系统或子系统,再进行测试,重点测试不同模块的接口部分。
7、系统测试和验收测试:集成测试之后,就是系统测试和验收测试,系统测试是指将整个系统看做1个整体进行测试,包括对功能、性能、以及软件所运行的软硬件环境进行测试。
验收测试是指在系统测试后期,以用户测试为主,或有测试人人员等质量保障人员共同参与的测试,它也是软件正式交给用户的最后一道工序。
验收测试又分a(阿发)测试和B(贝搭)测试:其中a测试指的是由用户、测试人员、开发人员等共同参与的内部测试,而B测试指的是内测后的公测,即完全交给最终用户测试。
8、功能测试:是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求。
一般分为逻辑功能测试、界面测试、易用性测试、安装测试、兼容性测试等。
9、性能测试:软件的性能包括很多方面,主要有时间性能和空间性能两种。
时间性能主要是指软件的一个具体事务的响应时间(respond time)比如登录163邮箱,输入用户名和密码,点“登录”按钮,从你点击按钮的那一刻起,到最终登录后的页面反馈给你,这一时间间隔为3秒,我们则称163邮箱在这一次登录事务中的响应时间为3秒。
一般我们多次登录,来记录不同的响应时间,最后取平均值,这样的数据才有参考价值。
(一般一个电子商务网站来说,一个普遍接受响就时间标准为2(2秒给用户以响就是非常有吸引力的)/5(5秒以内被认为是比较不错的)/10(用户忍受上限));空间性能:主要指软件运行时所消耗的系统资源,比如安装软件之前,我们经常看到某软件安装的最低要求。
性能测试一般分为:(1)一般性能测试:指让被测系统在正常的软硬件环境下运行,不向其施加任何压力的性能测式。
(2)稳妥定性测试:也叫可靠性测试,指连续运行被测系统,检查系统运行的稳定程度。
(3)负载测试:通常是指让被测系统在其能忍受的压力的极限范围之内连续运行,来测试系统的稳定性。
压力测试:通常是指持续不断地给被测系统增加压力,直到将被测系统压垮为止,用来测试系统所能承受的最大压力。
10、回归测试:是指对软件的新版本测试时,重复执行上一个版本测试时的用例。
11、冒烟测试:是指在对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。
12、随机测试:也有人称为猴子测试,是指测试中所有的输入数据都是随机产生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。
软件测试分类软件测试是一项复杂的系统工程,从不同的角度考虑可以有不同的划分方法,对测试进行分类是为了更好的明确测试的过程,了解测试究竟要完成哪些工作,尽量做到全面测试。
1,按是否需要执行被测软件的角度按是否需要执行被测软件的角度,可分为静态测试和动态测试,前者不利用计算机运行待测程序而应用其他手段实现测试目的,如代码审核。
(我认为主要是让测试人员对编译器发现不了的潜在错误进行分析,如无效的死循环,多余的变量等),而动态测试则通过运行被测试软件来达到目的。
2、按阶段划分:1 单元测试单元测试是对软件中的基本组成单位进行的测试,如一个模块、一个过程等等。
它是软件动态测试的最基本的部分,也是最重要的部分之一,其目的是检验软件基本组成单位的正确性。
因为单元测试需要知道内部程序设计和编码的细节知识,一般应由程序员而非测试员来完成,往往需要开发测试驱动模块和桩模块来辅助完成单元测试。
因此应用系统有一个设计很好的体系结构就显得尤为重要。
一个软件单元的正确性是相对于该单元的规约而言的。
因此,单元测试以被测试单位的规约为基准。
单元测试的主要方法有控制流测试、数据流测试、排错测试、分域测试等等。
2 集成测试集成测试是在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。
它根据集成测试计划,一边将模块或其他软件单位组合成越来越大的系统,一边运行该系统,以分析所组成的系统是否正确,各组成部分是否合拍。
集成测试的策略主要有自顶向下和自底向上两种。
3 系统测试系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,它被称为测试的“先知者问题”。
因此,系统测试应该按照测试计划进行,其输入、输出和其他动态运行行为应该与软件规约进行对比。
软件系统测试方法很多,主要有功能测试、性能测试、随机测试等等。
4 验收测试验收测试旨在向软件的购买者展示该软件系统满足其用户的需求。
它的测试数据通常是系统测试的测试数据的子集。
所不同的是,验收测试常常有软件系统的购买者代表在现场,甚至是在软件安装使用的现场。
这是软件在投入使用之前的最后测试。
5 回归测试回归测试是在软件维护阶段,对软件进行修改之后进行的测试。
其目的是检验对软件进行的修改是否正确。
这里,修改的正确性有两重含义:一是所作的修改达到了预定目的,如错误得到改正,能够适应新的运行环境等等;二是不影响软件的其他功能的正确性。
6 Alpha 测试:在系统开发接近完成时对应用系统的测试;测试后,仍然会有少量的设计变更。
这种测试一般由最终用户或其他人员员完成,不能由程序员或测试员完成。
7 Beta 测试:当开发和测试根本完成时所做的测试,而最终的错误和问题需要在最终发行前找到。
这种测试一般由最终用户或其他人员员完成,不能由程序员或测试员完成。
3、按测试方法划分:1 白盒测试白盒测试也称结构测试或逻辑驱动测试,是指基于一个应用代码的内部逻辑知识,即基于覆盖全部代码、分支、路径、条件的测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
“白盒”法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
但即使每条路径都测试了仍然可能有错误。
第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。
第二,穷举路径测试不可能查出程序中因遗漏路径而出错。
第三,穷举路径测试可能发现不了一些与数据相关的错误。
白盒测试可以借助一些工具来完成如Junit Framework,Jtest等。
2 黑盒测试黑盒测试是指不基于内部设计和代码的任何知识,而基于需求和功能性的测试,黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。
“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。
“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。
实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。
黑盒测试也可以借助一些工具,如WinRunner,QuickTestPro,Rational Robot 等。
3 ALAC(Act-like-a-customer)测试ALAC测试是一种基于客户使用产品的知识开发出来的测试方法。
ALAC测试是基于复杂的软件产品有许多错误的原则。
最大的受益者是用户,缺陷查找和改正将针对哪些客户最容易遇到的错误。
1、静态和动态测试静态测试是不运行被测程序本身而寻找程序中可能存在的错误或评估程序代码的过程。
通过分析或者检查源程序的语法、结构、过程、借口等来检查程序的正确性,找出问题。
这些问题包括:参数不匹配、不适当的分支嵌套和循环嵌套、未使用过的变量、空指针的引用等。