软件测试按阶段分,可以分为单元测试,集成测试,系统测试,验收测试。

单元测试

单元测试定义

单元测试是对软件组成单元进行测试,其目的是检验软件基本组成单位的正确性,测试的对象是软件设计的最小单位:函数。

wiki

在此处提出异议,最小单元并非一定是:函数。

谁做单元测试

  • 开发人员
    一般而言:谁编写代码,谁负责编写单元测试用例
  • 测试开发人员

通常,小型测试是由SWE来实现,也会有少量的SET参与,TE几乎不参与小型测试。

《google测试之道》

注: google内部将代码测试(单元测试)分为 小型测试 。
SWE - 软件开发人员,SET - 测试开发人员 , TE - 测试工程师

  • 测试人员
    同上。几乎不参与并非不参加。

单元测试内容

回应定义处的质疑,单元并非一定是函数。

对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。

集成测试

集成测试定义

集成测试也称综合测试、组装测试、联合测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。其主要目的是检查软件单位之间的接口是否正确,集成测试的对象是已经经过单元测试的模块。

wiki

谁做集成测试

  • 测试人员
    一般而言:集成测试是由测试人员进行。
  • 开发人员
    个人认为,开发人员必须也进行集成测试。如果开发人员将测试完的单元组装完后不做任何测试便移交给测试人员,可以想象,集成测试的效率将大打折扣,出现问题后进行修复的代价是相当大的。

在google内部,集成测试由开发人员和测试开发人员执行。

在产品早期开发过程中,在独立模块功能被开发完毕之后,SET会驱动这些测试的实现及运行,SWE会深度参与,一起编码、调试和维护这些测试。

《google测试之道》

集成测试内容

多个模块组装成的子系统或者系统。

系统测试

系统测试定义

系统测试主要包括功能测试、界面测试、可靠性测试、易用性测试、性能测试。功能测试主要针对包括功能可用性、功能实现程度(功能流程&业务流程、数据处理&业务数据处理)方面测试。

wiki百科

谁做系统测试

  • 测试人员
    一般而言:系统测试是测试人员的工作。但是我并不认为系统测试一定要由测试人员来做,在大陆IT的大环境来看,确实是没有选择的余地。测试人员不做测试,那谁来做 ?开发可以,产品也可以!
  • 开发人员
    开发人员参与测试: 1. 发现问题后修复代价相比测试人员小;2. 开发人员一定要懂测试,测试重点,如何测,这样在开发编码前便会首先考虑到如何测试,大大提供开发人员的编码水平;3. 一般软件开发都是相互协作来完成,开发人员参与测试可以让他更熟悉产品。
  • 产品人员
    在我看来,产品人员是相比测试人员,第二熟悉软件产品的人(如果对此不认可,咱们可以讨论一下)。产品人员进行测试,一来可以学习如何测试,二来可以更熟悉产品,三来可以反省自身在编写需求文档,原型图等文档方面的不足。

系统测试内容

对整个系统的测试,将硬件、软件、操作人员看作一个整体,检验它是否有不符合系统说明书的地方。

验收测试

验收测试定义

验收测试是部署软件之前的最后一个测试操作。在软件产品完成了单元测试、集成测试和系统测试之后,产品发布之前所进行的软件测试活动。它是技术测试的最后一个阶段,也称为交付测试。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。

验收测试分类

alpha测试

Alpha测试通常是阶段性的开发完成后所开始进行,一直持续到进入Beta测试阶段前的阶段。Alpha测试是一种验证测试,在模拟的环境中以模拟的数据来运行。在这个阶段中,通常是在开发单位开发人员与测试的测试人员,以模拟或实际操作性的方式进行验证测试。

wiki

beta测试

在系统测试中通常先进行Alpha测试以验证信息系统匹配用户以及设计需求所期望的功能。当Alpha阶段完成后,开发过程进入到Beta阶段,由公众参与的测试的阶段。Beta测试可称为确认测试,在一个真实的环境中以实际的数据来运行测试,以确认性能,系统运行有效率,系统撤消与备份作业正常,通过测试让信息系统日后可以更趋完善。

wiki

beta测试又分为两种:封闭测试和公开测试

封闭测试(Closed Beta,常简作封测或CB)是软件或服务等产品在开发完成后、将公开上市前的测试过程。相对于公开测试,封闭测试的主要用途是测试软件的功能和检查程序错误等等,因此通常只提供给少数人进行测试。有些公司会要求参与测试者签署保密协议,以避免测试的产品提前外流。MMORPG的封测结束之后,游戏公司常会将角色数据删除,但也有少数不删的。

公开测试(Open Beta,常简作公测或OB),一般常指软件或服务等产品在正式上市前开放给不特定人试用,虽然原意是希望试用者能够提报bug,但并不是把试用者当做真正的验证人员。由于通常为免费性质,故常常能够吸引到大批的试用者参与,可视为另一种营销策略。另一方面也节省下测试人员的成本,和验证稳定度(对于多人使用的带宽及机器是否能负载,又称压力测试)的时间。

gamma测试

Gamma测试是一个很少被提及的非正式测试阶段,该测试阶段对应的是对“存在缺陷”产品的测试。考虑到任何产品都可以被称为“存在缺陷”的产品(测试只能发现产品中存在的问题,不能说明产品不存在问题),因此这个概念存在一定的不确定性。

wiki