一、概念
软件测试,描述一种鉴定软件的正确性、完整性、安全性和质量的过程,实际上就是一种输出与预期输出之间的审核或者比较的过程。
基本概念:
软件=程序+文档,软件测试=程序测试+文档测试
“程序”是指能够实现某种功能的指令集合,“文档”是指软件在开发、使用和维护过程中产生的图文集合。
二、测试分类
从是否关系软件内部结构和具体实现的角度划分(实现上就是按测试人员是否可以看到代码)
1、白盒测试:访问代码,通过检查代码的线索来协助测试(通常由程序员自己测试)
2、黑盒测试:又叫功能测试或者行为测试,只需考虑各个功能,不需要考虑整个软件的内部结构及代码
3、灰盒测试:介于白盒测试与黑盒测试之间的一种测试,灰盒测试用于继承阶段,不仅关注输出、输入的正确性,同时也关心内部的情况。
从是否执行的角度看
1、静态测试:测试软件不运行的部分,只检查和审核
2、动态测试:使用和运行软件进行测试
从软件开发的过程按阶段划分
1、单元测试
单元测试又称模块测试,是针对软件设计的最小单位——程序模块或组件、也可以包括函数或者类,进行正确性检验的测试工作。其目的发现各个模块内部可能存在的各种差错。
2、集成测试
又称组装测试、联合测试。在单元测试的基础上,需要将所有模块按照设计要求组装称为系统,测试的是单元之间的接口、。
3、确认测试
又称为有效性测试。任务是验收软件的功能和性能及其它特性是否与用户要求一致。
4、系统测试
5、验收测试
验收测试是以用户为主的测试。一般是根据产品说明书,严格检查产品。
6、回归测试
回归测试指在软件维护阶段,为了检测代码修改而引入的错误所进行的测试活动。
三、测试模型
1.V模型
概念:V模型是软件开发瀑布模型的变种,主要反映测试活动与分析和设计的关系,从左到右,描述了基本的开发过程和测试行为。V模型的策略既包括低层测试又包括了高层测试,低层测试是为了源代码的正确性,高层测试是为了使整个系统满足用户的需求。
局限性:把测试作为编码后的最后的一个阶段,最后测试的实际上就是程序本身,可能会出现需求阶段的一个错误到最后才能发现。忽略了测试不应该是程序本身,没有明确指出对需求和设计的测试。
2、WW模型
概念:在V模型中增加软件各开发阶段应同步进行的测试,演化为一种W模型,实际上开发是“V”,测试也是与此相并行的“V”。W模型可以说是V模型自然而然的发展。它强调,测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。
局限性:仍把开发活动看成是从需求开始到编码结束的串行活动,只有上一阶段完成后,才可以开始下一阶段的活动,不能支持迭代测试。
3、H模型
概念:将软件测试从软件开发中独立出来,使测试流程形成一个独立的流程;
局限性:太过模型化,对软件开发没有实际的指导意义。
4、X模型
概念:针对单独的程序片段进行相互分离测编码和测试,频繁的交接,最后集成形成独立的程序;
局限性:对程序员的要求较高,探索测试可能会造成资源、时间和财力的浪费。
四、测试流程