- 博客(59)
- 收藏
- 关注
原创 拓展--mac系统ios自动化--环境配置
下载python3https://www.python.org/downloads/mac-osx/修改环境变量修改用户根目录下的~/.bash_profile文件,在终端输入:vi ~/.bash_profile新增一行alias python="/Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9"按:wq保存后,终端输入source ~/.bash_profile这样子还不行,重启终..
2022-01-05 15:37:48
1933
2
原创 提升之路--从0开始学app自动化(6)--po模式&框架应用
PO模式(组件化)跟web的Po模式有所不同的是,app自动化不需要以界面面为单位,而是把页面内所有相关操作进行封装,如果一个界面内还有一些简单的组件,也只需要封装到该界面的po页面中进入用户页面(导航栏)这个操作出现在导航栏,所以可以封装到menupage中,我们也可以把导航栏的各种操作都封装到这里,之后从导航栏操作进入的页面都能继承这个类,以后导航栏的属性改变了只需要维护导航栏用户页面通过导航栏操作进入用户界面后,用户界面有各种相关的操作,可以封装在userpage中
2022-01-01 13:29:09
3178
原创 提升之路--从0开始学app自动化(5)--混合页面&框架搭建
混合应用Hybrid App原生应用是指系统原生的组件开发的app,需要特定语言,比如android的java,ios的swiftH5技术可以使用web技术开发app,原生和h5的组合就是混合应用混合应用不是在app上直接写html页面,而是把H5页面放在一个webview控件当中webview是原生应用的一种控件,还有其他ImageView等,webview能做到和web页面交互的功能原生页面往下拉的时候会有刷新的动画混合页面如何判断当前页面是网页1,点进.
2022-01-01 12:57:46
1430
原创 提升之路--从0开始学app自动化(4)--app元素操作
app元素属性提示前是p代表属性,m代表方法获取driver属性-获取包名-获取当前app页面的名称-获取源代码在app端获取到的是一个xml页面-获取手机屏幕分辨率(尺寸)获取到的是一个字典-点击操作这是手机全局的点击操作,跟元素点击有所不同传入参数是坐标,是一个列表嵌套元组,可以同时点击多个坐标,duration是按压时长获取元素属性-获取元素文本-获取元素起始x...
2021-12-28 17:43:18
770
原创 提升之路--从0开始学app自动化(3)--app元素定位
安卓应用源码组成安卓app是xml,跟web的html相似,都是以各种标签组成,而xml的标签是可以自定义(安卓或者开发)元素属性-index 索引-text 属于元素属性跟web中的text不一样,是一个属性,不是文本在app中的xpath: //*[@text=””] //*[contains(@text,””)]在web中的xpath://*[text()=””] //*[contains(text(),””))]-resource-id : 每个元素...
2021-12-25 15:22:04
963
原创 提升之路--从0开始学app自动化(2)--appium第一个脚本&adb命令
启动app自动化程序的步骤前提:配置环境的5步操作1,打开模拟器或者连上手机(开发者模式,usb调试模式)2,打开cmd命令行输入adb devices,确保手机或者模拟器已经连接上电脑3,开启appium服务开放4723端口,客户端要访问该端口才能连上服务器,所以要确保端口没被占用手机端里的浏览器,或者在app里面嵌入的网页(H5)需要驱动4,appium客户端(代码)连接服务客户端通过appium连接服务-导入Remote类fro...
2021-12-23 10:26:31
1576
原创 提升之路--从0开始学app自动化(1)--环境搭建
appium原理客户端(代码) ---发送请求(http)----> appium服务 ---转化为java代码&Android SDk(adb,monkey) ----> 手机和app环境依赖-appium服务-Appium-Python-Client-手机,模拟器:开发者模式,usb调试模式-java jdk 1.8+ 64位-Android 环境 adt-bundleappium环境安装服务端1,使用appium desktop(..
2021-12-22 18:30:02
1097
原创 当元素用通常方法操作不了的时候--坑向
日历/时间选择框通常在input标签进行,比如直接在输入框中填入数据,或者修改日期选项等可以用js修改元素的value值但是当日期标签有 readonly属性的时候,表示只读,不能修改元素,如果修改之后,点击其他元素或者其他操作将会清空日期这时候需要添加一步操作,使用el.removeAttribute('readonly'),把只读属性去除然后像普通输入框一样用el.send_keys(words)填入日期(要符合格式)下拉选项可以先找到选择框进行点击,再点击里面的..
2021-12-20 13:48:14
174
原创 提升之路--从0开始学web自动化(11)--关键字驱动&登录cookie保存&重运行&并发用例&selenium原理
selenium原理架构层面pthon调用selenium的方法向驱动发送请求,驱动转换成js代码发送给浏览器,浏览器执行代码,进行操作python(任何编程语言) ---发送http请求--> chromedriver.exe ---js代码--> 浏览器源码层面初始化浏览器Chrome():-通过Popen(驱动路径)方法,自动运行命令行,启动chromedriver.exe本地服务-通过远程连接RemoteConection 初始化很多接口地址和请...
2021-12-15 17:22:56
1083
原创 提升之路--从0开始学web自动化(10)--allure&jenkins主从模式的持续集成
allure的使用安装:-安装包,allure-command-line,运行报告服务下载安装包,然后配置环境变量-allure python包, pip install allure-pytest使用allure获得测试报告-在一个用例上面做一个标记-运行标记的用例main函数里面有多个参数的时候,需要分开传入,如,'-m','标记用例','生成报告路径'-运行全部用例用例筛选参照--进阶之路--从0开始学接口测试(11)--pyte...
2021-12-14 14:37:22
1217
原创 提升之路--从0开始学web自动化(9)--元素定位表达式隔离&复杂用例设计
元素定位表达式隔离web/ui自动化测试的特征-效率慢-不稳定:-元素定位不稳定-前端界面经常发生变化,造成元素定位表达式变化当前端页面的元素发生变化,在po页面对象里面多次使用该元素的时候,修改起来不方便,有可能遗漏元素定位表达式隔离的好处:-前端界面发生变化之后,测试人员可以比较方便对相应的元素进行修改-进一步增加分层设计方式1:...
2021-12-11 10:47:53
1208
原创 提升之路--从0开始学web自动化(8)--深入分层&数据驱动&断言
po封装的原则遵循原则的话会达到更好的效果-页面封装里不应该包含断言或者测试操作,不然就做不到页面操作和测试操作分离-唯一可以操作页面中的测试是判断一个元素是否能找到-不需要封装所有页面操作,用到什么就封装什么-页面封装也可以使用组建方式.比如导航栏,侧边栏等在多个页面重复出现的,也可以封装成一个组件类,页面使用的时候只需要继承这个组件的类-当一个操作引发不同的效果,应该使用多个自动化测试用例函数,比如login_failed,login_success如登录页面操作:当
2021-12-09 14:46:27
666
原创 数据库常用命令
新增数据insert into 表名 (字段1,字段2) values('值1','值2')更新/修改数据update 表名 set 字段名1='值1',字段名2='值2' where 字段条件多表更新/修改updata 表1 join 表2 on 表1.字段1=表2.字段1set 表1.字段2=值1, 表2.字段3=值2, 表2.字段4=值3where 表1.字段1 字段条件删除delete from 表名 where 字段条件分组+聚合函数se
2021-12-07 17:01:21
1525
原创 linux常用命令
目录操作切换目录 cdcd / 切换到根目录cd /usr 切换到根目录下的usr目录cd ../ 切换到上一级目录 或者 cd ..cd ~ 切换到home目录cd - 切换到上次访问的目录查看目录 lsls 查看当前目录下的所有目录和文件ls -a 查看当前目录下的所有目录和文件(包括隐藏的文件)ls -l 或 ll 列表查看当前目录下的所有目录...
2021-12-07 16:59:29
101
原创 提升之路--从0开始学web自动化(7)--ui自动化框架搭建&PO模式
ui自动化测试在整个测试过程中占据的地位在一个项目的测试中手工测试(60%)/自动化测试(40%),不同公司的定义不同.总体是手工占大部分而自动化测试中,接口自动化占据70%ui自动化测试优先实现正向用例,回归测试时候跑一下流程ui测试的特征-界面修改频繁,-界面需求变动大-运行速度慢(浏览器打开速度慢,页面加载速度慢,页面操作动画)-界面稳定性差-界面排班不方便做自动化(像素点移动)ui自动化测试流程(课堂派)-需求分析主要功能特性.
2021-12-06 17:00:05
1173
原创 提升之路--从0开始学web自动化(6)--使用js对页面进行操作(滚动页面,修改属性)&文件上传
JavaScript是一个前端编程语言负责页面的动作,跳转等动态化效果所有浏览器都内置安装javascript的运行环境基本语法-打印console.log('conlin')-定义变量var name = 'conlin'console.log(name)-使用控制流语句var age = 18if (age > 18) {console.log("成年")} else {console.log("未成年")}与python不同的是
2021-12-02 15:19:54
1000
1
原创 提升之路--从0开始学web自动化(5)--鼠标,键盘对页面元素操作
鼠标1,从selenium.webdriver导入Actionchains类from selenium.webdriver import ActionChains2,从Actionchains类生成对象,参数输入浏览器对象mouse = ActionChains(browser)3,找到鼠标需要使用的元素,进行鼠标操作setting = browser.find_element(By.XPATH, '//*[@id="s-usersetting-top"]')Actio
2021-11-30 15:08:51
1205
原创 提升之路--从0开始学web自动化(4)--selenium二次封装和切换
css介绍Webside = html+css+javascriptXpath VS css-css整体上比xpath 表达更简洁-css查找速度比xpath更快-xpath功能比css强,可以从内往外查找-css不支持通过文本查找元素css 选择器css 选择器基本语法id属性: 标签#属性值Xpath: //input[@id = “kw”]Css : input#kwClass属性: 标签.属性名Xpath: //input[@cla
2021-11-27 11:06:43
1407
1
原创 提升之路--从0开始学web自动化(3)--xpath元素定位&等待
为什么要使用xpath当元素没有id name属性,通过class,tagname找到的不是唯一的,而link_text和partial_link_text只能用在a标签使用xpath可以组合多个条件进行筛选,也可以根据元素之间的层级关系进行查找绝对路径和相对路径/绝对路径(不用)//相对路径相对路径xpath表达式//相对路径*表示任意的标签名称 //input 表示标签是input[]条件 //input[@id=”kw”] 表示要在input标签...
2021-11-24 15:56:46
855
原创 提升之路--从0开始学web自动化(2)--元素定位
元素定位的意义元素定位是为了找到并操作网页上的元素(输入框,按钮,连接)自动化(代码)去查找元素的方法:1,网页的页面结构(HTML),兼容性强(selenium)2,页面坐标(appium)页面大小,尺寸固定的情况下才能使用3,图像识别(appium)依赖图像分辨率,消耗cpu资源较多HTML由各种各样的网页标签构成,标签和标签之间互相嵌套,形成复杂的树形结构标签的组成--标签名,属性,text文本每个标签都有自己独特的能力<inpu.
2021-11-23 11:35:32
462
原创 jmeter(3)--性能测试场景设计
压力测试场景设计线程组:是用来对场景进行设计线程数:并发用户数,1代表1个人,10就代表10个人,但是超过10000,电脑消耗资源过高,一台电脑最多线程数不会超过1500Ramp-Up:1代表1秒钟内产生并发用户数,如果线程组为100,Ramp-Up为20,代表20秒内产生100个并发用户数一般来说,线程数在100以内,时间可以设置在1秒,线程数在500以内,时间可以在2秒,如果线程数是1000,时间可以在3秒如果设计时间太短,有可能电脑没有足够资源产生并发用户,也有可.
2021-11-19 15:23:09
1410
原创 提升之路--从0开始学web自动化(1)--selenium基础
Selenium是一款浏览器自动化工具(使用代码控制浏览器,执行浏览器操作)要结合测试工具(unittest/pytest)才能算是web自动化测试安装selenium-安装浏览器(谷歌,火狐)-下载webdriver驱动 ChromeDriver Mirror驱动可以放在python根目录也可以放在项目的根目录,获得浏览器的时候要把驱动路径加上-语言绑定包,pip install seleniumSelenium浏览器操作-得到浏览器#得到..
2021-11-19 15:00:58
521
原创 进阶之路--从0开始学接口测试(12)--接口鉴权,加密
接口使用 timestamp+token+sign 鉴权token的生成是固定的 但是外面所包裹的加密每个公司都不一样,需要获得公司的加密方式,可以询问开发人员,加密后的数据一般放在请求体中1,获得token值,在请求头authorization设置获取前50位2,请求体设置timestamp参数,值为当前的时间戳,类型为long3,请求体设置sign参数,值为token前50位拼接timestamp值,然后通过RSA公钥加密得到的签名字符串通过RSA...
2021-11-19 10:47:05
1581
原创 工具使用(4)--docker
服务器搭建测试环境:Linux 安装python设置环境变量Pip install -r rqm.txtGit/svnJenkins传统的安装环境的方式:1,没有固定的脚本可以执行2,系统发行版(centos,Ubuntu)不一样3,系统版本不一致4,python版本5,没有办法移植Docker:不管想装什么软件,什么环境,只需要下载这个软件的镜像,通过docker运行Docker镜像和容器:文件-->镜像-->容器镜像
2021-11-17 21:33:16
861
原创 jmeter(2)--功能使用
-bin文件夹存放启动文件保存项目脚本文件-docs文件夹java二次开发,接口文档-extras文件夹持续集成脚本-lib文件夹源码包第三方插件(负载测试)放在里面的ext文件夹里junit文件夹-单元测试脚本不要直接从jmeter里引入库,否则可能会出现问题可以把库放到lib或者第三方库放在lib/ext文件夹里Jmeter功能jmeter不是通过工具栏进行功能操作,而是通过右键测试...
2021-11-15 21:37:07
823
原创 jmeter(1)--性能测试基础
软件性能测试:用一定的技术工具,找出或者验证某些性能指标值的测试,并且得出测试报告模拟多个人使用软件 对服务器发送请求,看服务器在可以接受的时间范围内是否正常响应可接受的时间范围 = 性能指标功能/自动化测试 VS性能测试-功能/性能测试:预期结果和实际结果是否相同,相同则通过,不相同则是Bug-性能测试:在可接受的时间范围内,得到一个结果,结果并不要求准确无误,如果返回结果大部分准确,部分出现错误,则性能指标不能满足要求,不是bug-性能测试的时间会比功能测试,自动化测
2021-11-15 20:35:57
80
原创 进阶之路--从0开始学接口测试(11)--pytest单元测试框架
Pytest对于单元测试框架的核心功能:-收集用例-指定用例函数的定义规则(比如unittest的用例,模块和收集用例的文件夹是以test开头)-自动执行用例-前置和后置的夹具-断言-生成测试报告pytest用例编写规则比较灵活:需要更换单元测试框架用例函数测试用例函数还是要以test_开头1,直接定义函数,不需要测试类#方法1def test_pytest_1(): actual = 1 expected = 2 .
2021-11-15 17:12:10
531
原创 工具使用(3)--mock
mock测试是以可控的方式模拟真实的对象行为.程序员通常创造模拟对象来测试对象本身该具备的行为之所以使用mock测试,是因为真实场景很难实现或者短期实现起来困难,主要场景有-真实对象可能还不存在(接口还没完成开发);-真实对象很难搭建起来(第三方支付联调);-真实对象的行为很难触发(网络错误)-真实的对象是用户界面,或包括用户界面在内客户端mock接口自动化测试客户端mock:如:一个接口还没开发好,就要自己造一个接口的返回值,跟预期结果匹配import unit
2021-11-15 16:31:48
244
原创 工具使用(2)--jenkins
自动化测试的运行方式:1,打开pycharm2,找到项目 run.py并且运行问题:1,代码在远程仓库中(不在自己手里)2,项目不一定在个人电脑上运行自动化,通常是在一个服务器(Linux),不一定有pycharm,pycharm只是本地编写代码的工具3,一般通过命令行运行,运行之前 需要通过pip install -r requiements.txt安装所有第三方库在服务器运行自动化测试代码方式:1,准备好代码,复制到服务器2,安装python,python第三
2021-11-08 18:47:25
619
原创 进阶之路--从0开始学接口测试(10)--业务流接口自动化(投资接口)
业务流测试(各种功能) 对应的是单接口测试业务流本质上还是接口关联,需要多个接口一起测试,并且完成业务流程,即同时完成多个接口的测试,观察业务流程是否成功,也是一次集成测试.方法1:直接把要关联的接口封装到APICase里,然后填入访问接口时所需要的参数,每次执行用例的时候调用一次,从关联接口中获得测试接口所需要的数据,测试用例执行的只是被测接口优点:简单易懂缺点:如果业务流需要多个接口,就要封装多个访问接口的函数,并且多次调用,代码变得繁琐方法2:不需要封装访问关联接口
2021-11-08 17:51:07
559
原创 进阶之路--从0开始学接口测试(9)--正则表达式的使用
业务流测试(各种功能) 对应的是单接口测试-业务流本质上还是接口关联技术1:-动态数据替换用if可以实现 但是如果要替换的数据很多的话,就要写很多的if-正则表达式正则表达式是通用的编程语言,是一种字符串的模糊匹配技术(基于一个规则去匹配字符串当中的内容),匹配的需要是连在一起的子字符串,只要想在字符串中符合规律的子字符串,基本上都可以使用正则表达式正则表达式在python中应用,re模块-基本语法参数:pattern 表达式(字符串类型) string 需...
2021-11-04 14:15:54
413
原创 进阶之路--从0开始学接口测试(8)--接口关联-审核接口
实现接口关联(审核接口)依赖接口:登录接口(管理员账号),创建项目接口(得到项目id),项目接口也需要登录接口(普通用户账号member_id)流程:访问登录接口(获得普通用户id,普通用户token)--> 访问创建项目接口(需要普通用户token,获得项目id)-->访问登录接口(获得管理员id,管理员token)-->访问审核接口(需要管理员token,项目id)操作步骤:-在接口类中添加管理员登录的类方法,并且得到管理员id和token因为需要获得登录2个人的.
2021-11-02 17:56:57
271
原创 工具使用(1)--python+git实现代码管理
git相关命令本地仓库操作-初始化仓库git init对仓库进行初始化,会生成一个隐藏的目的.git,代表当前文件夹是一个git仓库,当前目录是一个工作区,能对文件夹里的文件放入仓库暂存区.历史区-查看当前状态git status能够查看工作区是否有修改的文件,暂存区是否有没提交的文件-提交文件到暂存区git addgit add 文件名(要加后缀)or文件夹名/ git add .(全部提交)/git add *.后缀名(提交所有后缀为*的文件)...
2021-11-02 17:50:05
1444
原创 进阶之路--从0开始学接口测试(7)--数据库操作
手工操作数据库使用软件连接数据库(navicat)提供数据库账号和密码(数据库名称)一个主机(连接)里面可能拥有多个数据库通过python操作数据库建立连接先导入pymysqlimport pymysql连接数据库需要准备的参数:-host:主机名称(url)-port:端口-username:用户名称-password:密码-db_name:数据库名称获取连接对象#建立连接host = "api.lemonban.com"p.
2021-10-28 17:10:53
202
原创 进阶之路--从0开始学接口测试(6)--接口关联&余额校验(充值接口)
访问充值接口通过接口文档,得知访问充值接口需要的参数有用户id,而且需要在请求头输入token,所以必须先访问登录接口1,访问登录接口,获得id,tokenlogin_resp = requests.request(url="http://api.lemonban.com:8766/futureloan/member/login",method="post", headers={"X-Lemonban-Media-Type": "lemonba
2021-10-28 16:51:13
627
原创 进阶之路--从0开始学接口测试(5)-用例参数动态化(注册接口)
注册接口自动化测试已经实现的功能:整个框架已经实现了流程的正常运行.ddt,运行,收集用例,测试报告存在问题:手机号注册问题手机号注册只能注册一次.如果直接写在excel中,第二次运行用例会提示手机号已存在,而且全量预期结果也只能在注册成功之后才能获取id,所以注册之前不能知道id,导致预期结果和实际结果不相符解决方法:1,手机号递增每次增加1,可能会出现手机号运营商不支持,比如18299999999,如果加1之后变成18300000000,但是并没有这个手机号2,清理数
2021-10-26 17:16:20
202
原创 进阶之路-从0开始学接口测试(4)--接口自动化框架搭建
自动化测试流程自动化测试主要执行阶段:冒烟测试(主流程是否能正常运行) 回归测试(修复bug之后,测试功能是否正常,是否会影响其他模块) 持续集成要在进行过1次以上的手工测试,熟悉业务流程和模块功能之后,才进行自动化测试需求分析一个项目接到手之后,我们需要进行需求分析需求文档,功能展示以及交互 接口文档,后端数据是怎么跟前端进行传输-纸质(电子)-open api(网站)-抓包(没有接口文档的时候,需要自己抓包查看请求...
2021-10-23 17:08:40
196
原创 进阶之路--从0开始学接口测试(3) -- requests
通过python访问接口通过requests库可以使用python访问接口requests相当于一个客户端,跟浏览器,postman,jmeter相同导入requests库import requests发送一个get请求,参数需要传入url地址resp = requests.get("http://httpbin.org/get")获取响应体print(response.text) #字符串print(response.content)print(respons..
2021-10-21 17:08:27
406
原创 进阶之路--从0开始学接口测试(2)--cookie,session,token
为什么我们访问曾经登录过的网页的时候,不用再重新输入用户名和密码?是因为第一次登录之后,服务器会像客户端发送cookie,里面记录了我们的用户信息和用户操作Cookie(客户端存储数据):客户端存储的用户相关的数据.是从服务端返回(通过set-cookie响应头),只是实现token和session的手段,是一个请求头字段,可以存放session_id和token的数据,这些数据可以不存储在cookie访问过的页面 都会返回客户端cookiecookie是怎么来的呢,首先要从h...
2021-10-19 17:04:17
214
原创 进阶之路--从0开始学接口测试(1)--接口基础
接口(API)基础什么是接口客户端和服务端之间会发生数据交换客户端:前端, --网页,浏览器,app,手表--能够显示相关页面服务端:后端,--提供客户端需要的数据--网页的内容,头像等,都是数据,从服务端传给客户端服务端通过接口(api),把数据传送到客户端在页面中点击之后,会发送很多请求,这些就是接口,每个接口都有响应的数据,如,请求头,响应头数据里面包含了host名称 请求方法等接口定义规则,可以在接口文档查看-访问地址--接口地址-请求方法--G.
2021-10-16 15:25:33
215
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人