我有一个梦想,有一天我的办公桌上不再是一片狼藉,整洁的台面上只有一个大大的红色按钮,每天最重要的工作,就是上班后狠狠地按下红色按钮,然后悠闲地泡上一杯西湖龙井,拿起最新一期的参考消息,看看美联储是不是又在加印该死的“废纸”。在我享受生活的同时,一份份准确严谨的测试报告就会自动发往开发部门,并抄送到各位领导的邮箱中。测试报告包含最新软件版本的缺陷列表,并指出了可接受的缺陷修复时间。剩下的一切都是“傲慢自大”的软件开发人员的事,多么美妙的一天。
不过梦想永远都是梦想,就像马丁·路德·金遇刺身亡42年后的今天,美国仍然不是一个人人平等、没有种族歧视的国家一样。如果我的梦想有一天变为现实,那么我需要面对的可能不是悠闲的生活,而是一份解聘通知书。因为真到那一天,软件测试工作就变成人人都能完成的简单事情,公司完全可以随便请一个人来负责我的工作,而不必付出很高的薪水。这真是一个一点儿也不好笑的笑话,测试人员的终极目标居然是让自己失去饭碗,不过,幸好这一天还远着呢。
现在,让我们从梦想世界回到现实中来,现实是残酷的,笔者所在的测试部门,已经拥有成千上万个QTP自动化测试案例,不过它们仅仅是自动化测试案例而已。梦想离笔者还远着呢,这些案例总是执行失败,失败原因千奇百怪,既有测试环境不稳定导致的失败,也有QTP工具莫名其妙的错误。测试工程师投入了大量的精力去维护这些自动化测试案例,可惜效果并不好,自动化测试的有效率依然很低,很多软件系统的自动化测试有效率常年保持在60%左右,怎么办?如何向领导解释?
要提高自动化测试的有效性,笔者认为有两种办法:
第一,降低自动化测试对象的层次,即采用底层接口自动化测试。一个软件系统的上层界面可能会经常发生变化,但是底层功能模块之间接口和系统之间接口的变化却一定不会很多,除非遇到软件重构。这样做就能在很大程度上避免了用户界面频繁变化对自动化测试的影响,从而降低了维护的工作量。
第二,采取更可靠的基于GUI的自动化测试工具。目前QTP无疑是使用最广泛的自动化测试工具,但是实践中笔者发现它的录制/回放功能很不稳定,经常会发生测试对象无法识别的异常情况,甚至莫名其妙地运行失败。怎么办?放弃基于用户界面的自动化测试?显然不行,因为底层接口的自动化测试,有其自身的局限性,首先你无法通过它来测试用户界面,其次你很难用它来测试软件系统的完整业务流程。唯一可行的办法就是寻找一种更可靠、更有效的工具来代替它,在这里笔者推荐Selenium和WebDriver两种开源的自动化测试工具。从目前的实践来看,它们远比QTP更稳定,测试案例的执行速度也更快,使用成本会更低。
写作背景
最近几年自动化测试已日益深入人心,如果现在有人去面试软件测试工程师岗位,而又完全不了解自动化测试,那么他几乎就不可能得到职位。因此,对测试工程师而言,了解自动化测试原理、掌握几种主流的自动化测试软件,已经变成自动化测试岗位最基本的要求。对有志于从事软件测试行业的大学应届毕业生而言,了解自动化测试就是一块不错的敲门砖。今年笔者所在的测试部门来了两位实习生,由笔者辅导他们完成一些自动化测试任务。实习结束后他们并没有与公司签约,后来与他们沟通才知道,别的公司肯出双倍的薪水聘用他们,看重的正是他们有自动化测试的工作经验。由此,读者朋友们就不难看出业界对自动化测试的重视程度。
“云计算”绝对是2010年最热的IT词汇,甚至沾上一点“云”概念的股票都会一飞冲天。“云”听起来很虚幻,其实就是瘦客户端加网格计算。今后客户端不再会有大量的计算任务,计算和存储都被放在云上。在笔者看来,今后的客户端应该就是一个浏览器,用户所有的操作都是通过浏览器来实现的。Google刚发布的操作系统Chrome OS,就是基于这一理念设计的。B/S和C/S架构的软件系统,应该会慢慢演变为Browser/Cloud模式。如此看来在“云计算”时代,Web自动化测试依然很重要,而且会越来越重要。因此,笔者萌生了写作一本关于Web自动化测试的书籍。