技术标签: delphi 脚本 化工 测试 软件测试 框架 自动化测试框架
Address: http://space.itpub.net/14780873/spacelist-blog
这段时间一直在为公司内部开发自动化测试框架,简称GTF,因为这个框架现在还属于开发阶段,很多事都是言之过早。我会持续将我在架构过程中的想法写下来。供自己和大家一起分享。
这些想法,并不属于我一个人,我工作中的同事们给了我很大的帮助。
今天这一篇主要说明架构方面的考虑。
在现有的提供自动化测试解决方案的产品很多,包括:Robot,TestComplete,WinRunner等等。我只接触过这些,公司里也进行过很大的尝试,但是结果往往总是不竟如人意。
这中间,排除那些人员方面的原因,也总结这些自动化工具,在使用过程中的不方便的地方:
1. 定位控件不方便。标准控件还好,非标准控件就只能靠很多非正常方法去获取。而且,控件的识别往往和界面布局相关。
2. 验证数据不方便。这点更是针对非标准控件(什么?你不用非标准控件?),数据的检测,甚至夸张到使用图片检测。
3. 代码维护不方便。由于在编写过程中,大量的和界面相关的代码,导致最后在需求变更的时候,代码的维护,成为软件测试人员的负担。
针对这些情况,我们经过讨论,何不自己做一个软件测试框架。当然了,这是基于我们的丰富的知识积累的决策。大家不需要关心这个决策的情况。不过,可以多关注一些我们在做的过程中的分析结果。
通过分析流行的软件测试框架,有多种方式:
第一、最典型的就是消息驱动,自动化工具通过脚本录制和编写,保存为测试脚本。在回放的过程中,将这些脚本转换成为Windows消息,发送给我们应用程序的窗体和各种控件。
这种方式的好处在于,自动化工具和应用程序之间能够做到完全的隔离。但是,由于使用了Windows消息,它也拥有了一个非常致命的缺点。那就是消息队列的异步性与程序的顺序性之间的矛盾。很多消息发送给了应用程序,但是应用程序的处理可能已经和消息队列错位了。有一些关于代码的时间片等待,就是因为这个问题。
另外,就是由于完全的隔离,对于操纵控件数据的能力大大降低。毕竟,拥有大量数据的控件都不是标准控件。
第二、嵌入式。TestComplete就是这类工具。它有支持不同语言的版本。大概思路,就是在程序编译的时候,注入自己的控件代理。脚本的回放,直接可以通过代理,操纵到应用程序。
可惜的是,这类软件开发的时候,更多的是考虑平台的兼容性。对于特有平台上的支持不是十分完美。特别是对自定义控件(比如Delphi中,除了VCL的标准控件)支持也没有做到最好。不过,我这里必须承认,TC的内部实现机制可能十分强大,我不能窥探所有。如果有人清晰,可以指点一二。
针对上面的两种,我们想到的第三种方式:一体式。这种方式中,通过给程序在打包的过程中,添加额外的框架代码,使得程序自动提供控件的访问方式。自动化的模块也会作为软件测试程序的一部分运行。
应用程序在执行脚本的时候,自动通过脚本,控制各控件界面的显示和关闭。它应该是第二种方式的变种。但是由于是自己实现的,所以在对各类自定义控件支持的都非常好。
针对一开始提出的几个自动化测试的难题,我们提出了,自动封装窗体上所有控件的概念(这些概念后面会详细介绍),对于软件测试人员,只要关心真正的业务操作流程。而业务流程中涉及到的控件,已经为他们自动提供好。这样,脚本也自然只成了业务流程的脚本。其复杂度也就大大降下来了。
按照这个思路,最主要的是可以充分发挥“程序是我们自己的”的优势,对于测试人员,开发人员是他们的最好的访问控件的工具。有什么控件找不到,开发人员可以快速地给他们适配一个访问方式。这也大大降低了软件测试人员对软件系统内部的了解程度。
如果要推荐2个工具的话,我就推荐泽众软件公司的自动化测试工具AutoRunner和测试管理工具Testcenter,用这2个软件合作可以很好的进行自动化测试与对测试用例进行管理。
一款浏览器扩展和用户脚本管理器,它适用于 Chrome, Microsoft Edge, Safari, Opera Next, 和 Firefox等浏览器。_tampermonkey路home
有很多免费和付费的插件可用于将音频播放器添加到WordPress网站。 我们已经创建了一个教程,讨论如何向您的WordPress网站添加免费的音乐播放器 。 在本教程中,我们将重点转移到CodeCanyon上的Sticky HTML5 Music Player WordPress插件 。 如您所见,付费插件提供了免费插件中缺少的许多重要和有用的功能。 您还将获得六个月的免费支持以及终身免费更新..._songlingerwordpress
super() :1.子类调用父类的属性2.子类调用父类的方法 注意:子类的无参构造方法隐式的调用父类的构造方法,但父类有有参的构造方法且没有定义无参的构造方法,这时就会报错。
x64 体系结构提供了 16 个通用寄存器(以后称为整数寄存器),以及 16 个可供浮点使用的 XMM 寄存器。 易失寄存器是由调用方假想的临时寄存器,并要在调用过程中销毁。 非易失寄存器需要在整个函数调用过程中保留其值,并且一旦使用,则必须由被调用方保存。下表说明了每种寄存器在整个函数调用过程中的使用方法:register状态_寄存器xmm
我在测试浏览器兼容问题时,发现一个页面在chrome79上没有错误,但在chrome57上报错Uncaught SyntaxError: Unexpected token (。我没有查找到相关文档,但通过测试得知chrome57中js代码在三目运算符中<expression>?<statement1>:<statement2>中statement1使用括号括..._uncaught syntaxerror:unexpected token chrome
由于本人是从java开发,后研究了python,又转到go,所以将会特别列举一些极其特殊的特点及语法go语言的简介常用语言并发排名:c++>java>php>pythonc++效率最高,但是语法太恶心,开发周期长java语法也很冗余,尤其是现在搞一堆实体类,但是各大app,主流语言还是java,能抗击并发,应用开发php并发能力一般,但还能用,语法简单入门快,后台管理..._版图lota运算
Feign透传请求头等在用Feign进行接口转发时,可能需要直接透传请求头。添加Feign配置@Configurationpublic class FeignServerAuthConfig { @Bean public RequestInterceptor requestInterceptor(){ return new FeignMyRequestInterceptor(); } @Autowired private ObjectFac_feign透传域名
1、CNN2、GAN3、LSTM
TCPdump抓包命令 tcpdump是一个用于截取网络分组,并输出分组内容的工具。tcpdump凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具。 tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的Linux系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执
[oracle@pridb ~]$ rman target / auxiliary sys/oraclesys@sbdb2Recovery Manager: Release 11.2.0.1.0 - Production on Wed Jul 24 21:36:45 2013Copyright 1982, 2009, Oracle and/or its affiliates. All rights reserved.connected to target database: pridb (DBI_ora-17629
由韩峰整理。 HighnessC(楼主): 最近和一个心仪的女生告白, 谁知道她给了一个摩斯密码给我,说解出来了才答应和我约会。可是我用尽了所有方法都解不开这个密码。。好郁闷阿。只能求教你们了。****-****-*—-***–**—/-********-/ 她唯一给我的提示就是这个是 5 层加密的密码……也就是说要破解 5 层密码才是答案……好郁闷阿..救救我吧..._highnessc
Python基于Opencv的鱼群密度速度检测系统(源码&教程)_python车速检测