概述
开发和测试,起源本没有分家。社会精细化,分工出现,两者渐行渐远。开发人员,创造世界的人,在建造高楼大厦的时候,必会埋下隐患。测试人员,世界的验证者,以挑剔的眼光,审视眼前需要验证的对象。
代码是开发人员的产出;bug是测试人员的产出
人,被人盯住挑自己辛苦创造的东西的毛病时,如芒在背,总是不喜欢这样的感觉。
于是,开发和测试,逐渐对立起来。
人在分工后,思维方式也变得不同(测试应当是“证坏”非“证好”),所以,开发人员看待问题的角度和测试人员诸多时候不能合轨。
于是,矛盾必然产生。
可是,分工导致个人只不能兼顾,所以总需要其他人配合才能完整做好一个事情。
所以,开发和测试,如同左右手,实则分不开。
幼童一起玩耍,一会打起来一会又和好,开发和测试如同幼童。
看待问题,则如看待孩子们,或打或和,其实没有什么,只要互相促进,把事情做好,不意气用事即可。
这里,要求的是一颗平常心,合理看待矛盾,对事不对人即可。
对事不对人,说起来容易做则难。没有包容之心,没有平淡之心,很难做到的。这需要不断修炼,不断提高自己的素养,需要因对方而异,需要悟通人生。
开发与测试关系
软件开发是生产制造软件;软件测试是验证开发出来软件的质量。类比传统加工制造企业,软件开发人员就是生产加工的工人,软件测试人员就是质检人员。 关系应该是: 1、没有软件开发就没有测试,软件开发提供软件测试的对象。 2、软件开发和软件测试都是软件生命周期中的重要组成部分 3、软件开发和软件测试都是软件过程中的重要活动。 4、软件测试是保证软件开发产物质量的重要手段。
开发与测试的分工
图1 开发和测试人员的分工
工作内容
从图1可以看出,开发和测试是一个上下游的关系。
具体而言,开发人员主要做这几件事情:
第一,对软件需求说明书进行详细评审,弄清楚要开发一个什么样的软件。
第二,编写软件详细设计、单元测试和集成测试规程文档。软件详细设计文档是最重要的文档,在里面,要写清楚自己程序的流程、函数设计、异常保护考虑等。在动手写程序之前,一定要将软件详细设计文档写好,等评审通过了再写代码。
第三,编写代码,用程序实现软件的功能。很多人认为的软件开发就是写代码,其实这是一种很狭隘的理解,写代码在整个开发流程中,只占了很小的部分。
第四,程序写好之后,开发人员要对它进行单元测试和集成测试也叫(自测),确保程序的正确性。这里就出现了“测试”二字,但与软件测试所做的“测试”是不同的,他们做的是“系统测试”。等自测通过之后,并且相关文档也写好之后,就可以提交程序版本,供测试人员进行测试了。
相对开发,测试人员主要做这几件事情:
第一,参与软件需求说明书的评审,对软件要实现的功能有一个大致的了解。
第二,搭建测试环境。这个是很重要的,也是比较难的事情。什么是“测试环境”呢?就是说,不管什么软件,都有个运行的条件,如操作系统类型、参数设置及配套软硬件设施等,这些统称为“环境”。为了保证程序功能的正确性,要在软件发布之前,尽量模拟软件实际的运行环境,这就是搭建测试环境时要做的事情。很多软件在正式商用之后出问题,就是测试的时候没有还原现场环境所致。
第三,对软件进行系统测试并输出测试报告。所谓系统测试,就是指将配套的所有软件都运行起来,看一下所有的功能是否正常。当出现问题的时候,要及时和开发人员联系,以修正软件缺陷。
第四,指导现场人员安装软件程序,并在必要的时候亲自出差到现场去安装软件。因此,测试人员也可能会经常出差的。
“三足鼎立”
开发人员的主要任务是用程序完成软件需求,而测试人员的主要任务则是保证程序功能的正确性,他们做事的依据都是需求开发工程师编写的需求说明书。
在实际的软件开发项目中,需求开发工程师、软件开发工程师和软件测试工程师之间的交流是很频繁的,如图2所示。
图2 三类角色的“三足鼎立”
就像“三国时期”的魏蜀吴“三足鼎立”一样,需求开发工程师、软件开发工程师和软件测试工程师所站的立场不同,对软件的认识也不同。大家需要相互讨论、协商,挑选出一套最佳的软件实现方案。