1、黑盒测试:指把被测软件看作是一个黑盒子,我们不去关心盒子里面的结构是什么样子的,只关心软件的输入数据和输出结果。
2、白盒测试:指把盒打开,去研究里面的源代码和程序结构。
3、静态测试:指不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在错误的过程。
对于代码测试,主要测试代码是否符合相应的标准和规范。
对于界面测试,主要测试软件的实际界面与需求中的说明是否相符。
对于文档测试,主要测试用户手册和需求说明是否真正符合用户的实际需求。
4、动态测试:指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。所以我们判断一个测试属于动态测试还是静态测试,唯一的标准就是看是否运行程序。
5、单元测试:指对软件中最小可测试单元进行检查和验证。例如:C语言中,单元一般指1个函数;在Java里,单元一般指1个类;在图形化的软件中,单元也可以指1个窗口,1个菜单等。总结起来,单元就是人为规定的最小的被测功能模块。
单元测试的通过标准是什么:
(1)程序通过所有单元测试的用例
(2)语句的覆盖率达到100%
(3)分支覆盖率达到85%
如何进行单元测试:
单元测试主要用白盒测试方法,一般我们先静态地检查代码是否符合规范,然后动态地运行代码,检查其它实际运行结果。当然检查程序的运行结果是否正确是一个最基本的要求,我们还要检查很多项,比如程序的非法数据的容错处理,程序的边界值处理等。
桩模块:是指模拟被测模块所调用的模块。
驱动模块:是指模拟被测模块的上级模块。
桩模和驱动模块例子:
include
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、随机测试:也有人称为猴子测试,是指测试中所有的输入数据都是随机产生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。