如何对Wind API调用程序怎么进行单元测试试

如何对Wind API调用程序进行单元测试?
大奖章|量化投资|量化交易平台|交易接口|金融数据
如何对Wind API调用程序进行单元测试?
Wind API每次调用start方法都会启动登陆界面,有什么办法可以在程序中进行这个登陆操作。这样,我们做自动化测试的时候可以不需要一次次去点了,而且也可以做Integrated Build。
浏览数(1479)
目前可以先启动Wind终端就可以追求代码质量(14): 对 Ajax 应用程序进行单元测试 - ImportNew
Ajax 在近期无疑是 Web 开发界最时髦的字眼之一 —— 与 Ajax 相关的工具、框架、书籍以及 Web 站点的剧增就是该技术流行的最好证明。 此外,Ajax 应用程序也相当灵巧,不是吗?不过,像任何一个开发过 Ajax 应用程序的人证实的一样, 对 Ajax 执行测试真的很不方便。事实上,Ajax 的出现已经从根本上使得许多测试框架和工具失效,因为它们并没有针对异步 Web 应用程序测试进行设计!
有趣的是,某个支持 Ajax 的框架的开发人员注意到了这个限制, 并为此做了一些非常新颖的设计:内置的可测试性。除此之外,由于该框架简化了使用 Java(TM) 代码(而不是 JavaScript)创建 Ajax 应用程序,它的起点甚高,并且充分利用了 Java 平台上无可置疑的标准测试框架:JUnit。
我所论及的框架当然是非常流行的 Google Web Toolkit,也就是 GWT。在本文中,我将向您展示 GWT 如何实际地利用 Java 兼容性, 使 Ajax 应用程序的每个部分都能像与之对应的同步应用程序一样进行测试。
JUnit 和 GWTTestCase
因为与 GWT 有关的 Ajax 应用程序采用 Java 代码编写, 所以非常适合开发人员使用 JUnit 进行测试。 事实上,GWT 开发小组还为此创建了一个帮助器类 GWTTestCase,扩展自 JUnit 的 3.8.1 TestCase。 该基类添加了一些功能,可测试 GWT 代码并处理某些基础实现从而启动并运行 GWT 组件。
需要提醒的是:GWTTestCase 并非用来测试 与 UI 相关的代码 —— 它是为了便于测试那些由 UI 交互触发 的异步问题。对 GWTTestCase 用途的误解使许多刚接触 GWT 的开发人员备受挫折, 因为他们期望能够用它方便地模拟用户界面,但最终发现这是徒劳的。
Ajax 组件有两个基本组成: 体验和功能,这些都被设计成异步方式。 图 1 演示了一个模拟 Web 表单的简单 Ajax 组件。 由于该组件支持 Ajax,表单的提交是异步执行的(即:无需重新载入与传统表单提交关联的页面)。
图 1. 一个支持 Ajax 的简单 Web 表单
输入一个有效单词,单击组件的 Submit 按钮,将向服务器发送消息请求该单词的定义。 该定义通过回调异步返回,相应地插入到 Web 页面,如图 2 所示:
图 2. 单击 Submit 按钮后显示响应
功能性和集成测试
图 2 所示的交互测试可用于多个不同场景, 但是其中两种场景最为常见。从功能性观点考虑,您或许希望编写一个测试:填入表单值,单击Submit 按钮,然后验证表单是否显示定义。 另外一个选择是集成测试,使您能够验证客户端代码的异步功能。GWT 的 GWTTestCase 正是 被设计用来执行此类测试。
需要牢记的是:在 GWTTestCase 测试用例环境下不可以进行用户界面测试。 在设计和构建 GWT 应用程序时,您必须清楚不要依赖用户界面测试代码。 这种思路需要把交互代码从业务逻辑中分离出来, 正如您已经了解的,这是最佳的入门实践!
举例而言,重新查看图 1 和图 2 所示的 Ajax 应用程序。 该应用程序由四个逻辑部分构成:TextBox 用于输入目标单词,Button 用于执行单击,还有两个 Label(一个用于 TextBox,另一个显示定义)。 实际 GWT 模块的初始方法如清单 1 所示, 但是您该如何测试这段代码呢?
清单 1. 一个有效的 GWT 应用程序,但是如何测试它?
public class DefaultModule implements EntryPoint {
public void onModuleLoad() {
Button button = new Button(&Submit&);
TextBox box = new TextBox();
Label output = new Label();
Label label = new Label(&Word: &);
HorizontalPanel inputPanel = new HorizontalPanel();
inputPanel.setStyleName(&input-panel&);
inputPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
inputPanel.add(label);
inputPanel.add(box);
button.addClickListener(new ClickListener() {
public void onclick(Widget sender) {
String word = box.getText();
WordServiceAsync instance = WordService.Util.getInstance();
instance.getDefinition(word, new AsyncCallback() {
public void onFailure(Throwable error) {
Window.alert(&Error occurred:& + error.toString());
public void onSuccess(Object retValue) {
output.setText(retValue.toString());
}catch(Exception e) {
e.printStackTrace();
inputPanel.add(button);
inputPanel.setCellVerticalAlignment(button,
HasVerticalAlignment.ALIGN_BOTTOM);
RootPanel.get(&slot1&).add(inputPanel);
RootPanel.get(&slot2&).add(output);
清单 1 的代码在运行时发生了严重的错误:它无法按照 JUnit 和 GWT 的 GWTTestCase 进行测试。 事实上,如果我试着为这段代码编写测试,从技术方面来说它可以运行,但是无法按照逻辑工作。考虑一下:您如何对这段代码进行验证?惟一可用于测试的 public 方法返回的是void, 那么,您怎么能够验证其功能的正确性呢?
如果我想以白盒方式验证这段代码,就必须分离业务逻辑和特定于用户界面的代码,这就需要进行。这本质上意味着把清单 1 中的代码分离到一个便于测试的独立方法中。 但是这并非听上去那么简单。很明显组件挂钩是通过 onModuleLoad() 方法实现, 但是如果我想强制其行为,可能 必须操纵某些用户界面(UI)组件。
分解业务逻辑和 UI 代码
第一步是为每个 UI 组件创建访问器方法, 如清单 2 所示。按照该方式,我可以在需要时获取它们。
清单 2. 向 UI 组件添加访问器方法使其可用
public class WordModule implements EntryPoint {
private TextBox textB
private Label outputL
protected Button getButton() {
if (this.button == null) {
this.button = new Button(&Submit&);
return this.
protected Label getLabel() {
if (this.label == null) {
this.label = new Label(&Word: &);
return this.
protected Label getOutputLabel() {
if (this.outputLabel == null) {
this.outputLabel = new Label();
return this.outputL
protected TextBox getTextBox() {
if (this.textBox == null) {
this.textBox = new TextBox();
this.textBox.setVisibleLength(20);
return this.textB
现在我实现了对所有与 UI 相关的组件的编程式访问(假设所有需要进行访问的类都在同一个包内)。以后我可能需要使用其中一种访问进行验证。我现在希望限制 使用访问器,如我已经指出的,这是因为 GWT 并非设计用来进行交互测试。所以,我不是真的要试图测试某个按钮实例是否被单击, 而是要测试 GWT 模块是否会对给定的单词调用服务器端代码,并且服务器端会返回一个有效定义。方法为将 onModuleLoad()方法的定义获取逻辑推入(不是故意用双关语!)一个可测试方法中,如清单 3 所示:
清单 3. 重构的 onModuleLoad 方法委托给更易于测试的方法
public void onModuleLoad() {
HorizontalPanel inputPanel = new HorizontalPanel();
inputPanel.setStyleName(&disco-input-panel&);
inputPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
Label lbl = this.getLabel();
inputPanel.add(lbl);
TextBox txBox = this.getTextBox();
inputPanel.add(txBox);
Button btn = this.getButton();
btn.addClickListener(new ClickListener() {
public void onClick(Widget sender) {
submitWord();
inputPanel.add(btn);
inputPanel.setCellVerticalAlignment(btn,
HasVerticalAlignment.ALIGN_BOTTOM);
if(RootPanel.get(&input-container&) != null) {
RootPanel.get(&input-container&).add(inputPanel);
Label output = this.getOutputLabel();
if(RootPanel.get(&output-container&) != null) {
RootPanel.get(&output-container&).add(output);
如清单 3 所示,我已经把 onModuleLoad() 的定义获取逻辑委托给 submitWord 方法, 如清单 4 定义:
清单 4. 我的 Ajax 应用程序的实质!
protected void submitWord() {
String word = this.getTextBox().getText().trim();
this.getDefinition(word);
protected void getDefinition(String word) {
WordServiceAsync instance = WordService.Util.getInstance();
instance.getDefinition(word, new AsyncCallback() {
public void onFailure(Throwable error) {
Window.alert(&Error occurred:& + error.toString());
public void onSuccess(Object retValue) {
getOutputLabel().setText(retValue.toString());
}catch(Exception e) {
e.printStackTrace();
submitWord() 方法又委托给 getDefinition() 方法,我可以用 JUnit 测试它。getDefinition() 方法从逻辑上独立于特定于 UI 的代码(对于绝大部分而言),并且可以在没有单击按钮的情况下得到调用。另一方面, 与异步应用程序有关的状态问题和 Java 语言的语义规则也规定了我不能在测试中完全 避免与 UI 相关的交互。仔细查看清单 4 中的代码,您能够发现激活异步回调的 getDefinition() 方法操纵了某些 UI 组件 —— 一个错误警告窗口以及一个 Label 实例。
我还可以通过获得输出 Label 实例的句柄,断言其文本是否是给定单词的定义,从而验证应用程序的功能。 在用 GWTTestCase 测试时,最好不要 尝试手工 强制改变组件状态,而应该让 GWT 完成这些工作。举例而言,在清单 4 中,我想验证对某个给定单词返回了其 正确定义并放入一个输出 Label 中。无需操作 UI 组件来设置这个单词;我只要直接调用 getDefinition 方法,然后断言 Label 具有对应定义。
既然我已经编写好了计划进行测试的 GWT 应用程序,我需要实际编写测试,这意味着设置 GWT 的 GWTTestCase。
设置 GWTTestCase
若想从 GWTTestCase 的测试魔力中获益,需要遵守一些规则。 幸运的是,规则很简单:
所有用于实现测试的类和待测 GWT 模块必须位于同一个包内。
运行测试时,您必须至少传递一个 VM 参数,指明在哪种 GWT 模式(托管或 Web)下运行测试。
您必须实现 getModuleName() 方法,它返回一个 String,表示您的 XML 模块文件。
最后,因为与服务器端实体通信的 Ajax 应用程序在本质上是异步的,GWT 还提供了 Timer 类 , 以便延迟 JUnit,使异步行为在进行相关断言之前全部完成。
实现 getModuleName 和 Timer 类
我已经指出,我的测试集中于 getDefinition() 方法(如
所示)。 您可以从代码看到,测试逻辑非常简单:传入一个单词(比如pugnacious),然后验证相应的 Label 文本是否得到正确定义。很简单,对吗?但是不要忘记,getDefinition() 方法在 AsyncCallback 对象中具有某种相关的异步性。
GWTTestCase 类是一个抽象 类,因为它的 getModuleName() 方法就是这么声明的;因此,当您 扩展该类时,您需要实现 getModuleName()(除非您是在为框架创建自己的基抽象类)。模块名实际上就是您的 GWT XML 文件所在的包结构的名称去掉文件扩展名。举个例子,在本例中, 我有一个名为 WordModule.gwt.xml 的 XML 文件,它位于 一个目录结构如:com/acme/gwt。相应的, 模块的逻辑名称为com.acme.gwt.WordModule, 这会让您想到 Java 平台的普通包模式。
我已经得到一个模块名,可以开始定义测试用例了,如清单 5 所示:
清单 5. 您必须实现 getModuleName 方法并提供一个有效的名字
import com.google.gwt.junit.client.GWTTestC
import com.google.gwt.user.client.T
public class WordModuleTest extends GWTTestCase {
public String getModuleName() {
return &com.acme.gwt.WordModule&;
到目前为止一切良好,但是我还没有执行任何测试!由于我的 Ajax 应用程序使用 AsyncCallback 对象,在通过测试用例调用getDefinition() 方法时, 我必须强迫 JUnit 延迟运行;否则测试将由于没有任何响应而失败。这就要用到 GWT 的 Timer 类。Timer 使我能够重写 getDefinition() 的 run 方法,在 Timer 内完成测试用例逻辑。(测试用例以独立线程运行,有效地阻塞 JUnit 完成整个测试用例)。
以我的测试为例,我将首先调用 getDefinition() 方法,然后提供一个 Timer 的 run() 方法的实现。run() 方法得到输出 Label 实例的文本并验证是否是正确定义。 定义了 Timer 实例后,我就需要确定其何时运行,同时强制 JUnit 挂起直至 Timer 实例完成。也许听起来有点复杂,不必担心,因为实践起来非常简易。实际上,清单 6 展示了整个过程:
清单 6. 使用 GWT 轻松测试
public void testDefinitionValue() throws Exception {
WordModule module = new WordModule();
module.getDefinition(&pugnacious&);
Timer timer = new Timer() {
public void run() {
String value = module.getOutputLabel().getText();
String control = &inclined to quar...&;
assertEquals(&should be & + control, control, value);
finishTest();
timer.schedule(200);
delayTestFinish(500);
正如您所见,Timer 的 run() 方法 是我真正验证 Ajax 应用程序功能及其应用远程过程调用的地方。 请注意 run 方法的最后一步是调用finishTest() 方法, 它意味着一切如预期运行,JUnit 可以不受阻塞正常运行。 在实践中,您可能会发现需要根据异步行为完成所需的时间调整延迟时间。 但用 JUnit 测试 GWT 应用程序的要点在于:您能够在无需 部署完整功能的 Web 应用程序的情况下测试它。因此,您能够更早地并且更 频繁地 测试您的 GWT 应用程序。
运行 GWT 测试
前面我曾提到,如果您想实际运行您的 GWT JUnit 测试,您必须执行大量琐碎的工作来配置运行环境。比如说,要想通过 Ant 的 junit 任务运行我的测试,我就必须确保某些文件 位于类路径中并向低层 JVM 提供一个参数。特别是,在调用 junit 任务时, 我还要确保托管源文件(以及测试)的目录(或多个目录)位于类路径中,还要告诉 GWT 以何种模式运行。 我倾向于使用 hosted 模式,这意味着要使用 www-test 标志 ,如清单 7 所示:
清单 7. 用 Ant 运行 GWT 测试
&junit dir=&./& failureproperty=&test.failure& printSummary=&yes&
fork=&true& haltonerror=&true&&
&jvmarg value=&-Dgwt.args=-out www-test& /&
&sysproperty key=&basedir& value=&.& /&
&formatter type=&xml& /&
&formatter usefile=&false& type=&plain& /&
&classpath&
&path refid=&gwt-classpath& /&
&pathelement path=&build/classes& /&
&pathelement path=&src& /&
&pathelement path=&test& /&
&/classpath&
&batchtest todir=&${testreportdir}&&
&fileset dir=&test&&
&include name=&**/**Test.java& /&
&/fileset&
&/batchtest&
运行 GWT 测试现在转变成调用问题了。还需注意的是 GWT 测试属于轻量级测试, 所以我可以频繁运行测试,甚至是连续运行,就像我在一个持续集成环境(Continuous Integration)中一样。
在本文所示的 GWT 测试用例中,您已经看到用于验证 Ajax 应用程序所需的基本步骤。 您可以继续测试我的示例 GWT 应用程序,比如测试一些边界用例,但是我认为重点在于:如果使用包含测试特性的框架编写 Ajax 应用程序,测试要比想象中容易。
要对 GWT 应用程序进行良好测试(对绝大多数应用程序也适用),关键在于设计应用程序时要把测试一并考虑。还要注意 GWTTestCase 不是被用来进行交互测试的。 您不能使用 GWTTestCase 直接模拟用户。不过您能够以一种间接的方式用它来验证用户交互,正如本文中演示的那样。
您可以参阅本文在 developerWorks 全球站点上的
“”(Noel Rappin,developerWorks,2007 年 6 月):学习面向 GWT 的 Cypal Studio 如何帮助创建新的 GWT 模块,支持远程过程调用的创建,使查看和部署 Web 应用程序变得简单。
“”(Philip McCarthy,developerWorks,2006 年 6 月):Philip McCarthy 介绍了 GWT 的功能,帮助您确定它是否适合您。
“” (Andrew Glover,thediscoblog.com,2007 年 4 月):学习如何通过 Eclipse 创建并运行 GWTTestCase。
“” (Christian Hellsten,developerWorks,2005 年 12 月):使用 Selenium 测试工具实现验收测试自动化。结合使用 Selenium 和 GWT 可以对 Ajax 应用程序运行功能性测试。
“” (Andrew Glover,developerWorks,2007 年 4 月):学习如何编程式运行 Selenium 测试,同时使用 TestNG 作为测试驱动。
(Andrew Glover,developerWorks):学习更多关于编写专注于质量的代码的信息。
:数百篇关于 Java 编程各个方面的文章。
可能感兴趣的文章
更准确的答案suggests that the need for a marking cycle i...
关于ImportNew
ImportNew 专注于 Java 技术分享。于日 11:11正式上线。是的,这是一个很特别的时刻 :)
ImportNew 由两个 Java 关键字 import 和 new 组成,意指:Java 开发者学习新知识的网站。 import 可认为是学习和吸收, new 则可认为是新知识、新技术圈子和新朋友……
新浪微博:
推荐微信号
反馈建议:ImportNew.
广告与商务合作QQ:
– 好的话题、有启发的回复、值得信赖的圈子
– 写了文章?看干货?去头条!
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 活跃 & 专业的翻译小组
– 国内外的精选博客文章
– UI,网页,交互和用户体验
– JavaScript, HTML5, CSS
– 专注Android技术分享
– 专注iOS技术分享
– 专注Java技术分享
– 专注Python技术分享
& 2018 ImportNewPosts - 10,
Articles - 0,
Comments - 12
11:17 by 清风随心, ... 阅读,
性能、负载测试工具
  厂商 工具名称
  * Mercury LoadRunner
  备注:历史最悠久、行业地位最高、市场份额最大、使用最广泛,以及多少测试从业人员从没做测试工作开始就听说过、而又叫多少人爱恨交加的业内最强大、最专业的性能测试工具。从Mercury Interactive公司1989年诞生以来就是其主打产品,别不多言。
  * Micro Focus QALoad
  备注:原Compuware公司性能测试工具主打产品,如今被Micro Focus收购后仍然占有一席之地,是目前业内主流的大型性能测试工具之一。支持HTTP、HTTPS、SOAP、XML、Streaming Media、Winsock、JAVA、.NET、Citrix、Oracle Forms、SAP等多种协议技术。
  * Micro Focus SilkPerformer
  备注:原Segue公司性能测试工具主打产品,如今被Micro Focus收购后不影响它在全球性能测试工具市场排名第二的地位。它是仅次于Loadrunner的大型性能测试工具,支持的协议众多,而且突出增强了对Web Service性能测试的能力。它的性能瓶颈诊断与分析功能,在某些方面比Loadrunner还强大。可与原Segue SilkCentral TestManager和Borland StarTeam等集成。
  * Segue Silkperformer Lite
  备注:Silkperformer Lite是原Segue产品SilkPerformer的轻量级版,供非技术人员对中小型IT系统进行性能测试的工具。在Borland期间有所升级,但是到Micro Focus公司已经消失。
  * IBM Rational Robot + TestManager
  备注:这是早期Rational工具集进行性能测试的工具组合。Robot充当Loadrunner里VUGenerator的作用,开发业务逻辑脚本;TestManager充当Loadrunner里Controller和Analysis的作用,进行性能测试场景的设置和执行,并分析测试结果。时至今日,二者的组合已经寥寥无几。
  * IBM Rational Performance Tester
  备注:IBM收购Rational后,与Rational Functional Tester同时期开发的专业的性能测试工具产品,以弥补IBM没有大型性能测试工具的空白,从而可与当时的Mercury Loadrunner竞争。如今这款工具逐渐强大起来,在性能测试市场与HP、Microsoft、Micro Focus、RadView等独占鳌头。
  * Oracle Empirix E-Load
  备注:E-Test Suite套件里的性能测试工具,是目前业内主流性能测试工具之一,主要支持HTTP的WEB应用程序的性能测试和监控分析。目前属Oracle旗下产品。
  * RadView WebLoad
  备注:RadView公司的主打产品WebLoad Professional,如今功能已经非常强大,全面支持WEB应用程序的性能测试执行、监控、分析。全球有2000多家公司使用它做性能测试,参照:
  * Minq PureLoad
  备注:Minq公司的PureLoad,至今未免费。它专注于对WEB应用系统进行常规的压力、负载、稳定性测试。与PureAgent结合,可以诊断WEB服务器的响应时间、资源利用率等。
  * Microsoft Web Application Stress Tool
  备注:微软早期的小型性能测试工具,简称WAS,现已不升级,主要适合ASP、.NET开发的WEB应用系统进行性能测试。
  * Microsoft Application Center Test
  备注:微软以前Visual Studio开发环境内建的性能测试模块,简称ACT,如今的Microsoft Visual Studio Test Edition内性能测试功能仍然以它为主。
  * Facilita ForeCast
  备注:英国Facilita公司推出的ForeCast产品,是一款强大的主流性能测试工具,支持多种开发技术与网络协议,如WEB、JAVA、.NET、Citrix,并有一套辅助分析工具可对JAVA、主流数据库产品、网络进行分析和诊断。
  * Quest BenchMark Factory for Database
  备注:大名鼎鼎的Quest公司虽然有上百款对IT基础架构进行管理、监控、诊断的工具,但是也有BenchMark Factory for Database这款性能测试工具,当然它的性能测试偏向的是数据库,也是专门对数据库做性能测试和容量规划的工具。
  * WorkSoft Certify Performance Test
  备注:WorkSoft公司出品的专门针对SAP系统进行性能测试的工具,既然专业,必然强大!
  * 免费 JMeter
  备注:目前业内使用最广泛的性能测试工具,最初只是测试WEB应用,最近几年发展异常快速,到目前已经强大到支持HTTP/HTTPS、SOAP、JDBC、LDAP、JMS等,在国内也很普及。当然,这些免费工具的共性就是监控、分析功能不如商业工具。
  * 免费 OpenSTA
  备注:OpenSTA在JMeter之初使用普遍,后来被JMeter打败;如今它还是如最初一样仅支持WEB应用的性能测试。
  * 免费 TestMaker
  备注:TestMaker是PushToTest公司的免费产品,它的功能比商业工具有过之而无不及,可对HTTP, HTTPS, SOAP, XML-RPC, SMTP, POP3, IMAP下的JAVA应用程序做单元测试、集成测试、系统功能测试、系统性能测试等。脚本语言采用最新的Jython。由于是新产品,在国内外还不普及,但是它的前景相当广阔。
  免费性能测试工具在业内也很多,这里只介绍这三款强大的工具,其它更多免费工具另行说明。
  白盒功能测试工具
  厂商 工具名称
  * Parasoft JTest
  备注:Parasoft公司推出的业内最强大的针对JAVA技术的商业白盒测试工具。可对JAVA进行自动化的代码静态分析、代码评审,由于内建Junit,可实现自动化JAVA单元测试。可与目前主流的JAVA IDE如Eclipse、IBM RAD、Jbuilder集成。
  * Parasoft C++Test
  备注:Parasoft公司推出的业内最强大的针对C/C++技术的商业白盒测试工具。可对C/C++进行自动化的代码静态分析、代码评审,也可对C/C++实现自动化单元测试。可与目前主流的MS Visual Studio、Wind River Tornado等集成。
  * Parasoft .TEST
  备注:Parasoft公司推出的业内最强大的针对.NET技术的商业白盒测试工具。可对.NET框架下所有的语言如C#、VB.NET、ASP.NET、MC++等进行自动化的代码静态分析、代码评审、单元测试。可与目前主流的MS Visual Studio等集成。
  * Parasoft SOA Test
  备注:Parasoft公司推出的软件开发全生命周期测试平台。可对目前IT业内几乎所有的开发技术进行单元测试、集成测试、接口测试、安全性测试、负载测试、回归测试等。例如Web service、Java、C/C++、.NET、XML、SOAP、BPEL、UDDI、HTTP、TCP/IP、SMTP、IBM MQ、EJB、CORBA等。具体为何物,本人未知。
  * Borland Agitator
  备注:Borland Agitator是第三代JAVA单元测试工具,它是由JUnit之父、XP、TDD的创造者Kent Beck推出的新一代JAVA测试工具,真正实现了企业开发者测试的思想;它是理念是develop software with confidence!
  * 国产VCTester
  备注:VCTester由深圳市领测科技有限公司自主研发,是与Visual C++配套使用的新一代单元测试工具,分共享版与商用版两大系列,其主要功能包括:脚本化测试驱动(包括修改变量与调用函数)、脚本桩、支持持续集成测试、测试覆盖率统计(仅商用版本)、生成测试报告(仅商用版本)、测试消息编辑器(仅商用版本)等。
  * 国产Visual Unit
  备注:广州凯乐软件技术有限公司研发的VU是新一代单元测试工具,功能强大,使用简单,完全可视化,不需编写测试代码。VU的测试结果使程序行为一目了然,有助于整理编程思路和提高编程效率和正确性,并能快速排错;VU还增强调试器功能(如实现后退等功能),提高调试的效率;VU能达到空前的测试完整性,轻松实现语句覆盖、条件覆盖、分支覆盖、路径覆盖;VU提供详尽的测试报告,VU不仅是单元测试工具,更是一种使程序开发变得更高质更高效更舒适的工具。
  软件测试类工具大全第二部分,现列举如下,并非百分百全面,仅供测试同行参考:
  白盒性能检测工具
  厂商 工具名称
  * Parasoft CodeWizard
  备注:Parasoft公司推出的针对C++和JAVA代码进行检测和诊断的工具,分C++和JAVA二个版本。目前已不作为单独产品,已集成在JTest和C++Test里。
  * Parasoft Insure++
  备注:Parasoft公司推出的针对C和C++代码进行运行时内存检查和错误监测的工具。
  * IBM Rational Software Analyzer
  备注:这是IBM公司推出的专业工具,可对JAVA、C++等主流开发代码进行静态检查和分析。可与Rational Application Developer和Rational Software Architect集成使用。
  * Micro Focus DevPartner
  备注:DevPartner Studio系列工具最初是Numega公司产品,后被Compuware收购,如今又被Micro Focus收购后,主要侧重JAVA、.NET与C++几种主流技术;包括DevPartner Studio Server、DevPartner Studio Professional、DevPartner for Visual C++ BoundsChecker suite、DevPartner JAVA Edition几个组件。主要功能是对这些不同开发技术进行代码层面的错误检测、性能分析、安全扫描、内存泄漏检查、覆盖率分析等。
  * Compuware SmartCheck
  备注:该产品是早期Numega公司产品,主要对VB技术进行代码层面的错误检测、性能分析、安全扫描、内存泄漏检查、覆盖率分析等。被Compuware收购有所保留,但是到Micro Focus公司已经消失。
  * Compuware DBPartner for Oracle
  备注:Compuware公司对Oracle数据库进行SQL代码层面进行错误检测、性能分析的工具,至今不在Micro Focus公司产品里,下落不明。
  * AutomatedQA AQTime
  备注:AutomatedQA另外一款主打产品AQTime,是一款强大的代码级分析工具,支持.NET、Windows应用程序的代码内存泄漏检测、错误定位、效能分析等。
  * QESat Java
  备注:是北京航空航天大学软件工程研究所自主开发的代码分析、审查、排错工具,分JAVA和C++二个版本。
  IT系统监控、诊断工具
  厂商 工具名称
  * HP Business Process Insight/Monitor
  备注:HP Business Availability Center平台的重要组成部分,实时从IT系统后台监控前台业务流程的操作情况,通过设定的性能阈值,对性能问题进行告警、诊断、定位。Business Availability Center平台为原Mercury产品,是Mercury BTO理念的技术实现平台,强大无比。
  * HP Mercury Diagnostics
  备注:该产品本是原Mercury Loadrunner的一个组件,如今是HP的单独产品,也可于Loadrunner Controller集成使用。它有对J2EE、.NET、SAP等很多版本,针对这些技术的软件进行代码级别性能诊断和分析,强大与否未知。如今也是HP Business Availability Center平台的重要组成部分。
  * HP Mercury SiteScope
  备注:原Mercury SiteScope,如今也是HP Business Availability Center平台的重要组成部分。可对IT系统的后台进行在线的性能监控和警告,包括硬件、服务器、中间件等,是产品上线后的强大监控工具。可与Loadrunner集成,也可单独使用。
  * Segue SilkCentralTM Performance Manager
  备注:原Segue产品,是一款对在线IT系统进行实时监控和性能诊断的工具。具有很强的功能,如Web图形用户界面、高效的根源分析工具和对整个测试周期的完整支持,这些功能能够让不同团队在部署前后实现密切协作,并快速确认问题,加快问题的解决。最终,实现了对上线应用的主动管理,减少了意外故障率,优化了上线应用的性能。它支持多种硬件、软件、中间件产品,不过自从被Borland收购后找不到升级。
  * Oracle Empirix E-Monitor
  备注:E-Test Suite套件产品,在线实时监控应用系统的性能与系统指标,允许使用者设置各种报警方式及时报告应用的问题,以便管理人员迅速做出反应。可以E-Load集成使用。
  * Empirix OneSight Suite
  备注:Empirix公司新产品;自E-Test Suite套件产品被Oracle收购后,公司专注于VOIP网络解决方案,OneSight系列产品是一套性能监控工具,包括针对Web Appliaction 、Contact Centers、Voice Quality Assurance、Voice Watch几套产品,可对Web应用系统的从代码到中间件到操作系统到硬件的实时监控功能。其他几款是对IP电话等语音信号系统进行监控或模拟的工具。
  安全性测试工具
  厂商 工具名称
  * HP QAInspect
  * HP WebInspect
  备注:HP自从收购Mercury后,基于原Mercury产品推出很多新的产品,这2款是HP开发的安全性测试工具,前者可于QC集成,后者是强大的Web应用系统安全扫描、分析工具,支持Web2.0。二者都是HP Assessment Management Platform的重要组成部分。
  * IBM Rational APPScan
  备注:APPScan是WatchFire公司的核心产品,2007年WatchFire公司被IBM收购,APPScan工具被升级为如今的IBM Rational APPScan,是目前业内强大的WEB应用程序的安全性测试专业工具。
 功能自动化测试工具
  厂商 工具名称
  * Mercury Winrunner
  备注:世界上最古老、经典的测试工具厂商Mercury Interactive公司(2004年改名Mercury)的绝对主打产品,于Loadrunner、Testdirector并称三雄,统治IT行业测试工具市场的20世纪末的10余年。然而它过时了,随着20世界末WEB应用技术的盛行,Winrunner显得力不从心。故2003年Mercury公司开发新产品QuickTest,而后Winrunner退居二线。2006年Mercury公司被HP全权收购,如今Winrunner已从HP产品家族中消失。一代巨星就这样陨落了;然而它的市场并未绝迹,目前国内外仍有众多公司使用它做自动化测试,它的C语言脚本也决定了它在IT系统底层及嵌入式领域的强大便利。
  * HP Mercury Quicktest Professional
  备注:原Mercury公司产品,Winrunner的子嗣。摒弃了Winrunner自身的缺陷而重新装配起来的新新产品,凭借Mercury公司在测试工具市场的绝对领导地位,这个后起之秀从04年诞生后二三年,就很快取代了Winrunner在全球的市场分额,至今HP QTP仍然是业内市场分额最大的测试工具,是目前HP Functional Testing Software的绝对主力。
  * Compuware QARun
  备注:Compuware公司长期以来也是业内一流的测试工具厂商之一,QARun是Compuware公司黑盒测试工具集QACenter里的功能自动化测试工具,使用与Winrunner非常类似。QACenter里绑定了QARun、QALoad、QADirector三款产品。Compuware与Mercury比较,除了黑盒测试工具产品,还有强大的白盒测试工具家族DevPartner系列。但是2009年英国Micro Focus公司收购了Compuware全部的质量保证解决方案与产品,QARun在Micro Focus产品中找不到位置,从此退出历史舞台。
  * Micro Focus TestPartner
  备注:原Compuware产品,QARun的升级版,支持VBA脚本,侧重于应用软件的业务逻辑测试,于Mercury早先提出的BPT测试非常类似,让非技术的业务人员进行偏向业务流层面的功能自动化测试。如今该产品也被Micro Focus公司所有。
  * Micro Focus SilkTest
  * Segue SilkTest International
  备注:大名鼎鼎的Segue公司,是一个非常专注技术的测试工具厂商;其产品SilkTest、SilkPerformer完全可以和Mercury Winrunner、Loadrunner媲美,在国际市场分额也相当大。然而2006年4月Borland公司收购Segue公司,将Segue产品纳入Borland软件生命周期质量管理产品体系;2009年Borland公司又被Micro Focus全部收购。盛极一时的【宝兰帝国】从此消失。正所谓:钟南山下,活死人墓;宝兰帝国,绝迹江湖!就像飘渺的云烟,依稀湮没在历史的浩瀚长河里& 岁月的沉淀,沧桑的洗礼,我们能做的,就是把它记忆!但是SilkTest工具以其精致强悍的技术实现和丰富的4Test Language脚本语言,力压群雄!相信Micro Focus以它代替收购来的Compuware QARun也就不足为奇。SilkTest International是从前Segue公司推出的支持Unicode双字节字符集的SilkTest版本,现已消失。
  * IBM Rational Robot
  备注:在人类文明发展史中具有划时代意义的软件工程方法论&&RUP(Rational Unified Process)的缔造者公司Rational,旗下有Rational Enterprise Studio这套面向软件工程各个阶级、各个环节的工具集。而Rational Robot工具是这套工具集里的元老级的自动化测试工具。其强就强在能做功能测试,也能和TestManager结合做性能测试,因此有SQABasic和VU二种脚本语言。20世纪末的自动化测试天下,呈现由Mercury Winrunner、Rational Robot和Segue SilkTest三足鼎立的局面。然而天下格局风云骤变,当人类文明进入21世纪,&分久必合、合久必分&的历史规律再次上演。2002年IBM宣布收购Rational公司,Rational全套产品与DB2、WebSphere、Lotus、Tivoli等并列为IBM软件几大产品家族(当然IBM后来又陆续收购其他IT公司)。如今Rational Robot虽然和Winrunner一样类似的老态龙钟,但是IBM依然对其销售,毕竟Robot有着Winrunner一样的悠久历史和广泛市场。然后RUP、UML这些时代的传奇、智慧的经典逐渐少人问津,在新生XP、Agile的光环下似乎变得黯然失色。另外,IBM Rational产品(包括其他家族产品)的一个典型优势就几乎所有的软件都是跨平台安装的,支持Windows、Unix、Linux等,这是其它多数厂商的产品不能及的。
  * IBM Rational Visual Test
  备注:Rational公司早期从Microsoft买过来的一款测试工具,针对Visual Studio开发的Windows应用程序做自动化功能测试,为VBS脚本。如今在IBM网站有下载,但是该工具用户已逐渐消失。
  * IBM Rational Functional Tester
  备注:在Rational的测试工具集里,除了Robot还有另外一款RobotJ,它是专门面向JAVA应用程序的功能自动化测试工具,脚本语言是Java。2003年IBM基于Eclipse平台重新开发了RobotJ的升级版Rational XDE Tester,它支持JAVA应用程序及WEB应用程序的自动化测试。然而它只是个过渡产品,2004年IBM开发出如今的IBM Rational Functional Tester,包括JAVA和.NET二个版本,支持JAVA和.NET开发的WEB应用程序和图形界面应用程序的自动化测试,目前还有针对SAP等插件。至此,IBM Rational Functional Tester已像QTP代替Winrunner那样取代了Robot的地位,成为IBM名副其实的主打测试工具产品。
  * IBM Rational Service Tester for SOA
  备注:IBM最新推出的针对Web Service进行自动化测试的工具,与Parasoft早期的SOATest非常类似。
  * Parasoft WebKing
  备注:Parasoft公司是业内专注于白盒测试工具产品的厂商,不过也有WebKing这款面向WEB应用程序的回归功能测试工具。它除了常规的录制、回放、数据驱动等技术,还可以方便的检查WEB页面元素的有效性,如链接、图片、JS、CSS等,支持AJAX。
  * Oracle Empirix E-Tester
  备注:Empirix是全球第四大软件质量解决方案供应商,主打产品是E-Test Suite工具套件,包括E-Tester、E-Load、E-Monitor三个组件,分别应用于WEB应用软件的自动化功能测试、性能测试和应用监控,三者可集成使用。E-Test Suite除支持典型的J2EE与.NET WEB应用外,还支持Web Service、Siebel、PeopleSoft应用。2008年E-Test Suite整套工具套件被Oracle收购,其它产品不详。
  * RadView WebFT
  备注:RadView公司是专注WEB应用程序性能测试的供应商,主打产品WebLoad Professional。2006年曾推出TestView工具套件,里边包括WebLoad,WebFT以及TestView Manager三个产品,如今TestView工具套件不再升级。其中WebFT是对WEB系统进行自动化功能测试的工具。
  * AutomatedQA TestComplete
  备注:AutomatedQA也是一个专注于测试技术的公司,主打产品TestComplete在早期是一款专门针对Delphi应用程序进行自动化测试的工具,脚本可以使用Delphi、VB、.NET等多种;如今这款工具以及升级成功能强大的主流自动化测试工具,全面支持Windows应用、WEB应用、.NET、JAVA、AJAX甚至Windows Moblie、Pocket PC、SmartPhone等。另外一个无与伦比的特性,TestComplete除了主要的功能测试外,完全可以做性能测试、压力测试等。一个如此小巧的工具,功能如此庞大,不得不赞叹AutomatedQA公司精炼的技术水平!而且它具有强大的API接口,非常易于扩展,本人在这里强烈推荐国内公司,因为它虽是商业工具,但是非常便宜。
  * Seapine QA Wizard
  备注:Seapine也是本人非常喜欢的软件工程服务供应商,7大主打产品涵盖了软件工程的需求管理、开发过程管理、缺陷管理、配置管理和自动化测试几个领域,彼此互相集成。QA Wizard Pro是Seapine的自动化测试工具产品,如今的版本功能已经非常强大,支持常规的Windows应用程序、WEB应用程序,开发技术包括C#、VB.NET、C++、Qt、AJAX、ActiveX、JS、JAVA、Delphi、WinForms等。本人写过早期版本的使用指南:http://www.51testing.com/html/04/n-8704.html
  * RedStone EggPlant
  备注:业内唯一的跨平台自动化测试工具由RedStone公司出品的EggPlant占据,它支持在Mac、Linux、Windows、Symbian、Solaris、Android、KVM Switches上的自动化测试;此外,该工具也有性能测试、压力测试的能力。
  * Microsoft Visual Studio Test Edition
  备注:微软公司怎么可能没有测试工具呢?诚然Microsoft长期以来都太关注测试工具这块市场,可能是技术太强了吧,呵呵!但是后来做了两手准备,一方面着手收购Mercury公司,后来没谈拢,反倒被HP收购去了;另一方面着手自行开发。如今几年Visual Studio已经有了测试版,基于微软的.NET平台,这个测试版软件可对.NET技术下的一切程序进行白盒功能测试、代码诊断测试、黑盒功能测试和系统性能测试,众集一身,强大无比。不过这款工具除了微软内部使用,未见商用。
  * Minq PureTest
  备注:Minq公司的PureTest,本是业内商业自动化测试工具之一,如今PureTest已经免费。它专注于对WEB应用程序进行功能自动化测试,并即时对WEB页面元素进行检测,对HTTP请求、响应进行诊断分析。
  * WorkSoft Certify
  备注:WorkSoft公司出品的专门针对SAP系统进行功能自动化测试的工具,既然专业,必然强大!
  * 国产AutoRunner
  * 国产TAR
  备注:上海泽众软件公司自主研发的自动化测试工具AutoRunner,实现对WEB和Windows应用进行自动化功能测试的过程。脚本为JAVA。同意是泽众出品的TAR(Terminal AutoRunner)是面向终端系统进行自动化回归测试的工具,适用用VT100、VT220等标准应用,支持命令行和窗口模式,也支持脚本录制和回放,适合银行业务系统。
  * AutoTester AutoTester
  * AutoTester Web
  备注:AutoTester 是世界上最早出品商业测试工具的公司,成立于1985年,工具基于MS-DOS。其产品有AutoTester、AutoTester ONE、AutoController等,AutoTester Web是跨浏览器的WEB功能测试工具。2007年6月该公司关门,7月网站关闭。
  * Original Software TestBench400
  备注:Original公司是面向IBM AS/400的软件测试服务供应商,TestBench400是AS/400测试解决方案的先驱和领导者。
  * CenterLine QC/REPLAY
  备注:CenterLine公司的QC/REPLAY是一款专门测试UNIX操作系统上图形界面应用程序的自动化测试工具。它以Widget为基本元,通过录制用户动作并回放的方式实现测试的过程。支持SUN OS、Solaris、HP UX、SVR4、UnixWare、Digital Unix、AIX等。
  * Software Research eValid?? Web Testing & Analysis Suite
  * Software Research TestWorks
  备注:Software Research成立于1977年,位于旧金山,是全球嵌入式软件测试的先驱。eValid是其开发的面向WEB应用程序进行自动化测试的工具,TestWorks是面向传统CS应用软件的自动化测试工具,所有工具都是跨Windows与UNIX平台的,其中后者带有对JAVA和C++做代码诊断的功能。
  * IBM Rational TTCN Suite
  备注:原Telelogic公司Telelogic产品,2007年被IBM收购,划入Rational产品家族。适用于嵌入式系统的自动化测试。
  * FanFare ITest
  备注:Fanfare公司出品的专门针对网络设备做自动化测试的工具。
  * AutoIT
  备注:AutoIt3属于AutoHotKey的鼻祖,AutoHotKey是从AutoIt v2分裂而来;AutoIt v2之前一直open source,但在v3是对源码进行了一定控制。官网:http://www.autoitscript.com/autoit3/
  * 免费Ruby + Watir
  备注:Ruby+Watir组合是近年非常流行的全免费自动化测试框架,在国内使用也非常普遍;它通过Ruby脚本的强大编程能力,基于Watir的强大接口,可实现对WEB应用程序的自动化测试。
  * 免费Selenium
  备注:Selenium是另外一款全免费的自动化测试框架,由ThoughtWorks公司出品,支持Ruby、Java、Perl、Python等语言的脚本开发。如今在国内外日益普及,很有发展潜力。
  * 免费Bromine
  备注:Bromine是一个针对iPhone(手机上网) Application的自动化测试工具, 它的灵感来自于Selenium和一篇文章Cocoa with love: Automated user interface testing on the iPhone, 它的基本思想是把你的application映射成一个XML结构,然后你可以用xpath访问里面的元素。
  免费功能自动化测试工具在业内成千上万,这里只介绍这三款目前流行的自动化测试工具,其它更多免费工具另行说明。

我要回帖

更多关于 小程序调用h5进行验证 的文章

 

随机推荐