自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (3)
  • 收藏
  • 关注

原创 Ⅰ.16 如何编辑和调试测试脚本

除了记录和编辑测试脚本的工具,Squish也为调试测试脚本和检查AUT内部对象提供了支持。调试器不仅用于查找和修复测试脚本中的bug,而且还有助于检查一个运行中的AUT时使用断点功能。Ⅰ.16.1 如何使用脚本调试器Squish IDE的脚本调试器允许我们在脚本中设置断点。这有助于我插入verification points,或者从一个断点前记录,将在后面讨论。一旦测试脚本在断点处停下

2015-11-25 11:18:36 1046

原创 Ⅰ.12 如何在脚本中与文件和环境交互

除了Squish提供的特定测试功能,测试脚本也可以使用脚本语言自身提供的原生的功能(包括标准库)。这节饿哦们将会展示如何使用原生的功能从一个外部文件中读数据,将数据写入一个外部文件中,检查一个外部文件是否存在,删除一个外部文件。另外,我们将会理解如何比较两个外部文件,以及如何读取脚本运行期间设置的环境变量。Python-specificPython例子没有战士任何 import 语句,但当

2015-11-24 14:57:46 565

原创 Ⅰ.11 如何实现Keyword-Driven Testing

Keyword-driven testing测试(也称作'table-driven testing' 和 'action-word testing')是一种测试方法论,使用这种方法测试完全由数据驱动。使keyword-driven testing不同于data-driven testing的是:用后者我们读进数据项,例如,为了定位一个GUI table,但是用前者时数据项不仅仅是数据也可以使特定A

2015-11-23 15:21:52 1293

原创 Ⅰ.10 如何创建测试失败和出错时的自动化截屏

为了能更容易的追踪测试失败和出错的原因,可以告诉Squish做一个截屏,无论测试如何失败或者出错。然后我们可以查看失败或者出错时完整的桌面截图。当谈到无人监管的自动化测试期间调试测试失败和出错时这个特别有用。为了机会这个特性,有必要设置全局设置对象,logScreenshotOnFail 和 logScreenshotOnError 属性设为true(或者True 或者1,依据使用的脚本语

2015-11-23 14:47:39 1144

原创 Ⅰ.9 如何创建查询用户输入的半自动化测试

Squish测试中最普通的用例就是完全自动化——Squish用于记录一个测试(或者我们手动写一个测试),然后回放该测试,以及报告结果。但是在一些情况下我们可能想创建一个半自动化测试,该测试需要测试员提供一些输入。例如,当测试一台硬件设备上的一些软件时,我们可能想询问用户设备的状态是否以预期的方式改变了。例如,想象我们想为一些与打印机相关的软件写测试。测试运用该软件,其中一个结果应是打印机打印一

2015-11-23 14:30:23 722

原创 Ⅰ.8 如何实现原生浏览器对话框、ActiveX以及更多项的自动化

Squish主要是设计用来支持自动化的操作网页的DOM,DHTML和HTML元素。但是为了完整的测试一个网页应用程序,通常有必要使对其他类型组件的操作自动化,也包括对话框——这个部分展示了用于执行这种测试的技术。Ⅰ.8 .1 使原生浏览器对话框自动化(登录,验证,等等)许多网页应用程序需要一个登录,该登陆使用了浏览器的原生身份验证对话框,或者作为开启进程的一部分接受验证。Squish让

2015-11-23 10:49:15 1221

原创 Ⅰ.7 如何从一个测试脚本中测试多个AUT,使用ApplicationContext

通常,为每个测试套件指定单个被测试的应用程序。然后通过每个测试案例执行和访问这个AUT。所有的教程展示了单个测试套件方法或单个AUT方法,但是事实上,有可能开始多应用程序以及访问,以及在单个测试套件内测试多个应用程序。 这使得测试不同应用程序的交互或者同一个应用程序的多个实例的交互。例如, 能测试多个应用程序对于测试client/server系统是有必要的。无论何时开启一个AUT将会创建一个对

2015-11-21 22:23:55 1404

原创 Ⅰ.6 如何创建和使用Synchronization Points

当Squish纪录脚本时,事件recorder必须确保同步了AUT和测试脚本。实现此功能的方法是recorder自动的插入snooze语句到脚本中。这些语句强制脚本等待一定的时间(该时间可能是个小数如2.5秒)。有必要确保脚本回放的速度和纪录时的速度一致。例如,如果用户等待弹出某个窗口,脚本将等待同样的时间。阻止Squish过快的运行AUT是很重要的,这样AUT的toolkit才能跟得上。使用

2015-11-21 20:43:32 777

原创 Ⅰ.5 如何使用事件句柄

在Squish测试脚本中有可能要对AUT内部发生的事件做出反应。这可能是有用的,例如,当对话框意外出现时 比如一个错误消息提示,提供一个测试脚本来响应它。可以通过注册一个事件句柄函数来实现该功能,当一个指定的对象、一个指定类型的对象或者任何对象的事件发生时,调用句柄。事件句柄函数通过调用 installEventHandler 函数来注册。对于一个应用于所有AUT对象的句柄,即全局事件句柄,只

2015-11-20 16:05:07 1311

原创 第Ⅰ部分 Squish教程

这篇Squish用户指南解释了所有Squish最常用的特性,提供了一些如何最好的使用Squish的示例。该篇指南主要致力于Squish的脚本支持,不同的脚本语言支持,这里我们只给出Python的示例。许多示例展示了如何从实践上处理问题。Unicode UTF-8文件编码Squish IDE加载和保存的测试脚本(名字符合 test.*格式)都是以UTF-8编码格式保存的。所有的Squis

2015-11-20 15:05:16 9271 1

原创 Ⅰ.4 如何使用测试语句

这个部分讨论Squish提供的用以执行测试的API,测试完会得到相应的结果。验证点也用这个测试API,更多的关于验证点的说明将在在17章中介绍。比较两个值并将比较的结果写入测试日志,使用test.compare 函数。简单的检查某些值为真(即检查一个布尔值),使用test.verify 函数。在某个点将一些中立的信息写入测试日志中,使用test.log 函数。将一条警告写入测试日志中使用tes

2015-11-20 14:46:46 874

原创 Ⅰ.2.9.如何测试支持国际化的Qt AUT

Qt 支持创建国际化的应用程序。意思就是,举个例子,开发者可以创建一个Qt应用程序,在使用英语语言的地方(如U.S)该程序可以在menu选项和对话框标签上展示English文本,在用德语的地方显示German,以此类推。如果Squish 使用了AUT对象属性——包括它们用来识别对象的文本来识别对象,当谈到这种测试的时候,国际化的AUT可能会引起问题。因此,举个例子,File 菜单项将会有下一个

2015-11-20 10:17:59 759

原创 VC++ 与C 语言的区别

1. VC++中的cin,cout 自动识别输入输出数据类型而自动调整输入输出格式     C语言中的scanf,printf输入输出数据类型由用户指定.2. C++结构体中可以有成员函数,C语言不可.

2015-11-19 23:36:05 1321

原创 Ⅰ.2.8 如何做自动压力测试(Automatic Stress Testing)

这个部分解释了如何使用Squish为应用程序实现完全的自动化压力测试。这里实现的压力测试的类型叫做“Monkey Testing”。这个名字来源于这样的想法:如果你有一屋子的猴子和打字机,不限制时间和替代品,它们将最终打出所有的伟大的文学著作。Qt 和 JavaScript基于JavaScript 测试套件,目前Squish提供支持Qt 工具包的 monkey testing。所有的m

2015-11-19 11:36:19 1702

原创 Ⅰ.2.7 如何测试Qt Application中的非Qt Widgets

支持Qt的Squish被设计用来支持Qt应用程序的Qt widgets自动化测试。然而,在一些平台,Qt 应用程序是使用Qt 和本地的widgets混合编译出来的,例如,在Windows上一个Qt应用程序除了使用Qt widgets还可能使用本地Windows对话框和嵌入的ActiveX widgets。幸运的是,Squish支持记录和回放键盘和鼠标对本地Windows 控件的操作。另外,使用

2015-11-19 11:24:17 660

原创 Ⅰ.2.6.8 如何测试QTable (Qt 3)

一个QTable由那些可以使用QTable::item函数返回的item组成的。例如,为了测试一个text中包含“Kiwi”的cell是在第五行第四列(使用基于0的索引),可以使用下面的代码: table = waitForObject(":fruit_QTable") cell = table.item(5, 4) test.compare(cell.text(),

2015-11-19 11:03:07 594

原创 Ⅰ.2.6.7 如何测试QListView (Qt 3)

这个部分介绍了如何验证一个Qt 3 list view widget(事实上是个tree widget)包含了我们所期望的items。一种方法是遍历list view中的所有items,检查它们的每个text。例如,如果我们有一个 list view,该list view应该有一个最高层的名字为“Apple”的item,它有两个子item,text分别为“Orange”和“Banana”,我们

2015-11-19 09:41:36 639

原创 Ⅰ.2.6.6 如何测试Graphics Views、Graphics Scenes 和 Graphics Items (Qt 4)

Qt 4.2介绍了QGraphicsView、QGraphicsScene 和 QGraphicsItem及其子类的的graphics/view 结构。两个附加类被添加到Qt 4.4中,另两个被添加到Qt 4.6中。对于测试使用该结构的应用程序,Squish提供了所有支持。这个部分我们将测试一个简单的示例应用程序(example/qt/shapes),该应用程序使用一个图形视图作为它的主窗口区

2015-11-18 16:10:42 712

原创 Ⅰ.2.6.5 如何测试QAction、QMenu、以及QMenuBar(Qt 4)

如果我们想检查一个菜单项的属性,可以使用Squish IDE插入验证点,或者手写代码。这里我们介绍如何写代码。QMenus(QWidgets 也是如此)有一份QAction 对象列表。我们可以获取这个列表,使用QList API 遍历它的actions,对于每个action我们可以查询或者设置它的属性。首先我们看一个访问一个action的属性的例子,然后看一下该例依赖的自定义函数 getAct

2015-11-18 15:58:01 1150

原创 Ⅰ.2.6.4 如何测试 Table Widgets,以及使用外部数据文件(Qt 4)

这个部分,我们将了解如何测试 csvtable 程序。这个程序使用了 QTableWidget 来展现一个 .csv(以逗号间隔开值)文件的内容,它提供了基本的处理数据的功能——插入行、删除行、编辑格子 和交换列。这个测试使我们了解了如何导入测试数据,处理数据以及比较QTableWidget展示的值和其期望值。因为 csvtable 程序是一个主窗口风格的应用程序,我们也会学习如何测试menu选项

2015-11-18 13:58:44 805

原创 Ⅰ.2.6.3.6 如何测试 QTreeViews(QAbstractItemModels 和 QItemSelectionModels)中的 Items

tree views使用一个tree结构的model,因此遍历所有model的items的最容易的方法是使用一个递归程序,就像我们队tree widgets操作的那样,下面是例子:Example 6.12 The tst_treeview Test Scriptdef checkAnItem(indent, index, treeView, model, selectionModel):

2015-11-18 11:00:49 870

原创 Ⅰ.2.6.3.5 如何测试 QTreeWidgets 中的 Items

tree widgets (tree views中显示的models)比list和table widgets难测试一些。这事因为trees有一个比较复杂的基础结构。这个结构本质上是这样的:一系列的行(顶层items),每行有一个或多个列,每列有自己的子items。每个子item有一个或多个列,并且有自己的子items,以此类推。遍历tree的最简单的方法就是使用递归程序(即,调用自己的程序),

2015-11-18 09:33:15 611

原创 Ⅰ.2.6.3.4 如何测试 QTableViews(QAbstractItemModels 和 QItemSelectionModels)中的 Items

Table views,像其他的view 类一样,展示model中数据而不是自己保存数据。因此执行测试table展示的数据的关键是获取table view的model,对model的数据进行操作。下面举个例子展示如何操作,这个例子与list view的例子比较相似。Example 6.10 The tst_tableview Test Scriptdef main(): start

2015-11-17 17:58:59 937

原创 Ⅰ.2.6.3.3 如何测试 QTableWidgets 中的 Items

在这个部分我们将看一看两个例子。第一个例子展示了如何设置table的rows 和 columns的数字;以及如何使用items填充table——包括使items变成可点击的和可选的;以及如何隐藏rows。第二个例子展示了如何遍历table中的每个item(跳过异常的rows),以及在Squish log中打印item的text和state信息。(这部分代码取自SQUISHROOT/examples

2015-11-17 16:56:51 720

原创 Ⅰ.2.6.3.2 如何测试 QListViews(QAbstractItemModels 和 QItemSelectionModels)中的 Items

view 类本身不保存任何数据,相反的它们可以显示model中数据。因此如果我们想要访问与一个view相关的所有items,我们必须首先获取该view的model,然后遍历model中的items。而且,在一个选择器model中,选择器独立于model。这是因为选择器事关视觉交互,不会影响底层数据。(当然用户可以选择然后改变所选内容,但是从数据model看来,这种改变简单的应用于一个或更多item

2015-11-17 16:09:54 972

原创 Ⅰ.2.6.3.1 如何测试 QListWIdgets 中的 Items

遍历list widgets中的所有items是很容易的,本文介绍如何获取它们的texts以及检查它们的checked和selected状态。Example 6.6 The tst_listwidget Test Scriptdef main(): startApplication("itemviews") listWidgetName = "{type='QListWid

2015-11-17 15:57:16 1132

原创 Ⅰ.2.6.3 如何测试Item Views、Item Widgets 和 Models 中的Items (Qt 4)

这个部分我们将会理解如何迭代每个item,这些item存在于Qt的item widgets中(如,QListWidget,QTableWidget,和 QTreeWidget)、Qt的item views中(如,QListView,QTableView,和 QTreeView)。以及理解如何获取每个item的text、检查他的checked状态、是否被选取了。事实上,对于Q*View类我们访问基础

2015-11-17 15:29:58 1821

原创 Ⅰ.2.6.2 如何测试Stateful 和Single-Valued Widgets(Qt 4)

这一部分,我们将会理解如何测试example/qt/paymentform例子程序。这个程序使用许多基本的Qt widgets包括 QCheckBox,QCombox,QDateEdit,QPushButton,QRadioButton,和QSpinBox。作为这里所覆盖的例子的一部分,我们将会展示如何检查单个widgets的值和状态。我们也将证明如何测试一张表的业务规则。The pa

2015-11-17 10:32:33 882

原创 Ⅰ.2.6.1 如何测试Widget States 和Properties

每个Qt widget有一组与之相关的属性和状态,我们可以在测试脚本中使用Squish来查询它们来执行检查。这些属性有,focus(widget有键盘焦点吗?),enabled(这个widget被激活了吗?),visible(这个widget可见吗?),height(widget的高度多少?)width(widget的宽是多少?),等等。所有这些属性在Qt Project web site中有

2015-11-17 10:31:07 872

原创 Ⅰ.2.5 如何使用Qt Signal Handles

注意:Qt-specific Squish这个部分只应用于Qt版的Squish,因为它关系到Qt的特定功能。使用installSignalHandler函数可以跟踪UI界面(或任何AUT QObject)widgets发出的Qt signals。应该在AUT启动之后调用installSignalHandler函数,传递参数:一个已经存在的AUT对象的名字、一个信号签名和一个handle

2015-11-17 08:58:54 927

原创 Ⅰ.2.4 如何使用Qt Convenience API

除了标准的Qt API之外Squish提供了脚本API,这个部分描述了这些脚本API使执行普通用户行为更容易,例如点击一个button或者激活一个菜单选项。下面是一些如何使用这些API的例子。第一行展示了如何点击一个button,第二行展示了如何双击一项(例如,一个list、table或tree中的项——尽管这里我们的点击的项是在table中的),最后一个例子展示了如何激活一个菜单选项(这里是

2015-11-17 08:57:20 874

原创 Ⅰ.2.3 如何访问Qt枚举型

在C++中,有可能生命一些枚举型——这些名字代表了一些数字,使之富有意义和目的。例如,程序员会写label->setAlignment(Qt::AlignLeft);而不会写label->setAlignment(1);。因为前者更容易理解。(术语enumeration的缩写是enum,该教程中这两个我们都用)Qt定义了许多枚举类型,许多Qt的函数和方法使用枚举类型作为参数。就像使用枚举类型能

2015-11-17 08:56:06 4345

原创 Ⅰ.2.2 如何调用Qt对象的函数

使用Squish有可能调用任何Qt对象的每个公开的函数。另外也有可能调用Qt提供的静态函数。下面的例子中我们改变button的text,在上一部分中使用QButton::setText函数查询该button。button = waitForObject(":Address Book - Add.OK_QPushButton")button.setText("Changed Butto

2015-11-17 08:54:41 2310

原创 Ⅰ.2.1 如何访问Qt对象

正如我们在Squish使用指南—如何找到并访问对象一文中了解到的,可以调用waitForObject(或findObject寻找隐藏的对象)来获得一个拥有特定的real name或者symbolic name的对象的一个引用。一旦获取这个引用,我们可以用它与对象交互,访问对象的属性或者调用对象的方法。这里有一些访问QRadioButton的例子,如果未检查到它,可以点击它来检查,因此最后应该检

2015-11-17 08:52:33 1757

原创 Ⅰ.2.6 如何测试Qt Widgets

这个部分我们看到Squish API使检查单个的widgets值和状态变得更简单,所以我们可以测试应用程序的业务规则。正如我们在教程中看到的,我们可以使用Squish的记录功能来创建测试。然而,通常对于修改测试或者完全从零开始创建测试是有用的,特别是当我们测试包含多个widgets的业务规则时。一般情况下,没有必要测试一个widget的标准行为。例如,如果一个未被选取的含有两个值的chec

2015-11-16 17:59:31 1245

原创 Ⅰ.2. 如何使用Qt API

Squish最强大的特性之一就是它在脚本中访问Qt API(以及AUT的API)的能力。这给了测试工程师很大的灵活性从而让他们在AUT中可以测试任何东西。使用Squish的Qt API有可能查找和查询到对象,调用方法,以及访问的属性和枚举类型。而且,Squish 4 自动识别Qt 的QObject和QWidget属性和slots。这意味着编译自定义的封装类型几乎是没必要的,因为应用程序开发者可

2015-11-13 13:50:30 1897

selenium-ide-2.5.0.zip

2016-03-16

gtest-1.7.0.zip

Google开源单元测试框架gtest源代码

2016-02-17

gtest源文件

Google开源单元测试框架gtest源代码

2016-02-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除