Web、移动端、桌面端自动化测试工具或框架推荐

目前自动化测试可谓是人人在提,而且自动化工具和一些开源框架也是层出不穷。截止现在,我也接触了一些自动化的知识,分享下。

一、WebUI自动化

1. 工具或框架

Unittest框架,Selenium+Webdriver+Python集成开发

  • 优势: ①使用脚本直接来写,可以锻炼测试的代码能力 ②对于一个团队中人才的吸引也是有很大帮助的 ③可以更方便的加入一些断言或者错误处理 ④对于一些数据处理可能更灵活些
  • 劣势: ①对测试人员的代码功底可能要求稍微高一点 ②对脚本的健壮性要求比较高

2. 框架说明

【对应的截图见步骤3-框架截图】

①:截图功能。保存所有截图的图片,主要是用于复杂的页面,开发成本大的时候,可以把运行过程中的某些页面截图,保留现场,方便问题查找;

②:报告日志。把运行的过程和结果数据,全部保存起来,并且以Html的格式显示,比较直观,利于问题分析;

③:测试用例集。主要是所有的测试用例的集中管理,测试用例名称必须以test开头,这样unitetest才能识别到用例;

④:工具集。主要包含配置文件的调用、工程初始化、配置文件读取、邮件发送(设置对应的收发邮件人,可以把测试报告以邮件附件的方式发给项目组成员,方便大家查阅)

⑤:业务单元模块。主要是要实现的业务单元功能模块,包含具体的业务功能和操作;

⑥:框架入口。就是运行整个框架或者脚本的入口,此入口可实现一键操作就可以运行该工程下的所有测试用例。也可以单独制定运行某一条用例;

⑦:配置文件。所有的配置文件,包含execl、conf、json等格式的配置文件。主要用于参数化,数据驱动,配置信息等。

3. 框架截图

二、Web接口自动化

1. 工具或框架

Unittest框架,Selenium+Request+Python集成开发

  • 优势: 同WebUI自动化
  • 劣势: 同WebUI自动化直接使用接口工具,如postman、Jmeter等

2. 框架截图

①直接用脚本的话,其实和UI差不多,如下:

②如果使用工具的话,当然也很方便,postman如下:

①:接口请求的方式,如post、get、put等

②:接口的URL

③:接口请求的Body格式及内容

三、Web服务性能测试

1. 工具或框架

LoadRunner+Nmon

2. 工具说明

  • LoadRunner:

①可以提供脚本录制;

②支持多种协议;

③部分版本是可以破解的;

④可设置多种测试场景;

⑤软件本身可以给出一些性能指标,如:错误数、事务平均响应时间、每秒点击次数、吞吐率等

  • Nmon

直接装在被测服务器上,可以监控服务的CPU、IO、进程、线程、内存等信息

3. 工具截图

LR:

在这里插入图片描述

NMON:

在这里插入图片描述

四、移动端自动化

1. 工具或框架

UI自动化:Appium+Python/Java 安卓系统兼容性:Google CTS

2. 框架说明

主要内容可以查看如下图:

APPIUM:

GOOGLS CTS:

五、桌面端自动化

1. 工具或框架

Ranorex+C#/VBS

  • 优势: 选择Ranorex,主要是因为可以进行破解,而且支持的平台比较多,最主要目前的自己的项目是基于QT集成开发。貌似qtp不支持qt控件,具体没怎么研究。

2. 框架说明

桌面端这个,后边会单独出一章比较详细的内容,当做是自己的学习笔记了。

本文转载于网络 如有侵权请联系删除

相关文章

  • C语言之数组的基本知识

    大家好,又见面了,我是你们的朋友全栈君。在没接触数组之前,同学们用的都是定义一个一个变量来存放数据,但是这样就有一个缺陷,如果数据量很大的时候,比如有50个学生的成绩需要录入进去,那么定义50一个变量将会非常耗费时间,而且用scanf()函数输入数据的时候也很麻烦。intstu1,stu2,stu3,...,stu50; scanf("%d%d%d%d...",&stu1,&stu2,&stu3,...,&stu50);复制那么在C语言中有没有一种东西可以处理上面的数据呢? 当然有啦,数组这时候就出现了。 数组数组是数据结构(我们大一下学期会专门学习这一章节),它可以存储一个固定大小的相同类型元素的顺序集合。<摘自百度> 有几个关键字要注意一下: 1:固定大小, 2:相同类型, 3:顺序集合。 要理解数组就得理解这三个关键字,我接下来一个一个对这个关键字进行讲解。 一:数组.固定大小我们定义一个数组的时候,都必须事先告诉编译器这个数组的长度是多少,好让编译器给我们分配长度大小的内存空间,用来存放数据。 比如第一个例子,我想

  • 在AIX建立开机自动运行脚本

    系统环境:操作系统:AIX5300-08在AIX系统下,level2为系统运行默认级别(多用户多任务,支持图形)[root@aix211/]#who-r.    run-level2May2011:35   2  0  S[root@aix211/]#cd/etc/rc.d/rc2.d/[root@aix211rc2.d]#ls-ltotal24lrwxrwxrwx  1root  system     13May 815:22K96init.crs->/etc/init.crslrwxrwxrwx  1root  system     14Sep122013 K96init.cssd->/etc/init.cssd-r-xr-x---  1root  system     363Aug302013 Kradiusdlrwxrwxrwx  1root  system     13May 815:22S96init.crs->/etc/init.crslrwxrwxrwx  1root  system     14Sep122013 S96init.cssd->/

  • Prometheus实现对IDRAC的SNMP监控

    序SNMP是管理进程(NMS)和代理进程(Agent)之间的通信协议。它规定了在网络环境中对设备进行监视和管理的标准化管理框架、通信的公共语言、相应的安全和访问控制机制。网络管理员使用SNMP功能可以查询设备信息、修改设备的参数值、监控设备状态、自动发现网络故障、生成报告等。snmp_exporter安装下载你需要的版本,解压并运行 https://github.com/prometheus/snmp_exporter/releasesnohup/root/snmp_exporter/snmp_exporter--web.listen-address=0.0.0.0:9116--config.file=/root/snmp_exporter/snmp.yml>/root/logs/snmp_exporter.log2>&1&复制mibs下载#DelliDRAC-SMIv2.mib下载地址 wgethttps://dl.dell.com/FOLDER06571535M/1/Dell-OM-MIBS-950_A00.zip #解压文件(记住你的解压路径,后面需要

  • int转字符串实现方法

    抖音的分享链接一般为: https://v.douyin.com/JGoSFt2/那么后面那串  JGoSFt2 是什么呢?其实后面那串为分享id转字符串,原始数据可能为:1091566355946,通过特定算法转换为了更短的字符串实现代码为:<?php namespace EasySwoole\Utility; class IntStr {     public const intMax = 9223372036854775668;     private const alphabet = [         'A','a','B','b','C','c','D','d','E', 'e',         'F','f','G','g','H','h'

  • marquee 标签参数详细说明

    marquee元素(<marquee>)可以用来插入一段滚动的文字,实现类似走马灯的动效。 但这个标签已经过时(MDN文档已经不建议使用),此前因之前项目紧急用过,做个标签参数小结。 1.marquee的属性behavior:设置文本如何滚动。属性值有3种: scroll-循环滚动。默认值。 slide-滚动一次。 alternate-两端来回滚动。direction:设置文本滚动的方向。属性值有4种: left-从右向左。默认值。 right-从左向右。 up-向上。 down-向下。loop:设置滚动的次数。默认值-1,无限次循环。scrollamount:设置每次滚动时移动的长度(以像素为单位),也就是滚动速度。默认值为6。 值越大,滚动速度越快,一般5-10比较适合查看消息。scrolldelay:设置每次滚动时的时间间隔(以毫秒为单位)。默认值为85。 值越大,滚动速度越慢,通常不设置。 注意:除非指定truespeed值,否则将忽略任何小于60的值,并改为使用60。truespeed:默认情况下,会忽略小于60的scrolldelay值。如果存在truespee

  • spring之spring表达式语言:SpEL

    (1)spring表达式语言是一个支持运行时查询和操作对象的表达式语言。(2)语言类似于EL:SpEL使用#{...}作为定界符。所有在大括号中的字符串均被认为是SpEL。(3)SpEL为bean的属性进行动态赋值提供了便利。(4)通过SpEL可以实现:通过Bean的id对Bean进行引用调用方法及引用对象的属性计算表达式的值正则表达式匹配字面量的表示:整型:#{5}小数:#{3.45}科学计数法:#[1e4]字符串:可以使用单引号或双引号早味字符串的定界符:#{'tom'},#{"tom"}布尔值:#{false}SpEL支持的运算符号:+-*/%^<>==<=>=ltgteqlegeandornot|(?:)if-else正则表达式等等调用静态属性和方法:通过T()以下代码均忽略类中的getter、setter和to_string方法。Car.javapackagecom.gong.spring.beans.spel; publicclassCar{ publicCar(){ } publicCar(String

  • JAVA程序第二期

    又见面啦,不是小编工作忙偷懒不更,主要是有些例子过于简单,就不拿上来给大家分享了,现在小编刷了一百多例,终于有集齐了几个拿得出来的,来跟大家分享一下。第一发,排序经典实现,即用TreeSet实现有序存放,该方法的特点的是在数据加入集合中时就会对其进行排序,排序规则就是所谓的自然序列,从小到大,包括数字和字母。但是其中的问题就是,因为是Set结构,如果数据出现重复,那么会造成结果的丢失,在使用时应该注意。另外,本方法也是字符串去重的解决方案之一,但是也有会出现一个问题,那就是去重之后集合中的数据会按照自然序列排序啊有没有。。。对于某些业务场景也许并不算是问题,但是在数据流中,执行数据合并的时候会获取两个表的字段进行去重,这个时候如果采用的TreeSet就会使得表字段乱序,这也是小编在工作当中遇到的问题,好了,下面大家来看一个实例吧。这里顺便说一些集合的add方法本身也是有返回值的,也就是是否添加成功的状态,为布尔类型,上例中的判断是为了保证最终集合中有十个元素,而toArray方法是比较便捷的转换为数组的操作,在以后大家可以组合在一起灵活使用。 第二个例子,浅度克隆,在编程中,变量与对象

  • PHP也能实现区块链?基础结构篇

    列旭松,唯品会资深工程师,曾任职于YY语音,熟识PHP、C语言和Go语言。10年PHP开发经验,对PHP底层实现原理有较深理解。热衷于开源事业,开源过多个PHP相关的扩展,流行的PHP源码加密扩展(PHP-Beast)作者。另外,本人对分布式缓存系统(如Redis、Memcached)有较大的兴趣,喜欢钻研底层实现原理,《PHP核心技术与最佳实践》一书的作者。引言什么是区块链?官方的解释是:区块链是一个分布式记账系统,是藉用密码学串接并保护其内容的串连交易记录(又称区块)。每一个区块包含了前一个区块的加密散列、对应的时间戳记以及交易数据(通常用默克尔树算法计算的散列值表示),这样的设计使得区块内容具有难以被窜改的特性。用区块链所串接的分布式账本能让两方有效率地纪录交易,且此交易可永久被查验。但这个解释对于初学者来说太抽象了,所以接下来我们将会使用PHP来实现一个简易的区块链来加深对区块链的理解。区块大家应该玩过成语接龙,规则是这样:我先说一个成语“人上人海”,下一个玩家需要使用我说的成语的最后一个字作为下一个成语的开头,就是说需要使用“海”这个字作为新成语的开头,这时就可以接一个“海阔

  • JDK和JRE的关系

    JDK(JavaDevelopmentKit)是我们学习Java首先要安装的软件,JDK安装完成之后,安装向导会询问我们是否安装JRE(JavaRuntimeEnvironment),那到底还要不要安装呢?回答这个问题前,首先要知道JDK和JRE是什么关系。啥是JDK,啥是JRE我们看看来自百度百科的解释:JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。 百度百科JRE是JavaRuntimeEnvironment缩写,指Java运行环境,是Sun的产品。运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。 百度百科它的意思是说JDK包含了JRE,在逻辑关系上运行Java程序肯定是需要JRE的,即JDK包含JRE。这点我们可以证实,在安装JDK的目录下找到JRE的文件夹: 也就是说,当你安装JDK完成后已经默认安装了JRE,因为安装完JDK肯定是要开发的,开发就要运行Java程序,所以JDK包含了JRE。如果你只是单纯的

  • Linux sort命令简介

    用sort对文件排序,发现这个命令比想象中要复杂和强大,仔细研究了一下文档,记录一下。首先看一下文档,建议浏览一下,用的时候再详细看看:$sort--help 用法:sort[选项]...[文件]...  或:sort[选项]...--files0-from=F WritesortedconcatenationofallFILE(s)tostandardoutput. 如果没有指定文件,或者文件为"-",则从标准输入读取。 必选参数对长短选项同时适用。 排序选项: -b,--ignore-leading-blanks忽略前导的空白区域 -d,--dictionary-order只考虑空白区域和字母字符 -f,--ignore-case忽略字母大小写 -g,--general-numeric-sortcompareaccordingtogeneralnumericalvalue -i,--ignore-nonprintingconsideronlyprintablecharacters -M,--month-sortcompare(unknown)<&#x

  • 简单易懂最常用的Python图像处理库

    本文主要介绍了一些简单易懂最常用的Python图像处理库当今世界充满了各种数据,而图像是其中高的重要组成部分。然而,若想其有所应用,我们需要对这些图像进行处理。图像处理是分析和操纵数字图像的过程,旨在提高其质量或从中提取一些信息,然后将其用于某些方面。图像处理中的常见任务包括显示图像,基本操作(如裁剪、翻转、旋转等),图像分割,分类和特征提取,图像恢复和图像识别等。 Python之成为图像处理任务的最佳选择,是因为这一科学编程语言日益普及,并且其自身免费提供许多最先进的图像处理工具。让我们看一下用于图像处理任务的一些常用Python库。1.scikit Imagescikit-image是一个基于numpy数组的开源Python包。 它实现了用于研究、教育和工业应用的算法和实用程序。 即使是对于那些刚接触Python的人,它也是一个相当简单的库。 此库代码质量非常高并已经过同行评审,是由一个活跃的志愿者社区编写的。使用说明文档:https://scikit-image.org/docs/stable/user_guide.html用法举例:图像过滤、模版匹配可使用“skimage”来导

  • .NET Core实战项目之CMS 第十五章 各层联动工作实现增删改查业务

    连着两天更新叙述性的文章大家可别以为我转行了!哈哈!今天就继续讲讲我们的.NETCore实战项目之CMS系统的教程吧!这个系列教程拖得太久了,所以今天我就以菜单部分的增删改查为例来讲述下我的项目分层之间的协同工作吧!如果你觉得文中有任何不妥的地方还请留言或者加入DotNetCore实战千人交流群637326624跟大伙进行交流讨论吧! 写在前面前面的章节中我们基本的增删改查都有了,甚至后台模板我们也找到并集成到了我们的CMS系统中了!那么剩下的就是对功能的开发了。对于功能的开发部分,我不会全部都拿出来讲,只会以一个菜单的例子来进行讲解!话不多说,开是吧!各层之间的协作先来讲讲我的分层协作的设计思路。虽然借助了DDDLite的部分思想,但是又与其不通,因为小项目严格按照DDD的思想来进行开发完全是找虐。如果有需要我后期会对结构进行调整来向DDD层次迁移。先上一张图吧:这里所有的底层方法都是在Repository层进行的,加入仓储接口层的原因是为了解耦,一路跟着教程走来的朋友一定知道我目前我的仓储层是按照SQLServer数据库进行开发的,后期我会对MySQL,甚至PgSql的支持!这样的

  • 图解TensorFlow架构与设计

    作者:刘光聪 中兴通讯高级系统架构师,专注机器学习算法,分布式系统架构与优化。 原文:TensorFlow架构与设计 http://www.jianshu.com/p/a5574ebcdeab 责编:王艺CSDNAI记者,投稿、寻求报道、深入交流请邮件wangyi@csdn.net或扫描文末二维码添加微信。TensorFlow是什么?系统概述组件交互客户端DistributedMaster子图片段SEND/RECV节点WorkerServiceKernelImplements技术栈最后,按照TensorFlow的软件层次,通过一张表格罗列TensorFlow的技术栈,以便更清晰地对上述内容做一个简单回顾。TensorFlow技术栈

  • 风控ML[16] | 风控建模中怎么做拒绝推断

    00Index01什么是拒绝推断? 02为什么要做拒绝推断? 03什么时候做拒绝推断? 04做拒绝推断都有哪些方法? 05验证拒绝推断效果的方式 06总结一下?01什么是拒绝推断拒绝推断要解决的问题就是去推断那些被拒绝的客户,如果放贷的话,后续的贷后表现是什么样子,是好样本,还是坏样本?并把推断的结果,加入到建模样本中用于丰富样本的多样性,缩小与总体分布之间的差异。?02为什么要做拒绝推断在我们的生活中,有很多关于幸存者偏差的例子,比如我们身边的同事月收入都是过万,就误以为大多数人都是这样子,身边的人都是本科毕业,就以为大多数人都上过大学。同样的,在金融建模领域也会有这种现象,那就是很多坏客户可能被我们拒绝准入了,所以长期以往库内的客户,都基本上算是不那么差的客户,那么如果我们直接拿这些数据来统计建模,就会出现了偏差,也就是用局部样本代替了全局样本,从而可能会得到不太能代表真实分布的模型,出现了线下回溯效果好,但上生产实际去跑之后的表现却不尽人意。 图:来自于https://zhuanlan.zhihu.com/p/8862498 这就是我们为什么要做拒绝推断的主要原因,我们需要加入一

  • Flink Checkpoint &amp; Savepoint

    Flinkcheckpoint Checkpoint是Flink实现容错机制最核心的功能,能够根据配置周期性地基于Stream中各个Operator的状态来生成Snapshot,从而将这些状态数据定期持久化存储下来,从而将这些状态数据定期持久化存储下来,当Flink程序一旦意外崩溃时,重新运行程序时可以有选择地从这些Snapshot进行恢复,从而修正因为故障带来的程序数据状态中断。 Checkpoint指定触发生成时间间隔后,每当需要触发Checkpoint时,会向Flink程序运行时的多个分布式的StreamSource中插入一个Barrier标记 当一个Operator接收到一个Barrier时,它会暂停处理Steam中新接收到的数据记录 每个Stream中都会存在对应的Barrier,该Operator要等到所有的输入Stream中的Barrier都到达。当所有Stream中的Barrier都已经到达该Operator,这时所有的Barrier在时间上看来是同一个时刻点(表示已经对齐) 该Operator会将数据记录(OutgoingRecords)发射(Emit)出去,作为下

  • week07 13.2 NewsPipeline之 二 News Fetcher - Xpath

    我们使用Xpath来专门做一个scrapter 我们专门弄个文件夹里面全部是各个新闻源(CNNBBC等)的scraper来抓取网站的text内容 主要函数(就是传入text内容的那个url)然后进行抓取内容返回news一会写具体内容 这个函数主要做3件事 首先download这个url获取html 然后parsehtml成tree 组合extractinformation(提取信息用Xpath或者后边自动爬内容的第三方库newspaper)这里我们现用Xpath后边再优化 进行2次伪装 下一步就是伪装header 这里需要一个 我们自己准备一个useragent的list表 每次随机从里面选一个作为我们的useragendheader 有了表我们就要用这个表   最后再用random重新洗牌   然后通过上面伪装的2个去请求目标url返回目标url的内容text用response接收 网站获得我们的请求查看我们的session和header就会 认为我们是正常的用户不是机器人就会返回我们要的text我们就可以一直爬信息

  • CentOS7 开机调整亮度

    默认亮度是100,受不了,所与就自己想了个办法,依赖其它的自启动服务使我的设置生效。/usr/lib/systemd/scripts/nfs-utils_env.sh这是一个开机自启动服务要用到的脚本,在这个脚本的最后添加这么一行脚本:echo20>/sys/class/backlight/acpi_video0/brightnessok.美中不足的是这个服务在开机时启动比较靠后,所以屏幕会闪一下*_*

  • 微服务平滑迁移上云最佳实践

    作者:草谷 背景 许多企业在做微服务架构改造的时候,在自建还是上云的选择上难以决策,选择上云后,在微服务上云过程中,如何能够做到不影响业务情况下平滑迁移呢,通过阅读本文,你可以快速获得以下知识点和能力: 了解微服务上云给企业带来的价值 了解微服务迁移过程中带来的挑战 掌握通过MSE提供的迁移方案平滑上云 微服务迁移上云背景 自建微服务平台面临的问题 在早期的时候,由于平台型PaaS 设施服务还不够完善,有不少企业的微服务平台是自建的,我们今天一起看下,这些企业在运维自建微服务组建过程中,遇到哪些比较典型的问题: 这张图是一个典型的微服务架构,主要包含接入层和微服务中心两块,终端的HTTP请求进入到接入层,这层采用一定的分配算法将网络请求分发到后端的多个服务器,后端的服务器组成了一个微服务中心,里面部署着大量业务机器和注册配置中心等微服务组件,这些组件基本采用的都是开源组件: 微服务组件复杂度高,维护难 网关和注册配置中心是微服务架构中核心的组件,要保证高性能,高可用稳定的设计,必然导致组件的复杂度提升,同时部署结构要保证多级容灾,这也加大了整体的维护

  • 【python基础模块】Python的日志模块logging的使用

        参考 1. Python的日志模块logging的使用; 完 做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。版权声明,转载请注明出处:https://www.cnblogs.com/happyamyhope/

  • C - Swaps 2

    C-Swaps2 三种操作。第二种操作和第三种操作可以用个小技巧消掉,直接就第一种操作了。 a[i]+=i,然后贪心一下,经典逆序对问题。 #pragmaGCCoptimize("Ofast","unroll-loops","omit-frame-pointer","inline") #pragmaGCCoptimize(3,"Ofast","inline") #pragmaGCCoptimize("Ofast") #pragmaGCCtarget("avx,avx2,fma") #pragmaGCCoptimization("unroll-loops") #include<iostream> #include<cstdio> #include<algorithm> #include<unordered_map> #include<vector> #include<map> #include<list> #include<queue> #include<cstring> #inc

  • 怎样才能彻底地删除多余输入法软件

    怎样才能彻彻底底地删除输入法软件 【删除多余系统注册表】 开始/运行,在对话框中输入“Regedit”(不含引号)调出注册表进行如下逐项操作: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\KeyboardLayouts\ 保留。 00000409(默认)-美国英语(禁止删除) 00000804中文(简体)-美式键盘(禁止删除) E0010804中文(简体)-全拼 E0030804中文(简体)-郑码 E0040804中文(简体)-智能ABC E00E0804中文(简体)-微软拼音输入法3.0 (系统右下角显示) E0020804中文(简体)-双拼 E0050804中文(简体)-内码 E0120804Chinese(Simplified)-EnhancedUnicodeIME(Windows2000)

相关推荐

推荐阅读