在地球尚未毁灭的某天,手动测试的同事找到你所在的自动组,问是否可以帮助他们自动化一个需要连续添加100个条目的测试用例,因为他们觉得这是一个噩梦。你口头上说要先烟酒烟酒才能知道,但是内里早就满心欢喜:这算个啥,难不倒咱,咱有如此powerful的SilkTest,咱自动化组表现的时候到了。

你蹭蹭地打开电脑,新建脚本,准备开始抓取…什么?大部分控件是特殊技术实现的,silktest统统无法识别。什么?你忘记了如何点击右键菜单并且选择菜单上的选项,需要花时间阅读帮助文档和google。什么?时间紧张你需要尽快给个说法。“喂,朋友帮帮忙,你可知道我们需要抓取定义,编写类,实例化对象,接下来处理测试逻辑,加上调试,处理可能遇到的乱七八糟的问题,起码得给我个两三天才行啊。”


慢!


你是不是搞的太复杂了?


好好回想一下,别人只是要求一段可以做事的代码,一个小工具,而并非需要正式release测试用例。而且,这段代码只需要在集成测试时运行一次,也就不存在什么维护问题,你的抓取定义,建类全是为了增强可维护性,在这种情况下统统不给力,完全不是必需的。什么,你还要写复杂的测试逻辑?完全不用,你直接用录制功能即可。到底测试通过与否,执行人员一眼就可以看出来,根本不用你费神地考虑如何在不可识别的控件上用什么位图比较的方法来确定测试是否成功。还记得自动测试定律No.1么,自动测试不是万能的。


所以,自诩熟练使用SilkTest的你(我),千万不要忘记SilkTest还提供了基本的录制功能,也千万不要忘记解决不同的问题要用不同的方法。


你不愧是有经验的自动测试工程师,三下五除二,这次只花了一分钟就录制好了测试脚本。一跑,咦,原来,用户手动操作一次就可以增加两个条目,一共只需要点击50次就可以增加100个条目。这也就是说手工做的话并不是什么噩梦,两分钟即可完成。那赶紧地,把这个消息告诉手动的同事,为这个用例自动化,意义不大!


智者言:如果你手里有一把锤子,所有东西看上去都像钉子。俺说:放下榔头,立地成佛。(锤子实在太难听了)

SilkTest高级进阶系列8 – 放下榔头,立地成佛的更多相关文章

  1. SilkTest高级进阶系列6-motif tag

    看SilkTest代码的时候不小心看到winclass.inc里面的一些类申明使用的是motif tag,例如: [-] winclass MessageBoxClass : DialogBox [ ...

  2. SilkTest高级进阶系列7-用PostMessage模拟鼠标

    SilkTest可以通过调用Windows API来向控件发送消息,从而进行特定的操作.下面这段code使用PostMessage来向计算器上的清除键发送WM_LBUTTONDOWN和WM_LBUTT ...

  3. SilkTest高级进阶系列9 – 异步执行命令

    我们常常会使用sys_execute函数执行一些外部的程序或者命令来做一些事情,但是由于sys_execute是一个同步的函数,它会等待执行的命令完成后才会返回.在大多数情况下,这个函数足够用了. 但 ...

  4. SilkTest高级进阶系列10 – bitmap工具bitview

    SilkTest 提供了一个bitmap的工具,它可以帮助我们捕捉,比较bitmap文件.该bitmap工具的位置是~/SilkTest/bitview.exe 运行该工具后,你会发现它提供了捕捉控件 ...

  5. 高级T-SQL进阶系列 (一)【上篇】:使用 CROSS JOIN 介绍高级T-SQL

    [译注:此文为翻译,由于本人水平所限,疏漏在所难免,欢迎探讨指正] 原文连接:传送门 这是一个新进阶系列的第一篇文章,我们将浏览Transact-SQL(T-SQL)的更多高级特性.这个进阶系列将会包 ...

  6. C#进阶系列——一步一步封装自己的HtmlHelper组件:BootstrapHelper

    前言:之前学习过很多的Bootstrap组件,博主就在脑海里构思:是否可以封装一套自己Bootstrap组件库呢.再加上看到MVC的Razor语法里面直接通过后台方法输出前端控件的方式,于是打算仿照H ...

  7. C#进阶系列——MEF实现设计上的“松耦合”(二)

    前言:前篇 C#进阶系列——MEF实现设计上的“松耦合”(一) 介绍了下MEF的基础用法,让我们对MEF有了一个抽象的认识.当然MEF的用法可能不限于此,比如MEF的目录服务.目录筛选.重组部件等高级 ...

  8. C#进阶系列——DDD领域驱动设计初探(五):AutoMapper使用

    前言:前篇搭建了下WCF的代码,就提到了DTO的概念,对于为什么要有这么一个DTO的对象,上章可能对于这点不太详尽,在此不厌其烦再来提提它的作用: 从安全上面考虑,领域Model都带有领域业务,让Cl ...

  9. C#可扩展编程之MEF学习笔记(五):MEF高级进阶

    好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...

随机推荐

  1. 解决linux下javac -version和java -version版本显示不一致

    解决linux下javac -version和java -version版本显示不一致 [javascript] view plaincopy [root@localhost usr]# $JAVA_ ...

  2. API通用设计原则

    什么是好的API? ·        完备(Be Complete) 对确定重点支持的用户场景具有完备的功能支持.就是说,用户通过对一组API的调用能够完成预期的功能. ·        不冗余(Be ...

  3. duck

    http://bjdw.artgooo.com/event/rubber/duck.shtml

  4. notepad++ 配置笔记

    0.notepad++简单介绍 Notepad++是一套很有特色的自由软件的纯文字编辑器,有完整的中文化接口及支援多国语言撰写的功能.它的功能比 Windows 中的 Notepad更强大.Notep ...

  5. ActivityManager

    android.app.ActivityManager 这个类主要用来管理全部设备上的Activities. 权限:android.permission.GET_TASKS 方法:| 返回类型     ...

  6. new对象数组时的内存布局

    #include <iostream> #include <limits> using namespace std; #define SAFE_DELETE(x) \ { \ ...

  7. MySQL生成-单据号不重复

    需求生成一个单据编号 单据编号结构: “单据类型” + “日期” + “流水号” 例子 : GD201605230000007 代码: DELIMITER $$ CREATE PROCEDURE `y ...

  8. kettle 数据迁移 (转)

    最近在公司搞一个项目重构迁移问题,旧项目一直在线上跑,重构的项目则还没上线.重构之后数据库表结构,字段,类型等都有变化,而且重构的数据库由oracl改为mysql.这样就设计到数据迁移问题,别人推荐下 ...

  9. 怎样基于谷歌地图的Server缓存公布Image Service服务

    怎样基于谷歌地图的Server缓存公布Image Service服务 第一步:下载地图数据 下载安装水经注万能地图下载器,启动时仅仅选择电子.谷歌(这里能够依据自己的须要选择).例如以下图所看到的. ...

  10. 【OpenCV】漫水填充

    漫水填充:也就是用一定颜色填充联通区域,通过设置可连通像素的上下限以及连通方式来达到不同的填充效果;漫水填充经常被用来标记或分离图像的一部分以便对其进行进一步处理或分析,也可以用来从输入图像获取掩码区 ...