基于Selenium WebDriver和Cucumber
温素剑
前言
我有一个梦想,有一天,我的办公桌上不再是一片狼藉,整洁的台面上只有一个大大的红色按钮。我每天最重要的工作,就是上班后狠狠地按下红色按钮,然后悠闲地泡上一杯西湖龙井,拿起最新一期的《参考消息》,看看美联储是不是又在加印该死的“废纸”。在我享受生活的同时,一份份准确严谨的测试报告就会自动发往开发部门,并抄送到各位领导的邮箱中。测试报告中包含最新的软件版本的缺陷列表,并指出了可接受的缺陷修复时间。剩下的一切都是“傲慢自大”的软件开发人员的事,多么美妙的一天。
不过梦想永远都是梦想,就像马丁?路德?金遇刺身亡42年后的今天,美国仍然不是人人平等。没有种族歧视的国家。如果我的梦想有一天变为现实,那么我需要面对的可能不是悠闲的生活,而是一份解聘通知书。因为真到那一天,软件测试工作就变成扫地大妈都能完成的简单事情,公司完全可以请一位清洁工来负责我的工作,而不必付出更高的薪水。这真是一个一点也不好笑的笑话,测试人员的终极目标居然是让自己失去饭碗,不过幸好这一天还远着呢。
现在,让我们从梦想世界回到现实中来。现实是残酷的,笔者所在的测试部门,已经拥有了成千上万个QTP自动化测试案例,不过它们仅仅是自动化测试案例而已。这些案例总是执行失败,而失败原因也是千奇百怪,既有测试环境不稳定导致的失败,也有QTP工具莫名其妙的错误。测试工程师投入了大量的精力去维护这些自动化测试案例,可惜效果并不好,自动化测试有的效率依然很低。很多软件系统的自动化测试效率常年保持在60%左右,怎么办?如何向领导汇报?如何解释?
要提高自动化测试的有效性,笔者认为有两种办法。
第一,降低自动化测试对象的层次,即采用底层接口自动化测试。一个软件系统的上层接口可能会经常发生变化,但是底层功能模块间接口、系统间接口的变化却一定不会很频繁,除非是遇到软件重构。这样做就能在很大程度上避免用户接口频繁变化对自动化测试的影响,从…