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

 自动到了京城,已经两月没有好好整理下自己的思路了,也没有好好的写一些东西了。现在,真应该回归了。因为有的东西,不吐不快。
  ---------------------------------------------------------------
  在这里整理下关于自动化测试技巧中的结果验证的一些东西吧,这块也是我当年一个一个坑走出来的,虽然现在还有很多坑在等着我。
  在我们编写测试脚本的过程中,很多时候总会不知道该怎么去判断我们的结果是否正确。因为有一些操作涉及图形、一些操作涉及页面窗口变化、一些则涉及数据库、系统事件等,从而导致我们无处下手,很多失败的自动化测试也是因为测试结果的不准确判断造成的,所以,在此要慎重选择。
  首先来说说文本的验证吧。这也是目前最简单也是最有效的判断条件之一了。
  一般文本验证的做法是: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/

时间: 2024-08-17 18:30:32

自动化测试技巧之结果验证的相关文章

PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)_php技巧

本文实例讲述了PHP日期与时间操作技巧.分享给大家供大家参考,具体如下: Demo1.php <?php //验证时间 //checkdate() 1.月份 2.日 3.年 //checkdate() 判断这个日期是否是合法的日期 //不合法的日期,试一试 if(checkdate(7,16,2010)){ echo '这个日期是合法有效的'; }else{ echo '这个日期是非法的.'; } ?> Demo2.php <?php //date -- 格式化一个本地时间/日期 //d

网络开发之编程技巧之一(有效验证用户的登录)

 在做网络关键事务的应用开发中,特别是有关有特定面向性的应用开发时,我们需要考虑的问题要比单机编程多得多.这些因扰主要是来自于几方面:  首先,是所有基于WEB的应用都是建立在开放系统上的,客户端几乎总能看得见你或多或少的程序源码痕迹,虽然这对网络开发的快速壮大发展起到了良好的作用,但对于许多习惯于使用传统环境编程的程序员来说,可以说是一场恶梦,我们再也不能使用传统惯用的明码内嵌方式的验证了,因为我们所有需要的验证材料,几乎都能从客户端源码中分析出来,因而,在客户端使用明码验证思路, 在基于WE

《精通QTP——自动化测试技术领航》—第1章1.10节QTP的验证点与测试报告

1.10 QTP的验证点与测试报告 精通QTP--自动化测试技术领航 阶段要点 了解验证点在自动化测试中的重要性. Spy可以在做验证点时起到很好的作用. QTP自带验证点函数CheckProperty. 自定义验证点. 自定义验证点-HTML模式. 1.10.1 自动化测试的有效性取决于验证点的质量 在自动化测试过程中,测试结果验证是最后一道关卡.前面所学的知识都只是使用QTP操控我们的业务.那么,在这些业务顺利按照轨迹行动以后,就该进行最后的"总结"了."总结"

Javascript验证上传图片大小[前台处理]_javascript技巧

需求分析: 在做上传图片的时候,如果不限制上传图片大小,后果非常的严重.那么我们怎样才可以解决一个棘手的问题呢?有两种方式: 1)后台处理: 也就是AJAX POST提交到后台,把图片上传到服务器上,然后获得该图片大小做处理. 2)前台处理: 也就是利用Javascript获取该图片大小. 显然第一种方式,很不好.因为需要把文件先上传到服务器上,如果文件很大的话,在加上网不是很快,需要等待好长时间,治标不治本. 功能解析: 在这里我只介绍IE与FireFox两个浏览器的不同做法. IE6: 关键

解放双手——Android自动化测试

解放程序猿宝贵的右手(或者是左手) --Android自动化测试技巧 Google大神镇楼 : http://developer.android.com/tools/testing-support-library/index.html#UIAutomator 前言: 觉得文章太长不想往后翻的朋友,你们会后悔的,当然,你也可以选择先看后面的,你会觉得很爽,但是相信我,你还是会回来看前面的.那么,还是慢慢往后翻吧. 导入: 人们懒的走路,才创造了汽车: 人们懒的爬楼,才创造了电梯: 人们懒的扫地,才

php安全性:如何提升PHP网站安全性的5个技巧

技巧1:使用合适的错误报告一般在网站开发过程中,很多web程序员总是忘了制作程序错误报告,这是极大的错误,因为恰当的错误报告不仅仅是最好的调试工具,也是极佳的安全漏洞检测工具,这能让你把网站真正上线前尽可能找出你将会遇到的问题.当然也有很多方式去启用错误报告.比如在 php.in 配置文件中你可以设置在运行时启用启动错误报告error_reporting(E_ALL);停用错误报告error_reporting(0);技巧2:不使用PHP的Weak属性有几个PHP的属性是需要被设置为OFF的.一

ASP网站漏洞及黑客入侵防范方法

如何更好的达到防范黑客攻击,本人提一下个人意见!第一,免费程序不要真的就免费用,既然你可以共享原码,那么攻击者一样可以分析代码.如果在细节上注意防范,那样你站点的安全性就大大的提高了.即使出现了SQL Injection这样的漏洞,攻击者也不可能马上拿下你的站点. 由于ASP的方便易用,越来越多的网站后台程序都使用ASP脚本语言.但是, 由于ASP本身存在一些安全漏洞,稍不小心就会给黑客提供可乘之机.事实上,安全不仅是网管的事,编程人员也必须在某些安全细节上注意,养成良好的安全习惯,否则会给自己

创建高安全性PHP网站的几个实用要点

大家都知道PHP已经是当前最流行的Web应用编程语言了.但是也与其他脚本语言一样,PHP也有几个很危险的安全漏洞.所以在这篇教 学文章中,我们将大致看看几个实用的技巧来让你避免一些常见的PHP安全问题. 技巧1:使用合适的错误报告 一般在开发 过程中,很多程序员总是忘了制作程序错误报告,这是极大的错误,因为恰当的错误报告不仅仅是最好的调试工具,也是极佳的安全漏洞 检测工具,这能让你把应用真正上线前尽可能找出你将会遇到的问题. 当然也有很多方式去启用错误报告.比如在 php.in 配置文 件中你可

超大型系统的持续集成与持续交付解决方案与阿里宙斯盾

作者简介:鲁小川,09年本科毕业于浙江大学软件学院,之后就一直就职于阿里巴巴B2B质量保障部,目前是云效持续集成与持续交付解决方案的负责人. 以下内容根据演讲嘉宾分享以及PPT整理而成. 今天分享的议题是<超大型系统的持续集成与持续交付解决方案及案例分析>,主要就是和大家聊聊阿里巴巴B2B技术部这几年来在持续集成与持续交付上实践经验,以及为什么要做宙斯盾系统平台产品来支撑持续交付.宙斯盾平台在阿里内部经过了5年多的积累沉淀,现在已经对外服务输出了,对外服务产品的名字叫做云效平台,后面还会介绍云