uft自动化测试工具安装步骤_自动化功能测试和接口测试工具整理

3730158621031dee492455807506902a.png

对于自动化测试,原来谈这方面的内容比较少,但是现在我们做DevOps支撑平台的时候,在整个持续集成和交付的过程中,有一个重要的内容就是自动化测试。自动化测试的覆盖面相当大,其中既包括了CS,BS和移动APP的自动化测试分类;也包括了单元测试,接口自动化测试和UI自动化测试的分类。

DevOps成熟度中测试管理概述

72ac0c89ffd13ff4462a6053f91388fb.png

测试管理是一个过程,通过该过程,所有和测试相关的方法,流程,人员都被定义。在产品投入到生产环境运行之前,通过测试过程验证产品的需求,尽可能地发现软件中的缺陷,从而提高软件产品的质量。测试管理分为测试分层策略,代码质量管理和自动化测试三个维度进行表达。

测试分层策略

a9f16c7a43ec5b3700af863643110510.png

先谈下有哪些测试分类的方法,在持续集成里面我们当然更加会强调自动化测试,因此可以理解为人工测试和自动化测试两类;也可以离开为代码级测试,接口测试和前端测试分离。也可以理解为功能测试和非功能测试两类。

当然也可以看到,在微服务架构下,我们希望我们本身的开发也是分层的,即中台模块+服务接口+前台功能,即我们通常说的前后端分离,在这种前后端分离的情况下,可以更加方便我们进行测试分层设计和自动化测试。只要是厚中台+薄前台模式,那么就越容易实现测试过程的自动化。

越是持续集成自动化承担越高,那么自动化测试的比重就会越大。

可以看到首先在架构设计上就要做到前后端分离,中台+服务+前台,这种分离后可以更加方便后面进行后端代码和接口的自动化测试工作。

可以看到在测试分层策略里面的四到五级描述里面,我们看到TDD测试驱动开发方面的内容,比如先写测试代码再写实现代码或者两者同时在进行等。其次,我们还是要将在整个devops最佳实践里面,不仅仅开发过程是持续增量进行的,对于测试过程本身也是持续增量进行的,两者必须匹配。

或者理想状态应该是没有独立的测试周期,开发完成的阶段往往就是测试也配套完成的时间点。

代码质量管理

是软件研发过程中保证代码质量的一种机制,即在代码变更后,需要对代码进行检查,分析,并给出结论和改进建议,对代码质量数据进行管理,并可以对代码质量进行追溯。主要包括了质量规约,检查方式,反馈处理三方面的内容。

代码质量管理即我们常说的代码静态检查,其基于我们制定的代码质量规约进行。质量规约是指对软件代码质量的要求和规范,其中包含了编码规范,复杂度,覆盖率,以及安全漏洞,合规性要求等多个方面的内容。其中检查方式即包括了我们传统手工方面的检查和CodeReview,也包括了运行相关的自动化检查工具进行检查。

自动化测试

932fff87f18ebb812473b770de13df6b.png

自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程,在预设条件下运行系统或应用程序,执行测试并评估测试结果,以达到节省资源和人力,提高测试效率和准确性,主要包括了自动化设计,自动化开发,自动化执行和自动化分析。

对于自动化测试可以看到,对于服务接口和代码级的自动化测试相对来说比较容易实现,但是对于前端和UI级的自动化测试相对来说就比较困难些。因此对于前期实践,我们也是建议先实现接口服务和代码级的自动化测试,再来靠前端UI的自动化测试。

对于性能测试由于可以提前录制脚本,相对来说自动化测试实现起来比较容易。不论是那种类型的自动化测试都可以看到,实际上可以看到如下几个关键点。

  • 自动化测试代码或脚本的编写,可以是人工编写,也可以通过录制生成。
  • 测试数据的产生问题,参考测试管理过程域
  • 自动化测试脚本能够重复执行的要求,确保每次持续集成都能够重复运行测试脚本

到了自动化测试的第四级开始,可以看到增加了对独立的自动化测试平台的要求,同时也增加了对测试结果分析和度量的要求,即通过测试结果的度量分析来进一步改进测试效率,提升代码质量。

自动化测试概述

今天只谈下对于常见的一个Web应用的自动化测试应该如何去考虑。

要知道自动化测试不是一个新鲜的东西,很早就有,只是最近几年有了新的发展。比如在10多年前我们做每日构建和冒烟测试,持续集成的过程中,我们就已经在用Junit做自动化测试,并集成到整个持续集成过程。在每日构建完成后,自动化运行Junit的自动化测试脚本并输出冒烟测试的测试结果报告。

而在当时如果涉及到CS应用的自动化测试,包括对于Web类应用的自动化测试,我们采用QTP(现在改名为UFT)工具来做自动化测试,但是并没有得到广泛的应用,一个核心的原因就是QTP来做Web端的自动化测试,实际上脚本录制和代码编写量都很大,而且很难对所有的测试用例做到完全覆盖,同时即使用了QTP工具录制和维护脚本,实际的人工测试还是不能省略,因此这些都导致了QTP自动化测试并没有大范围推广。

而最近几年的发展可以看到,对于Web自动化测试Selenium和Robot Framework逐渐成为了主流的自动化测试框架和选择。同时在微服务架构,前后端分层开发推广下,对于接口的自动化测试也发展很快。

UFT/QTP自动化测试工具

b6ef479a48661653e66e988cc0974ace.png

QTP是Quick Test Professional的简称,是一种自动测试工具。当前已经更名为UFT,即统一功能测试框架。使用QTP的目的是想用它来执行重复的自动化测试,主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试,例如要测试哪些功能、操作步骤、输入数据和期望的输出数据等。

HP QuickTest Professional 提供符合所有主要应用软件环境的功能测试和回归测试的自动化。采用关键字驱动的理念以简化测试用例的创建和维护。它让用户可以直接录制屏幕上的操作流程,自动生成功能测试或者回归测试用例。专业的测试者也可以通过提供的内置脚本和调试环境来取得对测试和对象属性的完全控制。

以QTP为核心的自动化测试框架优点在于:适用性好,很多人都已经会用或者至少说可以简单应用,脚本也简单易懂,大多数无任何代码基础的测试人员都可以加入脚本录制和调试。然而它最大的缺点就是对象库,关键字的框架,灵活度也不高,且加上QTP在对flex等的支持上,也是让许多人头疼的问题。

在原来对于编码能力往往测试工程师都比较弱,因此对于QTP这种可以自动录制,自动执行和输出报告完整工具应用相当广泛。而现在的自动化测试技术栈,不管是接口、web、移动端,绝大多数都是基于开源项目来构建,测试人员本身的编码能力也在加强,特别是类似Python等脚本语言的大量使用,因此现在实际还在采用类似QTP商用工具的已经越来越少。自动化测试更多的采用类似Selenium, Robot Framework等开源工具进行集成。

Selenium自动化测试工具

41d6b89d6fc5e0012eb3b2eb60218bb5.png

Selenium是一个用于Web应用程序测试的工具。

这个工具的主要功能包括:测试与浏览器的兼容性,测试你的应用程序,看是否能够很好得工作,在不同浏览器和操作系统之上。测试系统功能,创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。

Selenium当前免费,而且可以和Jenkins,Maven,TestNG等实现集成,同时支持多语言,多平台和浏览器。因此当前被使用的相当多。

Selenium框架底层使用JavaScript模拟真实用户对浏览器进行操作。测试脚本执行时,浏览器自动按照脚本代码做出点击,输入,打开,验证等操作,就像真实用户所做的一样,从终端用户的角度测试应用程序。

对于Selenium,里面有一个核心组件即Browser bot,类似于浏览机器人,可以执行从测试脚本接收到的命令,自动化的完成页面浏览和各种操作,并记录相应的测试结果。

Selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(SeleniuBm Grid)。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。Selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器。

具体可参考:

https://selenium.dev/

http://www.selenium.org.cn/ (中文站点)

Robot Framework

aed35f58bf8c3a3994a1385563ce6097.png

Robot Framework是一个跨平台的通用的,与应用程序和技术无关的测试框架。它的优点是:易于扩展,提供了简单的API,用户可以自定义基于Python和Java的测试库。它还提供强大的标签功能,来归类测试运行,在测试运行时可以选择不同的Tag或tag组合进行测试运行。

支持报告合并,以便让你可以多机执行,然后合并报告,全局测试超时时间设置,局部可以覆盖全局的设置非常方便,不会测试卡壳的等等。其主要优点包括:

  1. 通过使用关键字驱动测试(KDT)方法简化了自动化测试过程。
  2. 测试数据语法简单易用。
  3. 生态系统丰富。由各种通用测试库和工具组成,这些工具都是作为独立项目开发的。
  4. 具有高度可扩展性。

要注意到Robot Framework本身是关键字驱动的测试,库和关键字就很重要,对于当前的库和关键字没有的时候你还需要自己写代码进行扩展。

在Robotframework当中,由SeleniumLibrary(非robot自带,需要安装)库提供对网页的操作关键字(功能)。即Robot Framework+SeleniumLibrary结合基本就能够完成我们需要的Web和UI自动化测试能力。

具体可参考:

http://robotframework.org/

https://blog.csdn.net/qq_27534003/article/details/87437195

https://www.jianshu.com/p/2ebea3256e21

接口自动化测试

对于接口自动化测试,主要是指类似SOAP , Http Rest等接口服务如何进行自动化测试。实际上在我们SOA管控平台的开发过程中,我们也定制化开发了接口自动化测试的工具,先是人工运行一篇接口测试,这本身类似一个脚本录制的动作,然后后续再根据已经录制的脚本批量自动化运行接口测试脚本并输出结果。

c8723c64ae687aa5974e6cba641acae7.png

Python+Request

Requests 是⽤Python语⾔编写,基于urllib,采⽤Apache2 Licensed开源协议的 HTTP 库。它⽐ urllib 更加⽅便,可以节约我们⼤量的⼯作,完全满⾜HTTP测试需求。整个测试思路基本如下:

  1. 对于每个Http接口请求手工编写测试脚本
  2. 把对同一个接口的所有测试用例py脚本封装为方法,每个接口封装一个接口类
  3. 使用Testsuite调用这些接口类,构建测试集,或利用unittest自动识别测试用例
  4. 构建自动化测试
  5. 输出测试结果报告

可以看到要使用Python+Request一方面是要熟悉Python语言和Request库,一方面是需要手工编写测试脚本,整个代码编写量仍然很大。这个方法跟采用Junit单元测试基本是差不多的。

参考:

https://www.cnblogs.com/ailiailan/p/8535293.html

https://blog.csdn.net/songlh1234/article/details/84317617

Postman

7ef5d136a8773d94577c09c8a86fe6f2.png

Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。

Postman最早是作用chrome浏览器插件存在的,2018年初Chrome停止对Chrome应用程序的支持。当前Postman提供了独立的安装包,不再依赖于Chrome浏览器了。同时支持MAC、Windows和Linux。

具体参考和下载:

https://learning.getpostman.com/docs/

https://www.postman.com/downloads/

JMeter

开源测试工具Jmeter可以承担接口请求、结果解析和断言的工作,可以作为轻量级接口自动化的实现手段,对于开发能力不强或规模不大的团队也能接受。Jmeter可以在协议层实现基本的功能,包括接口访问、参数化构造、返回值断言和数据库访问,基本足够满足一个轻量级的接口自动化框架的功能。

注意Jmeter不仅仅是用做接口自动化测试,同时更加重要的一个功能是做接口的性能测试,我们在录制完成Http请求脚本后,可以对脚本的线程数,运行时长,循环数等进行配置并执行,执行完成后会输出详细的性能测试报告。

具体参考:

https://www.cnblogs.com/rd-ddddd/p/9578242.html

基于Java+TestNG+Rest Assured进行自动化测试

42e26a97774e17dd3a45bfd253e3aad0.png

可以看到TestNG和Rest Assured是两个用于自动化测试的独立类库,这种方法偏白盒测试,需要自己编写测试代码,但是灵活性却相当高,同时可以和类似Jekins工具集合,当然也就可以和我们DevOps平台集成。

Rest-Assured 是一个测试Restful Web Service的Java类库,我们可以创建高度定制的HTTP请求以发送到Restful服务器。这使我们能够测试各种各样的请求组合,依次测试核心业务逻辑的不同组合。Rest-Assured库提供了验证从服器收到的HTTP响应的功能。

例如我们可以验证状态码,状态信息,标题甚至是响应的正文。这使Rest-Assured成为一个非常灵活,可用于测试的Java库。

而TestNG是一个开源自动化测试框架,实际上可以看到是和Junit差不多的一个自动化测试框架,只是增加了一些新的功能和更强大的集成能力。其优势是支持依赖测试方法,并行测试,负载测试,局部故障;灵活的插件API;支持多线程测试。

同时TestNG不仅仅可以测试Rest接口,也可以测试标准的Java API接口方法。

具体可参考:

https://www.cnblogs.com/wade-xu/p/4229805.html

注:上面这篇文章可以看到采用TestNG实现接口自动化测试,同时进行扩展,将测试脚本管理和测试数据管理分离。同时测试数据全部体现在Excel中。从Excel中读入测试输入,同时将测试接口输出到Excel中。

https://my.oschina.net/u/4112294/blog/3037471

注:上面这篇文章谈到TestNG和Rest Assured相结合如何进行接口自动化测试,同时如何和Jekins持续集成工具集成,将测试结果报告进行输出。

Rest Assured 自带支持对JSON、xml的解析,同时也提供了类似hasITems ,is,equalTo等静态方法供使用。尽管Rest Assured 提供了校验方法,但是在实际API自动化测试过程中,因为往往需要校验的字段非常多,建议还是直接先把要校验的JSON字段解析出来,再通过TestNG提供的Assert类进行校验。

对于Rest Assured的参考网站如下:

http://rest-assured.io/

https://github.com/rest-assured/rest-assured

LuckyFrame开源测试平台

36051e4726a3a825c04d4fd3e9dfe497.png

LuckyFrame测试平台是一款免费开源的测试平台,最大的特点是全纬度覆盖了接口自动化、WEB UI自动化、APP自动化,并且支持分布式测试。既然是一个完整的测试平台,那么自然会提供测试用例管理,测试数据管理,测试执行,质量管理,测试结果和测试报告查看等相关的功能。这个平台提供在线的Demo可以查看。

LuckyFrame自动化测试框架分为两个项目:

一个服务端项目(LuckyFrameWeb),一个客户端项目(LuckyFrameClient),服务端项目主要负责自动化过程的管理,比如用例管理、测试任务管理等等。客户端其实就是测试执行机,主要负责测试用例以及任务的执行。

Web项目主要分为系统管理、UTP、 质量管理、测试工具测试环境管理等模块。

具体演示地址:

http://www.luckyframe.cn/page/lfdemo.html

https://gitee.com/seagull1985/LuckyFrameWeb

这个平台感觉有些思路还是可以借鉴,在前面DevOps整个子系统划分的文章里面我也谈到,对于测试管理既可以是一个简单的模块放在DevOps支撑平台里面,也可以是一个独立的子系统,然后再实现和DevOps支撑平台的集成。

可以看到整个工具还是基本按照一个完整的测试管理平台来实现,覆盖了测试计划,测试设计,测试执行,测试报告等多个方面的内容。同时支持Web UI自动化测试,API接口自动化测试,整体框架相当也完整,但是相关诸多细节估计还需要不断迭代完善。

Http Runner自动化测试框架

b2606220e552f37d10fe8cf315eac3ce.png

HttpRunner 是一个基于 Python 开发的测试框架,2018年python开发者大会上,了解到HttpRuuner开源自动化测试框架,采用YAML/JSON格式管理用例,能录制和转换生成用例功能,充分做到用例与测试代码分离,相比excel维护测试场景数据更加简洁。

HttpRunner 是一款面向 HTTP(S) 协议的通用开源测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。

为了简化测试用例的编写工作,HttpRunner 实现了测试用例生成的功能,对应的转换工具为一个独立的项目:har2case。即通过当前主流的抓包工具将抓取到的数据包导出为HAR,然后再将HAR格式转化为YAML/JSON格式的测试用例文件。

对于HTTPrunner当前已经到2.0版本,但是整体感觉还不是一个完整的自动化测试框架平台,当前对于HTTPrunner可以应用于一些简单的接口测试,或者是不会有大改动的接口的回归测试,这样也挺方便的。但是对于一些复杂的测试不如采用Rest Assured功能强和灵活,毕竟Rest Assured基于Java,可以灵活进行Java代码脚本的扩展。

具体参考:

https://v1.httprunner.org/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SSM整合Druid数据库连接池

源码地址:https://gitee.com/gb_90/ssm_druid

实操教程丨如何将一个k3s集群集成到Gitlab项目中

作者|RancherLabs来源|CSDN企业博客关于k3sK3s是由Rancher Labs发布的一个轻量级Kubernetes发行版,这款产品专为在资源有限的环境中运行Kubernetes的研发和运维人员设计。它是经过认证的Kubernetes发行版,其最低的系统要求为:系统内核版本&am…

30个免费资源:涵盖机器学习、深度学习、NLP及自动驾驶

摘要: 本文是一份免费资源清单,涵盖机器学习、深度学习、NLP、AI以及自动驾驶,方便相关研究者选择自己感兴趣的内容资源进行学习随着碎片化的生活越来越日常化,大多数人都喜欢看总结性的的文章,这和时间成本有一定的关…

阿里AI界的新伙伴,1秒钟自动生成20000条文案

摘要: 最近,阿里“AI家族”又多了一位新的小伙伴——“AI智能文案”,俗称文案妹。 妹妹具备一个超能力,能仅用1秒钟自动生成20000条文案。 来,大家一起感受一下: 比如说你想买瓶粉底液,根据功效…

华为 招聘 状态 查看_英特尔放弃5G芯片研发:三星受益;爱立信2019年Q1净利润约2.51亿美元;华为也将要与高通和解;天津首个5G电话成功打通...

点击上方“通信人才网” 订阅!导读:今日热点 爱立信2019年Q1净利润约2.51亿美元 扭亏为盈近日,爱立信发布截至2019年3月31日的第一季度财报。财报显示:爱立信第一季度净营收为489.06亿瑞典克朗(约合52.93亿美元),较去年…

异步消息队列中间件

安装: rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpmrpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpmrpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm配置文件: vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app找到loopback_users,把双引…

创纪录!浪潮云海完成OpenStack Rocky版本全球最大规模单一集群测试!

戳蓝字“CSDN云计算”关注我们哦!云计算的概念已悄然走过十余年,在助力新兴技术发展的同时,自身也在历经变革。开源作为推动云计算发展的强大动力,于云计算而言,不仅是技术变革的历史潮流,也是相互助推的最…

idea如何反编译字节码指令_美团点评:Java字节码增强技术,线上问题诊断利器...

作者简介:泽恩,美团到店住宿业务研发团队工程师。文章转载于公众号:美团技术团队1. 字节码1.1 什么是字节码?Java之所以可以“一次编译,到处运行”,一是因为JVM针对各种操作系统、平台都进行了定制&#xf…

使用机器学习预测电子竞技游戏《守望先锋》的胜负

摘要: 机器学习可以预测游戏的输赢?来看看Bowen Yang博士是如何构建这一模型的。《守望先锋》中的英雄来自加州大学河滨分校的物理学博士学位的Bowen Yang正在致力于构建一个模型——对游戏中的人物特征进行有意义的学习,来预测电子竞技游戏中…

路由器上的usb接口有什么用_工业主板上有多少种USB接口,红色的USB接口代表什么...

USB接口正式出现是在1996年,一经问世,就成功取代了串口和并口,当然这只是相对于商业电脑和民用电脑而言的,在工控机中还是有串口和并口存在的。USB版本发展至今也已经历好几个阶段,例如USB1.0、USB1.1、USB2.0、USB3.0…

GitHub 热榜第一!这个 Python 项目超 8.4k 标星,网友:太实用!

这个十一,又经历了一波抢票大战。常规办法根本抢不到,大家就把目光转移到“技术手段”上,顺便把一个Python抢票工具,送到了GitHub趋势榜第一:标星超过8.4k,来自名叫文贤平的程序员。这很可能是全GitHub最德…

c语言点按钮弹窗口,【iOS】按钮点击弹窗

拖入一个Round Rect Button,并将Button的文字修改成“点击弹窗”将ViewController.h修改为如下代码,实则在ViewController.h中添加了一行-(IBAction)messageBoxShow;,注册messageBoxShow这个函数。类似于C语言使用函数之前需要在头文件声明这…

cstring 不明确_股价不可预测明确时间点的涨跌

前言最近不少朋友或私信问或群里问几类问题:XXX 股票还能买吗?买了会不会还继续下跌?买了我能不能立刻就涨?XXX 股票能卖吗?我卖了不会还继续涨吧?XXX 股票为什么下跌这么厉害,是要有黑天鹅出现…

11月4日,上海开源基础设施峰会,不见不散!

戳蓝字“CSDN云计算”关注我们哦!即日起,登录上海开源基础设施峰会网站,凭“OpenInfra10”优惠码注册就能享受九折优惠。另外,OpenStack基金会还特别为CSDN云计算社区的成员们预留了宝贵位置。11月4日至6日,世界各地的…

5求的值c语言编辑,C语言中怎样求1+3+5~~~~~+9值并 – 手机爱问

2018-04-06C 语言中的原码怎么?数计算机二进制形式表示数分有符号数和无符号数原码、反码、补码都有符号定点数表示方法有符号定点数高位符号位0正1副下都8位整数例原码数本身二进制形式例1000001 -10000001 1正数反码和补码都和原码相同负数反码其原码除符号位之外…

RabbitMQ 下载、安装、配置、验证_rpm版本(Linux环境)

文章目录一、RabbitMQ 安装准备二、RabbitMQ 安装2.1. 环境安装(最小化版本先安装环境)2.2. 安装包下载2.3. rpm安装RabbitMQ2.4. 配置文件修改2.5. 启动RabbitMQ2.6. 查看RabbitMQ是否启动2.7. 查看RabbitMQ 插件列表2.8. 安装RabbitMQ 管控台2.9. 浏览器访问RabbitMQ 管控台三…

python 华泰证券 客户端_华泰证券网上交易系统(高级版)下载 v8.13官方版下载

华泰证券网上交易系统高级版是止录最新的证券交易软件,该版本在原有版本上重新设计改版!数据更清晰,交易更快捷!新版本分别有行情、选股、资讯、数据和交易五大模块,新版的框架支持了4K高清显示器显示,如果…

使用拓扑数据分析理解卷积神经网络模型的工作过程

摘要: 神经网络功能强大,但内部复杂且不透明,被称为黑匣子工具。使用拓扑数据分析以紧凑且可理解的方式描述卷积神经网络的功能和学习过程。1.简介神经网络在各种数据方面处理上已经取得了很大的成功,包括图像、文本、时间序列等。…

2000万条直播数据,揭秘斗鱼主播生存现状

戳蓝字“CSDN云计算”关注我们哦!2019年7月17日游戏直播平台斗鱼在美国纳斯达克股票交易所成功上市,成为继虎牙直播之后第二家赴美上市的国内直播平台。7月底斗鱼因为平台主播“乔碧萝殿下”事件再次被推上热搜。段子手们纷纷调侃成为主播的门槛之低&…