自动化测试技巧之结果验证

简介:

 自动到了京城,已经两月没有好好整理下自己的思路了,也没有好好的写一些东西了。现在,真应该回归了。因为有的东西,不吐不快。
  ---------------------------------------------------------------
  在这里整理下关于自动化测试技巧中的结果验证的一些东西吧,这块也是我当年一个一个坑走出来的,虽然现在还有很多坑在等着我。
  在我们编写测试脚本的过程中,很多时候总会不知道该怎么去判断我们的结果是否正确。因为有一些操作涉及图形、一些操作涉及页面窗口变化、一些则涉及数据库、系统事件等,从而导致我们无处下手,很多失败的自动化测试也是因为测试结果的不准确判断造成的,所以,在此要慎重选择。
  首先来说说文本的验证吧。这也是目前最简单也是最有效的判断条件之一了。
  一般文本验证的做法是:1. 获取当前页面上要验证的文本字符串并赋值给一个变量;2. 读取预期结果的文本字符串;3. 进行比较
  在这里需要注意的一些问题有:
  1) 字符串前后的空格。因为有些时候我们获取到的一些字符串总会在前后出现一些非正常的空格,尤其是url;所以在对这些进行判断的时候,我们需要进行预处理,即去掉前后的空格。vbs中可以使用trim函数;
  2) 文本的特殊字符;
  3) web上有一些提示内容,如账号密码输入错误和非空的提示信息,都是很多条显示在同一个位置的,并且显示的方式为webelement.show()、webelement.hind(),对于这种文本的判断,最好结合web本身的一些方法来写方法实现,尽量避免过多依赖于测试工具,如qtp、winrunner;
  再来说下页面和窗口变化的验证,这类也是很常见的验证方式了。
  不过,即使是千里马也有马失前蹄的时候,所以,我还是尽可能的整理总结下我所遇到的和想到的东西吧。
  页面跳转一般分为页面内跳转和页面外链接,其中页面内跳转属于同步操作,需要等待执行完成才能进行下一步操作;页面外链接则属于异步操作,只要发送出打开浏览器,访问地址的操作就可以尽心下一步操作,不用等待链接的地址是否正确响应。因为实现机制的不一样,所以测试时候的判断方式也有一些区别。
  页面内跳转的在click元素后需要执行一个等待同步操作,常见的web等待同步有Browser.sync、while oIE.busy:wend、while oIE.state <> 4 :wend,如果不加等待时间,则测试脚本会在忽略加载时间直接往下执行。这时候,如果你的网速够坚挺,那么一切好说,如果不坚挺,那就会报错了。页面外链接除了需要等待页面加载之外,还必须对浏览器窗口进行定位,一般定位的方法主要有hwnd、index、name、title等,定位方案不选好,遇到稍微奇怪点的情况就会悲剧。
  窗口变化一般表现在全屏/非全屏,大小、窗体元素改变等地方。这些都可以通过获取窗体的属性来进行判断。不过全屏的判断方式比较特殊,因为很多窗体没有提供全屏的属性值,在这里我们可以通过获取当前窗体的宽高,然后和当前屏幕的availableScreen进行比较,切记,窗体的全屏指的是可用屏幕,就是除掉工具导航栏外的部分,不要真以为全屏就是满屏幕了。而浏览器的全屏则指的是浏览器显示区域大小为全部屏幕,就是除掉浏览器工具菜单栏的部分占了屏幕的全部显示区域。
  再来说说数据变动部分的测试验证。
  数据变动一般分为在本地数据库和服务器数据库改变、本地数据文件改变和服务器数据改变。对于这种数据的改变,通常的做法都是先获取数据内容,然后再和预期内容进行比较。在测试数据相关的功能时,很多人都会有种感觉,不穷尽数据组合很难完全保证是否正确。然而事实上,涉及数据变动的功能在测试时一般都是分为两部分,即数据测试和功能测试。
  举例子来说:一个出生地选择的功能,有省市县三个下拉列表,为三级联动。那么在测试的时候,就需要先对三级联动这个功能进行测试;确保功能没问题之后,再对数据进行测试;最后在进行一个整合的随机测试。这样就能够保证在短时间内保证这个功能和所有涉及到的数据完全正确了。在设计自动化测试脚本的时候,也可以分别针对功能和数据进行设计编写,以便于我们在遇到错误时进行定位。
  最后,来说说系统事件的验证技巧。
  系统事件的测试验证,首先我们得知道系统事件到底做了哪些操作和修改,并针对这些系统级的操作和修改进行验证,以避免只依赖于被测程序的提示,从而提高测试脚本的准确性。
  获取系统事件,可以利用安装测试工具(如InstallWatch)来进行跟踪。跟踪之后的验证就比较简单了,只需要读取修改的内容和预期结果进行比较就可以了。但是有一些系统文件,我们无法直接读取到里面的内容,并且这些文件也不需要或者不给我们开放一些权限去读取文件内容,那该怎么办呢?通常的解决方法有:1. 先对该系统事件进行单独的测试,以确保该功能正常;2. 对被测程序的操作进行测试,以确保被测程序能够正常操作系统事件;3. 设计测试脚本在被测程序和系统级分别进行验证,其中被测程序验证系统事件的提示信息,系统级则获取系统文件的最近修改事件和修改者,并与当前操作事件进行对比,如果一致,则可以认为这个操作是正常执行完成了的。
  好了,结果验证就到这里。
最新内容请见作者的GitHub页:http://qaseven.github.io/

相关文章
|
4月前
|
测试技术 UED 开发者
性能测试报告-用于项目的性能验证、性能调优、发现性能缺陷等应用场景
性能测试报告用于评估系统性能、稳定性和安全性,涵盖测试环境、方法、指标分析及缺陷优化建议,是保障软件质量与用户体验的关键文档。
|
6月前
|
机器人 API
使用OOS实现RAM权限审批流授权及自动化撤销授权的概念验证
本方案通过阿里云OOS与ROS联动,实现RAM账户授权自动化。用户申请后由审批人确认,系统自动授予指定策略,并在预设时间后自动撤销权限,提升安全性与管理效率。
|
5月前
|
机器学习/深度学习 存储 分布式计算
Java 大视界 --Java 大数据机器学习模型在金融风险压力测试中的应用与验证(211)
本文探讨了Java大数据与机器学习模型在金融风险压力测试中的创新应用。通过多源数据采集、模型构建与优化,结合随机森林、LSTM等算法,实现信用风险动态评估、市场极端场景模拟与操作风险预警。案例分析展示了花旗银行与蚂蚁集团的智能风控实践,验证了技术在提升风险识别效率与降低金融风险损失方面的显著成效。
|
11月前
|
算法 数据安全/隐私保护 计算机视觉
基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
本项目展示了256×256图像通过双线性插值放大至512×512的效果,无水印展示。使用Matlab 2022a和Vivado 2019.2开发,提供完整代码及详细中文注释、操作视频。核心程序实现图像缩放,并在Matlab中验证效果。双线性插值算法通过FPGA高效实现图像缩放,确保质量。
|
机器学习/深度学习
神经网络与深度学习---验证集(测试集)准确率高于训练集准确率的原因
本文分析了神经网络中验证集(测试集)准确率高于训练集准确率的四个可能原因,包括数据集大小和分布不均、模型正则化过度、批处理后准确率计算时机不同,以及训练集预处理过度导致分布变化。
|
10月前
|
Oracle 关系型数据库 MySQL
使用崖山YMP 迁移 Oracle/MySQL 至YashanDB 23.2 验证测试
这篇文章是作者尚雷关于使用崖山YMP迁移Oracle/MySQL至YashanDB 23.2的验证测试分享。介绍了YMP的产品信息,包括架构、版本支持等,还详细阐述了外置库部署、YMP部署、访问YMP、数据源管理、任务管理(创建任务、迁移配置、离线迁移、校验初始化、一致性校验)及MySQL迁移的全过程。
|
算法 数据挖掘 测试技术
犬类癌症检测(CANDiD)研究:使用独立测试集对1000多只犬进行基于高通量测序的多癌种早期检测"液体活检"血液测试的临床验证
这项研究首次在大规模独立测试集上验证了基于NGS的液体活检在犬类多癌种检测中的应用。该方法具有很高的特异性,可以作为一种新的无创癌症筛查和辅助诊断工具。通过早期发现癌症,有望改善犬类癌症的诊断和管理模式。
260 12
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
5651 3
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
机器学习/深度学习 JSON 算法
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
本文介绍了DeepLab V3在语义分割中的应用,包括数据集准备、模型训练、测试和评估,提供了代码和资源链接。
3360 0
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
|
机器学习/深度学习 算法 PyTorch
目标检测实战(五): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-7.0版本进行目标检测的完整流程,包括算法介绍、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。YOLOv5以其高精度、快速度和模型小尺寸在计算机视觉领域受到广泛应用。
6314 0
目标检测实战(五): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程)