我们需要真正的脚本语言
陈能技
2007-9-8
原文:Hey Vendors, Give Us Real Scripting Languages - Bret Pettichord
大部分测试工具绑定了工具生产商指定的特定脚本语言,我们叫它厂商语言。这些语言很难学,实现得很弱,最重要的是,它们不鼓励测试员与开发人员之间的合作。测试员应该得到全特性的、标准的测试开发语言。为什么呢?
现在市面上的大部分测试工具,我们在使用时都要使用工具的脚本语言。令我最烦恼的是,为了使用他们的工具,我必须学习指定的脚本语言。大部分工具有录制功能,为你产生一些脚本,但是不可避免地,你要对脚本进行修改,自己编写脚本。这样的话,你就必须要学习额外的语言-厂商语言-这个语言只是在这个特定的工具上能使用!
破坏合作
因为厂商语言是特定的语言,开发人员对其知之甚少并且也不愿意学习它。我经常鼓励测试员和开发人员在自动化项目中一起合作。这是高效的合作方式。但是厂商语言挡在中间。它们把测试员和开发人员分开,孤立在指定的工具语言上。减少了共享、合作和改进的机会。
要把测试员和开发人员整合在测试过程中,我们已经有很多困难了。现在又多了个厂商语言的学习问题。你如果叫一个开发人员学习VB?没问题,因为他们毕竟可以在将来有使用得上的机会。你如果叫一个开发人员学习一个指定的语言,这个语言只能在这个工具上使用?你做梦吧!你已经很难让开发人员把注意力放在测试上了,现在又增加了一个困难。
为什么要把钱花在一个会破坏测试员与开发人员之间的合作关系的工具上?
方言
有很多这种厂商脚本的方言。有些是类C语言。意味着什么?意味着写出来的代码想C语言的代码,但是没有指针,所以你不能使用在C课程和书本上学习到的任何复杂的数据结构。C作为脚本语言来说是很差的。它是编译的,但是测试脚本语言是解释执行的。这是为什么类C语言不支持指针。
其它的有些使用类VB语言的方言。如果你了解VB,则代码会看起来很眼熟,但是你不能使用VB的标准库。而且,你在VB中学到的东西未必被应用在厂商脚本语言上。
也有一些工具使用类似面向对象的厂商脚本语言。面向对象是好的,但是你会发现对一个类的修改不会继承到它的子类。什么?因为厂商脚本语言认为这样更方便测试的管理安排。这样是否真的能帮助测试员还有待讨论,但是测试员真正需要的不是为测试特定设计的语言。他们应该得到标准的语言实现,这样才会更好地帮助他们的测试工作。
一些更新的测试工具现在开始使用真正的脚本语言,像JavaScript或VB。我希望这种趋势能继续下去。而且,如果一些旧的工具能重新设计以支持标准语言则会更好。标准语言有正式的规范,会帮助你的测试组更好地用在测试上。
重复地发明轮子
最近有些文章在描述怎样使用厂商脚本添加堆栈和队列,这其实是厂商脚本的落后体现。厂商语言使自动化测试人员浪费很多时间和精力在重新发明轮子。堆栈和队列在标准语言上已经得到很好的实现。
我自己也有同感。我必须为不同的厂商语言创建库来支持sting操作、日期计算、计算排列组合等。有些厂商语言也有这样的库,但是标准语言的库会更大、更全面,也更加健壮。
回到以前
很多非测试工具也嵌入了厂商语言。使其更难使用。John Ousterhout发明了TCL(Tool Control Language),使得跟C的集成更容易,并发布到公共领域。TCL现在被用在一些公共领域的测试工具上。
Ousterhout区分了系统编程语言(像Pascal、C、C++、Java等)和脚本语言(像Perl、Python、Rexx、TCL、VB、Unix shells等)。系统编程语言在从头开始构建方面和性能方面会更好点。而脚本语言在重用代码和快速开发方面有优势,是理想的自动化测试语言。
有些测试工具的厂商语言是在Ousterhout的TCL出现之前,当时Perl也还不成熟。但是那是那时候,现在则有了很多选择。
让厂商脚本语言退休
因为有了很多的选择,所以厂商脚本语言应该退休了。如果出现异常,没有什么第三方的书可以使用,只能参考和依赖厂商提供的书或帮助文档,这些文档未必会坦白告诉你厂商脚本语言的缺点。语言的课程也很难随工具附上,很昂贵,可能还要你亲自去学习。
测试自动化会很难,如果我们需要熟悉不同工具的不同语言的话。开发人员不会忍受有这么多限制和缺点的编程语言,我们也不应该忍受。
进一步学习请参考:
分享到:
相关推荐
大多数脚本语言的问题在于它们实际上并不是出色的编程语言。 但是由于它们方便,易于编写且没有编译开销,因此它们会被使用。 很多。 那不是好事。 因为:通常,脚本会长大并变成一个泥泞的球:真正难以维护的...
function 形式,对原有的 sub 形式不再支持 2007-6-2 VER 1.3.0.63 增强了同一脚本程序的多脚本语言功能,真正实现了同一脚本里使用多种语言 增加例程 javascript学习.sps 演示了VBS调用JS的...
尽管如此,JavaScript也不断发展,并且现在能够真正用来脚本化Java。Java6认识到这一事实,并且配备了一个绑定的JavaScript解释器,一般脚本化的功能能够很容易地嵌入到任何Java应用程序中。另外,一些JavaScript...
AutoHotkey是一款专业的热键Windows脚本语言。软件最大的特色是用户使用软件可以实现为游戏操纵杆和鼠标创建的热键。软件几乎可以实现所有的东西的自动化热键设置,包括发送击键和鼠标点击,启动程序/文件;剪贴板,...
1.使用轻型脚本语言(Lua),扩展了中文支持,大量内置扩展函数库,降低游戏制作门槛. 2.方便外接各种插件,支持纯中文易语言DLL,搭配各种第三方扩展类,模块,插件,工具更加高效。 3.脚本速度优秀,可制作各种类型2D游戏,...
增强了同一脚本程序的多脚本语言功能,真正实现了同一脚本里使用多种语言 2.增加例程 javascript学习.sps 演示了VBS调用JS的函数并得到返回值 3.修正了多语言脚本的Code代码段读取分析问题 2007-6-1 ...
增强了同一脚本程序的多脚本语言功能,真正实现了同一脚本里使用多种语言 2.增加例程 javascript学习.sps 演示了VBS调用JS的函数并得到返回值 3.修正了多语言脚本的Code代码段读取分析问题 2007-6-1 ...
作者从语法、对象、函数、继承、数组、正则表达式、方法、样式和优美的特性这9 个方面来呈现这门语言真正的精华部分,通过它们完全可以构建出优雅高效的代码。作者还通过附录列出了这门语言的毒瘤和糟粕部分,且告诉...
Pylint 是一个 Python 工具,除了平常代码分析工具的作用之外,它提供了更多的功能:如检查一行代码的长度,变量名是否符合命名标准,一个声明过的接口是否被真正实现等等。 Pylint 的一个很大的好处是它的高可配置...
在此脚本语言中只有一个语句,即print语句,该语句可以选择以双引号(“)分隔的字符串进行打印。通过这种简单的语法,该脚本语言的通用功能受到了限制,但它确实提供了如何以构建语言的方式将一些通用部分组合在...
鳟鱼脚本用javascript编写的经过编译的强类型脚本语言。 这是我第一次(真正)尝试编写一种完整的编程语言。 在此过程中,我学到了很多东西,最终将使它变得稳定并清理所有内容。特征严格类型的变量Javascript中的...
JScript 8.0 是一种有着广泛应用的现代脚本语言。它是一种真正面向对象的语言,不过仍保留其“脚本”特色。JScript 8.0 保持与 JScript 以前版本的完全向后兼容性,同时包含了强大的新功能并提供了对公共语言运行库...
shell是如此地重要,但令人惊奇的是,介绍shell的书没有真正令人满意的。所幸的是,我 看到了这本被人称为abs的书,这本书介绍了bash大量的细节和广阔的范围,我遇到的绝 大部分的技术问题--无论是我忘记的或是...
一个简单系统的基础,用于以各种编程和脚本语言创建别名/脚本/工具。 就像别名,但在类固醇上。 主要目标是杀死我们许多人使用的巨型rc文件,并提供一个不错的替代文件。 优点 动态重装而无需重装外壳; 可以包含在...
在使用脚本语言时常常需要增的新的功能,但有时因为脚本语言本来就已 经很慢、很大、很复杂了而不能实现;或者,所需的功能涉及只能用C语言提供的系统调 用或其他函数——通常所要解决的问题没有重要到必须用C语言...
shell 是如此地重要,但令人惊奇的是,介绍shell 的书没有真正令人满意的。所幸的是,我看到了 这本被人称为abs 的书,这本书介绍了bash 大量的细节和广阔的范围,我...想真正学习脚本编程的唯一途径就是编写脚本...
为什么我说Java是脚本语言 226 宽松语法,无语法语言 227 Linux与3D 228 伪码语言 229 最强大的语言原来是预处理 230 语言宿主 231 shell编程和交互式语句编程 232 Debug,编译期断言 232 图形原理之位图,图象和字体...
shell 是如此地重要,但令人惊奇的是,介绍shell 的书没有真正令人满意的。所幸的是,我看到了这本被人称为abs 的书,这本书介绍了bash 大量的细节和广阔的范围,我遇到的绝大部分的技术问题--无论是我忘记的或是...
Selenium 不同于一般的测试工具。一般的脚本测试工具录制...脚本语言。 如果你要执行其他语言格式的Selenium 脚本,那么,你需要使用Selenium 服务器。6 种语言的使用方法都是一样的。下面,我以Java 为例进行说明。
下面是3个我认为非常有趣的脚本语言: LiveScript LiveScript是CoffeeScript的间接后裔,有着函数式编程特征,例如模式匹配函数函数组合。 有兴趣的可以看一下10 LiveScript one liners to impress your friends。 ...