以初学者角度介绍TestComplete的使用

以初学者角度介绍TestComplete的使用

2019-01-11   出处:埃森哲测试中心  作/译者:Shuyan  

  • 使用背景

在上一个Automation Project中有幸使用了TestComplete自动化测试工具,作为一只小菜鸟,第一次接触到融合了界面录制和脚本的工具,简直不要太好用。

 

引用一下百度百度的介绍:“TestComplete为Windows、.NET、Java和Web应用程序提供了一个特性全面的自动测试环境。将开发人员和QA部门人员从繁琐耗时的人工测试中解脱出来。 TestComplete测试具有系统化、自动化和结构化特性,支持。NET,Java,Visual C++, Visual Basic, Delphi, C++Builder 和web应用程序。”

 

在项目上我使用的是TestComplete12.5,该版本支持的脚本语言有:JavaScript,Python,VBScript,DelphiScript,Jscript。由于项目本期的最终目的是封装一个在Excel上使用的自动化工具供客户使用,为了与Excel更好地兼容,我们选择的脚本语言是VBScript,所以接下来的使用方法中关于转换脚本的介绍也会选择VBScript来举一个例子。

 

  • 使用方法

1. 下载

进入https://smartbear.com,在导航栏中products下点击TestComplete

 

点击TRY TESTCOMPLETE FREE,待填写完个人资料后点击START TRIAL即可开始下载安装包啦。试用版的有效期限为30天,在打开TestComplete时可通过WorkSpace的StartPage查看到剩余有效期,过期后如若还想使用请购买正版license。

 

2. 创建项目

New一个project对于大家来说应该是一个再熟悉不过的操作了吧,填写项目名,选择好存放路径,然后就可以NEXT了。

 

 

Tested application可以先忽略,在选择脚本语言的时候选择VBScript就可以Finish啦。

 

 

一个项目中需要留意以下组成部分:

Script & KeywordTests : 录制的内容可以以Script或KeywordTests的形式呈现,其中KeywordTests可以转换成Script,但是Script不可以转换成KeywordTests,所以这里建议录制的时候选择Record Keyword Test。

 

NameMapping & TestedApps : NameMapping是用来存放录制过程中操作的有效对象,称为对象库;TestedApps则是存放被测试的应用对象,录制过程中会自动保存,也可自己手动添加。

 

Project Suite Logs : 录制完的脚本一旦执行,生成的日志就会存放在该目录下,可以查看到具体的执行过程,每一步有效操作都会有相应的snapshot。

 

 

3. 录制

在录制之前首先需要注意两点:

  1. 对录制流程的熟悉,在录制之前确认好录制的流程,建议先手动操作3遍;

  2. 准备好测试数据,事先对录制流程中需要输入的数据进行确认。

点击录制按钮即可开始录制自动化脚本了,只需按照计划好的操作流程和准备好的测试数据进行操作即可,流程操作结束后点击stop即可完成录制。

 

 

在录制过程中需要注意以下三点:

  1. 录制过程中不要出现多余的步骤;

  2. 在录制过程中保证数据的准确性;

  3. 注意保持好适中的操作速度,过快可能出现识别不到对象导致缺少步骤,过慢可能导致出现多余的步骤。

 

 

4. 增加checkpoints

在录制的流程中增加一些checkpoints可帮助判断步骤的顺利执行,例如录制打开浏览器,输入www.baidu.com ,按下Enter键后想检查是否顺利打开百度界面,可在当前步骤后增加一个检查百度Logo是否存在的checkpoint。

 

 

首先在录制的Keyword Test中选中要增加check point的步骤,如上案例选中Enter步骤,然后点击当前页的Append to Test,当在页面上识别到检查对象时会出现一个加号,点击加号选择”Exist=True”可以快速增加一个检查对象是否存在的check point。

 

 

5. 回放

录制完的Keyword Test如下图,Item指的是录制的对象,Operation则是对应的操作,Value则是对应的测试数据,Description是对该步骤的描述。录制完成后即可自动生成,且在下方可查看到每一有效步骤的截图,是不是感受到TestComplete的方便之处了呢。

 

 

在完成录制脚本之后:

  1. 先根据Keyword Test的步骤以及对应的截图过一遍录制的流程以确认脚本无误;

  2. 若有多余的步骤请删除;

  3. 确认无误后即可点击Run Test进行回放。

6. 参数化

对脚本进行参数化可灵活操作输入参数及输出变量,在参数化前,需要:

  1. 确认需要修改的数据

  2. 找到相应的步骤

  3. 添加一个参数并替换到步骤当中

 

这里我们将输入参数添加在parameters中,输出变量添加在variables中,为了更好地区分输入参数和输出变量,我们采用了用p开头命名输入参数,用v开头命名输出变量的命名规则。

对于输出变量的操作,先在variables中添加变量,然后在左侧operation中找到Set Variable Value,拖拽至对应步骤中,设置好变量和变量的取值,这里我通过录制点击对象拿到对象路径,再到对象库中查看文字属性。

 

7. 转换脚本

右键点击需要转换的Keyword Test选择Convert to Script,选中对应的脚本文件,即可转换成script啦。

 

 

8.  在script中编写single scenario

 

通常录制的Keyword Test,会拆分成多个复用率高的flow,以达到在不同的用例中可以重复调用,无需多次录制重复的步骤,而录制好的Keyword Test也可供Script直接调用。

 

 

想要执行single scenario时只要在该scenario的脚本范围内右键点击Run Current Routine即可执行。

9. 日志

用例执行完成时会直接把日志打开,也可在项目目录下方找到日志记录。Log Items中可直接查看本次执行结果状态,Test Log则可查看到每一个详细步骤的执行结果,日志记录过多时可勾选想要查看的日志内容类型进行查看,双击每一条记录可以直接跳转到具体的脚本中。

 

 

  • 注意事项

  1. 录制的流程建议开始和结束保持在同一界面以形成一个闭环。

  2. 添加或修改parameters和variables时别忘了保存,在修改完后需要点击其他位置出现*号再做保存,否则可能不生效。

  3. 不同script之间互相调用时,用 ‘USEUNIT ScriptName的形式来引入,虽然单引号看似注释了本行,实际上是可以通过编译的哦

 

 

 4. 在KeyWord Test或Script中适当地添加Log信息可以帮助你在查看日志的时候更加清晰地判断每一条记录的实际操作,也可输出变量来帮助定位问题。当然,多余的Log信息反而会增加查看日志的难度。

     5. 在录制KeywordTests后,善用IF可提高一个flow的灵活性和复用率,例如:

  1. 当某些操作不一定固定出现时,可添加一个IF判断条件,判断该窗口存在时应该做什么操作,如若不存在则直接忽略相应操作。

  2. 通过判断条件检查对象的值是否与预期一致

  3. 在一个flow中,通常可将同类操作流程统一放置,然后根据传入参数区分部分不同的操作对象,提高一个flow的复用率

作者介绍:

Xing,Shuyan

  • 10
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是一个基本的感知机分类MNIST数据集的例子,适合初学者理解: ```python import numpy as np import matplotlib.pyplot as plt from tensorflow.keras.datasets import mnist # 加载MNIST数据集 (x_train, y_train), (x_test, y_test) = mnist.load_data() # 将图像数据展平成一维数组 x_train = x_train.reshape(60000, 784) x_test = x_test.reshape(10000, 784) # 将像素值归一化到[0, 1]区间 x_train = x_train / 255 x_test = x_test / 255 # 将标签转换为0和1 y_train = np.where(y_train == 0, 1, -1) y_test = np.where(y_test == 0, 1, -1) # 定义感知机模型 class Perceptron(object): def __init__(self, learning_rate=0.1, max_iter=1000): self.learning_rate = learning_rate self.max_iter = max_iter def fit(self, X, y): self.w = np.zeros(X.shape[1]) self.b = 0 for i in range(self.max_iter): for xi, yi in zip(X, y): if yi * (np.dot(xi, self.w) + self.b) <= 0: self.w += self.learning_rate * yi * xi self.b += self.learning_rate * yi def predict(self, X): return np.sign(np.dot(X, self.w) + self.b) # 训练感知机模型 model = Perceptron() model.fit(x_train, y_train) # 在测试集上评估模型 acc = np.mean(model.predict(x_test) == y_test) print(f"Accuracy: {acc}") # 可视化权重 plt.imshow(model.w.reshape(28, 28), cmap="gray") plt.axis("off") plt.show() ``` 此代码使用MNIST数据集来训练一个感知机模型,将图像数据展平为一个一维数组,并将像素值归一化到[0, 1]区间。然后,将标签转换为0和1,其中1表示数字“0”。定义了一个`Perceptron`类来实现感知机模型。在训练期间,使用`fit`方法来更新权重和偏置,直到达到最大迭代次数或训练误差为零为止。最后,使用`predict`方法在测试集上进行预测,并计算模型的准确度。还可视化模型的权重。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值