自动化测试
TesterAllen
理想还很远,但今天你努力了吗?学的越多,会的越少
展开
-
【测开基础之mvn test】一、利用maven-surefire-plugin完成对测试用例的基础执行管理及踩坑
1、需求1、执行自动化测试用例的时候,只想指定某个测试类,或者某个方法,又或者某一类用例等,怎么办?2、想要和Jenkins一起进行持续集成,可是用例又不可能在IDE里面执行,怎么办?这个时候就需要maven登场了,利用maven的maven-surefire-plugin插件可以帮助我们完成上述的目标!它可以通过命令行的形式来管理我们要执行的用例。2、环境2.1 环境要求Maven 3.x +JDK 1.7 +2.2 支持框架对于我们测试来说,常接触的几个用例管理框架都支持(这里原创 2020-05-28 11:28:57 · 2731 阅读 · 0 评论 -
01-初识REST Assured-为Java量身定做的接口自动化框架
1、初识REST Assured1.1 描述在REST Assured的官方GitHub上有这样一句简短的描述:Java DSL for easy testing of REST services简约的REST服务测试Java DSL1.2 优点官方的README第一句话对REST Assured进行了一个优点的概述,总的意思表达的就是简单好用用Java做接口自动化测试首选REST...原创 2020-01-10 15:43:35 · 1228 阅读 · 0 评论 -
iOS自动化测试(二)-基于appium的架构原理、环境命令、定位方式
1、原理与变迁1.1 环境版本变迁先来看下面的版本对应表由上表可以得知:iOS 8.0到9.3 之间的时候一直以 instruments 下的 UIAutomation为驱动底层技术查阅资料说弊端是由于 instruments 的限制,单台 mac 只能对应单台设备,由于现在9.3之前的版本很少了,所以我在学习的时候也就忽略了这部分的内容,仅作为了解);iOS 9.3 之...原创 2019-12-19 11:08:34 · 1340 阅读 · 0 评论 -
iOS自动化测试(一)-技术方案、环境配置与疯狂踩坑
移动端的自动化测试,最常见的就是Android自动化测试,IOS相较于Android要安全稳定的多,但是IOS也是一个需要测试的方向,作为测试,不认真测一下心里还是过意不去,只是我个人觉得Android的测试优先级会更高,当然Android也更开放,更容易测试;今天这里来一起学习记录下iOS自动化测试要如何来做1、环境准备硬件环境:Macbook Pro(做iOS测试,Mac是绕不开...原创 2019-12-17 16:09:01 · 5189 阅读 · 3 评论 -
以AppCrawler的配置文件完成定制化的自动遍历测试(实操)-02
1、前情回顾在此之前,分别通过两篇文章介绍了自动遍历的测试需求、工具选择和AppCrawler的环境安装、启动及配置文件字段基本含义,具体可参考博客:初探自动遍历测试工具-AppCrawler以AppCrawler的配置文件完成定制化的自动遍历测试(基础)-01这里将以实际案例更加细致的说明配置文件的用法和一些特殊场景的处理2、实操演示2.1 常规使用下面我们继续之前的例子,在雪球搜...原创 2019-12-04 17:16:32 · 4089 阅读 · 9 评论 -
参数化和数据驱动在App自动化测试中的应用(基于Junit5和YAML)-01
1、何为数据驱动什么是参数化?什么又是数据驱动?经常有人会搞不明白他们的关系,浅谈一下个人的理解,先来看两个测试中最常见的场景:登录:不同的用户名,不同的密码,不同的组合都需要做登录场景的测试,正常的排列组合下可能会产生多个用例搜索:不同的搜索条件产生不同的搜索结果,搜索也是常见的测试项,单个搜索参数或者多种搜索参数的组合;同样也会产生多个用例。以上两种场景都有一个共同点,就是测...原创 2019-11-28 17:03:51 · 1330 阅读 · 4 评论 -
App自动化之dom结构和元素定位方式(包含滑动列表定位)
1、认识DOM结构先来看几个名词和解释:dom: Document Object Model 文档对象模型dom应用: 最早应用于html和js 的交互。界面的结构化描述, 常见的格式为html、xml。核心元素为节点和属性xpath: xml路径语言,用于xml 中的节点定位如下我们先来看一个App的dom:控件的基础知识和selenium一样,appium为移动端抽象出了一个...原创 2019-11-12 11:25:04 · 1538 阅读 · 0 评论 -
从解读Appium官网的第一段话开始敲开移动互联网自动化的大门
1、移动互联网背景随着智能手机的普及和互联网的发展,移动互联网已经渐渐成为人们的一种的生活方式;既然是生活方式,那么对生活品质就会有不断的提升要求,就会对所用的移动互联网产品有更高的体验需求,这对于我们测试工程师来说就有了更高的质量保证要求,而时间短,进度快,种类多,使得我们仅靠人工很难保证版本的测试充分,这个时候就需要借助自动化来释放人力,提升效率了。1.1 一般架构移动端:用户会通...原创 2019-11-11 17:36:54 · 380 阅读 · 0 评论 -
推开Web自动化的大门到达“犯罪现象”-侦破selenium架构、环境安装及常用元素定位方法
有关Selenium的介绍在网上实在是太多了,总结起来就是一个目前在web自动化方面运用最为广泛的一个开源自动化测试框架Selenium架构client:每个语言都有自己的库,提供不同的API供用户去调用完成相关的自动化测试行为;这里调用有关web自动化的API到selenium的serverselenium:用于将接收到的请求传给浏览器的driver,实施调用,实际上seleniu...原创 2019-10-28 14:30:28 · 417 阅读 · 0 评论 -
测开基础串讲-Java基础-测开常用API之Random类
在日常的测试开发工作中,Random类算是使用比较频繁的一个类了,有时候创建测试数据,可能需要随机生成一些姓名、年龄、号码、编号等,这个时候我们可能就会在固定的名称后面加上随机数字、字符等;下面就来看看测开常用API之Random类的使用1、什么是Random类我们打开jdk的API文档可以看到如下解释:由API文档中可以看到主要信息包括:此类位于java.util包中此类的实...原创 2019-10-22 18:40:59 · 761 阅读 · 0 评论 -
04 Junit原生断言和hamcrest断言的区别及使用
1、Junit原生断言assert打开Junit自带的Assert源码如下:由源码中可以看到常用的一些断言,如assertTrue、assertEquals、assertNotEquals等,总体来说都是比较简单的相等语义判断的断言;例如我需要断言一个约等于的值或者有个区间波动的值,是否包含某个值等,这个时候assert就无法直接满足我的需求了,因此下面推出一个更强大灵活的断言——hamcr...原创 2019-10-17 17:17:00 · 772 阅读 · 0 评论 -
05 xUnit框架整合定制测试报告Allure2
1、报告框架分类xUnit style xml报告mvn surefire插件的html报告Allure2多语言测试报告2、生成测试报告2.1 xUnit style xml报告所有XUnit的测试报告都适用,如Java的Junit,Python的pytest等1)现有如下测试类Junit4DemoTestpackage junit4demo;import org....原创 2019-10-16 20:53:19 · 870 阅读 · 0 评论 -
03 TestNG框架与Junit的区别简介与使用-基本注解使用、套件测试、参数化测试、分组测试、依赖测试、多线程测试等
1、What is TestNG?1.1 什么是TestNG?下面这段英文是testNG官方给出的说明:TestNG is a testing framework inspired from JUnit and NUnit but introducing some new functionalities that make it more powerful and easier to use...原创 2019-10-13 21:15:33 · 604 阅读 · 0 评论 -
接口自动化-用schema对接口返回值类型做校验-基于rest-assured
我们做接口自动化时,对接口返回值进行断言校验,除了常用字段的断言检测以外,还要对其他字段的类型进行检测原因:1、返回字段较多,无法保证每个字段都写断言2、防止后端未做null值的校验判断,如果因为版本变更或网络等原因造成某个不能接收null值的返回字段为null,就很有可能造成软件的崩溃3、某些数值是不能为负的4、小数点保留位数,对于股票的交易、医疗数据的分析,小数点的精确度都是有...原创 2019-08-21 15:41:40 · 1099 阅读 · 0 评论 -
测试工作常用Linux shell命令-Linux三剑客之sed
sed:stream editor 根据定位到的数据行修改数据sed修改表达式:sed 's/待修改/修改结果/'注意说明表达式单引号中的s表示修改,/ 符号表示分隔,实际上将/换成其他符号也可以,只要能起到分隔作用就OK[16210504@izuf60jasqavbxb9efockpz ~]$ echo "aaa|bbb}|cccbbb" | sed 's/bbb/BBB/'...原创 2019-09-02 19:35:10 · 192 阅读 · 0 评论 -
测试工作常用Linux shell命令-bash基础之bash运行环境
1、shell运行环境概念* bash下还可以再重新启动一个shell,这个shell是sub shell(子shell),原shell会复 制自身给他。在sub shell中定义的变量,会随着sub shell的消亡而消失 * () 子shell中运行* $(ls) 表示执行ls后的结果,与``作用一致,不过可以嵌套* {} 当前shell中执行* $$ 当前脚本执行的pid* ...原创 2019-09-02 17:23:13 · 610 阅读 · 0 评论 -
测试工作常用Linux shell命令-bash基础之逻辑控制
* 条件 if* 分支 case* 循环 for while until select Break 和 continue由于平常测试工作中用到的几乎就是if、for、while,所以这里也就只重点介绍这3中用法if结构* if [ condition ] ; then ...;fi* if [ condition ] ; then ...;else ...;fi * if [ ...原创 2019-09-02 11:07:12 · 211 阅读 · 0 评论 -
测试工作常用Linux shell命令-bash基础之变量
对于bash的介绍,网上一大堆,这里不赘述1、变量定义* a=1* b=hello_test* c="hello test"* d='hello test "做一名优秀的测试工程师"'* e=\`ls`注意说明* = 左右不要有空格* 如果内容有空格,需要使用单引号或者双引号* 双引号支持转义 $开头的变量会被自动替换2、变量使用* echo $a * echo ${...原创 2019-09-01 21:11:35 · 425 阅读 · 0 评论 -
测试工作常用Linux命令-Linux三剑客之awk
awk = “Aho Weiberger and Kernighan” 三个作者的姓的第一个字母awk是Linux下的一个命令,同时也是一种语言解析引擎awk具备完整的编程特性。比如执行命令,网络请求等精通awk,是一个Linux工作者的必备技能语法:awk ‘pattern{action}’awk pattern语法awk理论上可以代替grepawk ‘pattern{act...原创 2019-09-01 10:49:44 · 324 阅读 · 0 评论 -
测试工作常用Linux命令-查看帮助文档命令--help和man有何区别(以curl命令为例)
工作中查看Linux命令的帮助文档可以有两种方式,以curl命令为例:curl --helpman curlcurl命令可以对URL地址发起请求,有-s、 -I、 -v等等命令以-s、-I命令为例,先来看看–help查询到的帮助信息:-s --silent Silent mode (don't output anything)-I, --head ...原创 2019-08-31 13:06:24 · 902 阅读 · 0 评论 -
接口自动化-如何对接口数据通过Har形式获取
一、Har文件获取在Web端,使用Chrome浏览器,打开开发者工具(F12),我们可以对浏览器的行为进行抓包选中接口右击,选择Copy all as HAR,这样就可以把接口的内容全部都以HAR的形式复制了下来二、HAR reader将复制好的内容保存至以.json文件结尾的文本中,我们可以看到其实内容格式就是一种json格式,只不过有它定义好的格式规范在ent...原创 2019-08-27 08:10:10 · 1941 阅读 · 0 评论 -
测试工作常用Linux命令-Linux三剑客之grep
grep-global regular expression print-全局正则表达式打印可用于数据查找定位先列举出测试工作常用的grep命令和意义:grep pattern filegrep -i pattern file 忽略大小写grep -v pattern file 不显示匹配行grep -o pattern file 只把每个匹配的内容独立的行显示grep -...原创 2019-09-03 10:28:18 · 325 阅读 · 0 评论 -
测试工作常用Linux shell命令-bash基础之脚本编写
脚本涉及* 注释* 传入参数* 函数* 执行* 调试1、注释#以后的语句,shell不会解析。 多行注释可以考虑采用:<<2、传参$0 表示执行的程序,是相对于执行目录的路径;$1,$2,$3分别表示第几个参数。bash最多只支持传入9个参数,如果超过了9个,想要传入的话就需要在传入参数的索引外加上花括号{}3、函数[function] name() ...原创 2019-09-03 17:52:34 · 617 阅读 · 0 评论 -
Jenkin的安装与启动(war包形式)
1、在Jenkins官网https://jenkins.io/zh/download/下载war包2、在war包路径下运行"java -jar jenkins.war"命令3、第一次运行过程中会产生一个密码和密码存放的路径,记住它,后面解锁的时候会用的到4、解锁Jenkins,输入上一步中生成的密码,解锁后创建一个用户5、选择需要安装的插件。不知道需要时就安装推荐插件(注意:这里安...原创 2019-06-25 18:06:53 · 2595 阅读 · 0 评论 -
02 Junit5简介、构成、新特性及基本使用-常用注解、套件执行
1、What is Junit5?什么是Junit5,在Junit5的官方介绍文档中这写到:Junit5由JUnit Platform + JUnit Jupiter + JUnit Vintage3部分构成借用IBM Developer的一张图来说明JUnit 5 的架构:JUnit Platform :其主要作用是在 JVM 上启动测试框架。它定义了一个抽象的 TestEngi...原创 2019-10-11 11:42:36 · 1387 阅读 · 0 评论 -
01 如何利用xUnit框架对测试用例进行维护-xUnit简介及基本使用方法(基于Junit4)
1、xUnit是什么先看Wikipedia上的解释xUnit是一系列测试框架的统称,最开始来源于一个叫做Smalltalk的SUnit框架,现在各种面向对象的语言,如Java、Python的鼻祖就是Smalltalk,后来这些语言都借助了Sunit框架的理念,有很多通用的规范和特征,也就统称为xUnit.1.1 xUnit框架体系Java : JUnit、TestNGPython :...原创 2019-10-08 18:16:42 · 1616 阅读 · 0 评论 -
05 Git的分支管理策略-Gitflow,基于GitLab演示feature、develop、release、hotfixes branch
先以GitLab上的一张经典的图打头,作为一个总体概览,也方便理解分支的管理和走向:1、场景预设现假设公司有名为Hogwarts_Online2的开发项目,其中包含了上线分支master,开发分支develop,测试分支release,和个人开发的特性分支<feature branch>2、特性分支与develop分支2.1)与远程仓库建立连接,在本地创建自己的分支,并拉取...原创 2019-09-24 00:01:02 · 2195 阅读 · 5 评论 -
04 Git的分支管理策略简介与演示-基于GitHub
1、Centralized workflows类似于SVN这种集中式版本管理,三年前刚来上海工作时候,在华为驻场上班,华为用的就是SVN,印象最深的就是那个小乌龟的图标;后来到外面工作,渐渐发现用Git的非常多,慢慢学习了解发现Git这种分布式的版本管理确实很好很强大,后面也就重点学习Git的分支管理策略了(其实SVN我现在压根就不会了,哈哈。。。)2、特性分支工作流(Feature Bra...原创 2019-09-22 11:25:08 · 404 阅读 · 0 评论 -
03 GitHub的基本使用-fork、clone、merge PR、fetch、IDE中的Git集成
1、ForkGitHub上我们可以fork别人的项目,为了与别人产生一种协作关系,将他人的项目在自己本地创建也一个,这里以testerhome社区的Hogwarts测试学院的演练环境做演示:1.1) 点击fork按钮对项目进行fork:1.2)fork完成后就可以在我们自己的GitHub账户下见到被fork的项目:2、Clone2.1)接着我们使用git clone命令将f...原创 2019-09-22 00:45:01 · 1017 阅读 · 0 评论 -
02 GitHub的基本使用与踩坑-从零创建项目,第一次的各种提示报错,一铲子填平!
之前介绍过Git的基本原理和常用的基本操作,有需要的小伙伴可参考博客:《穿越时空的git》科幻小电影-Git创建版本库和常用命令操作-提交、回退、撤销、删除1、申请GitHub账号这个就不多说了,大家自行百度或Google吧哈,这里默认大家都已经有GitHub账号了~2、配置GitHub(如果已经配置好的小伙伴可以跳过这部分)2.1)踩坑时刻第一次使用,如果没有配置好,会遇到各种问题...原创 2019-09-20 10:33:16 · 1061 阅读 · 0 评论 -
01《穿越时空的git》科幻小电影-Git创建版本库和常用命令操作-提交、回退、撤销、删除
一、创建版本库what is 版本库?无论我们平常使用git的频率如何,但是从事IT这个行业的小伙伴一定经常听到有人在说,哪个哪个牛X的项目在哪个仓库,哪个项目的仓库被人恶意添加issue(之前就听说了阿波罗计划的代码仓库中issue被很多无关的中文评论占楼~哎,咱们测试工程师一定不要这样做,为这个行业尽一份力);说了这么多废话,其实我们平常说的仓库就是版本库,版本库又名仓库,英文名叫repo...原创 2019-09-19 19:47:51 · 605 阅读 · 0 评论 -
测试工作常用Linux shell命令-去除空白行及两种空白行去除时的注意事项(基于sed)
日常工作中,有些文档里的内容可能并不都是我们想要的,比如说一些注释什么的。如下进入/etc/passwd,发现前10行是有注释的,也保不准其他还有什么地方有注释,那么现在需求就是:去除内容中的注释行,并且产生的空白行也不要。 1 ## 2 # User Database 3 # 4 # Note that this file is consulte...原创 2019-09-06 13:21:33 · 1087 阅读 · 0 评论 -
接口自动化-接口请求数据准备-如何生成随机姓名、年龄、号码、email等
在做接口自动化测试的时候,经常需要一些随机的测试数据,这里提供一个个人使用的生成随机值的工具类,主要内容都已在代码中注释:package com.gvbrain.appApi.Utils;import java.util.Random;public class RandomValueUtil { private static String ALPHABET = "ABCDE...原创 2019-08-12 17:07:32 · 3755 阅读 · 0 评论 -
接口自动化-用rest-assured如何测试上传文件接口(multipart/form-data类型)
在用rest-assured做上传文件接口的自动化时,要注意两个地方,一个是content-type要使用multipart/form-data类型一个是要使用multiPart的api在rest-assured的官方GitHub上我们可以看到有关multiPart方法各种形式用法的介绍:这里以第一种multipart(File flie)的形式举例,贴出部分主要代码if (r...原创 2019-08-21 09:45:06 · 3288 阅读 · 0 评论 -
接口自动化-如何对多参数接口进行任意参数个数传参-基于Java建造者设计模式
接口我假设有这样一个接口:方法:post功能:根据不同的条件参数,如姓名、年龄、性别、受教育程度等来查询筛选患者用户Body:{ "educationTime": "string", "jobType": "string", "marrige": "string", "medicalHistory": 0, "medicationName": "string",...原创 2019-08-10 22:16:22 · 3573 阅读 · 0 评论 -
InvalidSelectorException: Locator Strategy 'css selector' is not supported for this session
Appium运行报错InvalidSelectorException: Locator Strategy ‘css selector’ is not supported for this session一般都是Appium的版本不匹配造成,更新为最新版本即可,我将java-client更新为最新版本后问题解决 <dependency> <groupI...原创 2019-06-27 16:56:11 · 3346 阅读 · 0 评论 -
appium测试-如何定位WebView进行测试
appium测试中,APP中有时候有H5页面,如何对其中的WebView进行测试;这里以模拟器中APIDemo中的例子做演示,在APIDemo->Views->WebView中选择点击WebView元素第一种方法:如果有AccessibilityId就可以直接根据其来获取driver.findElementByAccessibilityId("Hello World! - 1")....原创 2019-07-02 18:24:29 · 2202 阅读 · 0 评论 -
appium测试-如何获取Toast弹框消息(Android )
在APP中,一些点击或下拉等操作会出现弹框消息,这种消息属于Android系统自带的Toast,在Appium自动化测试中有时候需要获取Toast消息来进行断言这里以模拟器中APIDemo中的例子做演示,在APIDemo->Views->Popup Menu中选择点击Search,出现Toast弹框消息:代码演示:与安卓开发工程师沟通得知,Toast在弹出的时候会在当前界面出现...原创 2019-07-02 16:52:44 · 6988 阅读 · 6 评论 -
appium测试-如何滑屏定位指定元素(Android)以及定位失败解决方法
这里利用模拟器中的API Demo做演示,进入APIDemo中Views,然后滑屏寻找“Popup Menu”进行点击操作可以利用Android的UIAutomator进行滑屏操作,这时候需要使用AndroidDriver,另外定位元素可以使用UiScrollable:driver.findElementByXPath("//*[@text='Views']").click();((A...原创 2019-07-02 16:22:50 · 5135 阅读 · 4 评论 -
appium启动报错An unknown server-side error occurred while processing the command.
使用appium-desktop,设置好参数,“start session”时报错:ErrorAn unknown server-side error occurred while processing the command. Original error: Could not find 'adb.exe' in ["C:\\Users\\QinZhen\\AppData\\Local\...原创 2019-06-24 00:10:40 · 52661 阅读 · 30 评论