兰州拉面馆与半自动化测试

phpboy 2010-01-31

有BUG,QAMM说,顾客吃不上拉面了。

喔,我说(内心流汗),我看看。

作为开发者,我和我所在的项目组正在开发一个兰州拉面馆,该拉面馆经营的范围包括拉面、拉条子、炒面片以及各种西北风味小吃。我喜欢拉面:)现在,拉面馆面临交付,QAMM正忙着做最后的回归测试。

来到MM的测试环境拉面馆,嘿,测试环境拉面馆就是比开发环境拉面馆漂亮。红灿灿的辣椒油、大块大块的五香牛肉块、绿油油的小葱段、各种开胃小菜、已经揉好发好的拉面团。。。。再看看开发环境的拉面馆,两口大锅,一口下面条、一口盛牛肉汤,唉,一切都是那么简单,只有功能,没有数据。还有,MM的拉面馆里还有赏心悦目的服务员和帅气的顾客哩。

是这样,MM说。接下来,MM开始演示,她要了一碗拉面,毛细的,结果却是迟迟没有端出来。

下面条的操作确实是我实现的,那么为什么现在却端不出面呢?好吧,我说,我要看看。我详细的看过MM厨房环境,于是返回自己的厨房环境,首先,我建立了两个不同的顾客,接下来,是服务员,由于时间仓促,没时间打扮他们,一切都是山寨,接下来,是准备各种调料:面团、牛肉块、小葱和萝卜片。这个准备时间可真长,汗从我的脸上冒出来。终于,一切准备就绪,开始重现BUG,以顾客登录,要求一碗拉面、毛细。怪了,果然吃不上面!

我开始找原因,经过一个一个环节的仔细查找,终于找到了原因:原来前不久因为物价上涨,拉面馆决定上涨面食价格,但是这件事情遭到了政府的反对,政府的理由是:兰州人离不开兰州拉面,政府不允许涨价,于是另外一个程序员在老板的要求下,将盛面条的大碗全部变成了小碗,而该程序员并没有对我所实现的生产面条操作进行修改,于是拉面溢出,于是我们引以为傲的AOP异常拦截器及时拦截到这个异常,于是,客户看到:对不起,暂时不能给您提供服务,请联系拉面馆客服。

嗨,我的心稍安,修改程序,运行通过。看看时间,准备测试数据的时间占去了很大一部分时间。于是,我想:

1.出于不同的目的,开发人员为快速开发功能关注功能,测试人员为更好的模拟客户使用场景,开发环境与测试环境大部分情况下是不一致的,这种不一致最明显的表现就是数据。

2.当QA在测试环境发现BUG,对于开发人员来说,通常,一个比较枯燥且烦人的事情就是在本地开发环境建立相应的测试所需数据。有时候,特别是项目后期,这个数据越来越复杂。

3.有一部分的BUG是由于开发人员对系统没有整体功能的了解所造成的,没有清楚的理解功能之间的耦合关系。

所以,我想:

1.QA每验收一个故事,需要针对该故事的业务价值编写回归测试脚本和设计测试数据。

2.由开发人员将QA设计的测试数据进行自动化准备,和数据驱动测试一致,数据由环境准备。

3.开发人员将能够自动化的功能测试自动化(例如使用Selenium)

4.由QA维护系统的功能测试列表,列表包括功能点、功能回归测试脚本、测试准备数据、测试数据是否已经自动化、测试是否已经自动化。这个列表需要根据系统的变化也发生变化。

5.整个开发团队需要有一整张的系统功能架构图,这个图画在白板上,随着系统的增大而不断修改,每个成员都需要了解各个功能点相互之间的关联关系。

最后,我这样定义:对那些不能够自动化的功能测试进行的测试数据自动化称之为半自动化测试。理想情况下,所有故事都应该至少做到半自动化测试,这本质上也对QA提出了更高要求。

相关推荐