互联网项目开发过程中的测试分类

1. 前言

我接触互联网项目的开发将近半年时间了。在这半年时间里,基本接触了互联网软件产品过程中的两个重要环节,开发和测试。开发既有后端服务器的开发,也有Web前端的开发。在项目前1/3时间里,我是进行后端服务器开发,主要用Java开发,涉及到DICOM医学影像数据的解析和数据库的存储和读取;而到了项目的后2/3的时间里,基本上就完全转入前端开发了,主要是在AngularJS框架的基础上,应用Javascript/HTML/CSS语言进行前端的各项功能的实现。
随着项目的不断推进,项目组严格执行“测试驱动开发(TDD, Test Drive Develop)”的理念,即开发人员在接到一项新的需求时,首先要针对该需求进行测试代码的撰写,待测试代码审核通过后,才可以开始撰写需求的功能代码。
这里主要介绍在互联网项目开发过程中的几项测试,它们分别是UT, IT, ST和AT。

2. 测试分类:

以上提到的三种测试,分别对应着:

测试简称 测试全称 测试名称 撰写人员
UT Unit Testing 单元测试/单体测试 开发人员
IT Integration Testing 集成测试/功能测试 开发人员/测试人员
ST System Testing 系统测试 测试人员/质量部
UAT User Acceptance Testing 用户接受测试(验收测试) 开发人员/测试人员

2.1 单元测试(UT)

单元测试是测试的最小单元。
单元测试的任务包括:
(1) 模块接口测试,也就是对所有类的外部可以访问的函数进行测试;
(2) 模块局部数据结构测试;
(3) 模块边界条件测试;
(4) 模块中所有独立执行通路测试;
(5) 模块的各条错误处理通路测试。
在互联网项目的前端代码测试中,Jasmine为JavaScript提供了测试驱动开发的框架,对于前端软件开发提供了良好的质量保证。

2.2集成测试(IT)

集成测试阶段是以黑盒测试法为主。在项目自底向上集成的早期,白盒法测试占一定的比例,而随着集成测试的不断深入,渐渐地,黑盒法测试占据主导地位。
集成测试也就是对某一项需求实现后的功能测试,即测试新添加的代码是否完全实现了需求里所要求的功能。
针对需求里所描述的这项功能,开发或测试人员在撰写集成测试代码时,要能够通过撰写代码来模拟用户的实际操作。如在撰写前端IT时,要模拟用户的点击按钮事件,鼠标点击和拖动事件等,然后针对模拟用户的这些操作,预期相应的结果,并进行判断,来验证功能的正确性和完整性。
在撰写IT时,如果需要测试的功能需要向后台发出请求数据的行为,这时需要将服务做Mock,即需要假设一个服务器,这个服务器会根据前台发出的请求信息返回出数据,而不需要真正去后台请求数据库。

2.3 系统测试(ST)

从技术角度看,系统测试是整个测试阶段的最后一步,所有的开发和测试在这一点上集中表现为生成一个具有一定功能的软件系统。该阶段主要对系统的准确性及完整性等方面进行测试。
系统测试主要进行:功能确认测试、运行测试、强度(压力)测试、并发测试、安全性测试等。 系统测试的测试人员由测试组成员(或质量保证人员)或测试组成员与用户共同测试。系统测试是在整个系统开发完成,即将交付用户使用前进行。在这一阶段,完全采用黑盒法对整个系统进行测试。

2.3 用户接收测试(UAT)

验收测试是向未来的用户表明系统能够像预定的要求和设计那样工作。在集成测试后已经将每一个基本功能都进行了正确性测试后。整个项目已经按照设计把所有的功能模块都组装成了一个完整的软件系统,而且接口错误也已经基本排除了。接下来,就应用进一步验证软件的有效性,即软件的功能和性能是否如同用户所期待的那样。
验收测试在测试某个具体的功能模块时,和集成测试的写法比较类似。但是验收测试时,程序是要真正地连接前台和后台的,也就是会通过service向后台数据库发出请求,后台数据库要返回正确的数据,前台再正确地呈现出来。因此,在撰写验收测试的代码时,在准备数据阶段,是需要提前通过代码向数据库中注入测试数据的。
只要使验收测试的代码,真正地连通了前后台,也才能真正模拟软件在使用过程中的场景,以验证软件设计的正确性。

3. 参考资料及扩展阅读:

  1. http://www.ithao123.cn/content-8074028.html
  2. 测试过程之UT-IT-ST别;
    http://www.51testing.com/html/15/384415-233345.html
  3. 灵性设计之测试——做有意义的测试(UT&IT);
    http://www.xuebuyuan.com/1622678.html
  4. 阮一峰:持续集成是什么?
    http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html
  5. 浅谈测试驱动开发(TDD);
    http://www.ibm.com/developerworks/cn/linux/l-tdd/

你可能感兴趣的:(互联网,测试,TDD)