自动化测试

自动化测试

为什么开展自动化测试?开展自动化的意义?

1、基于时间效率而言,机器较于人而言,工作效率高。 人 5 x8 40 机器 7x24 将近四倍 人会有疲惫性,机器不会有疲惫性。
2、节省公司成本
3、提高产品质量
4、提高用户体验度
为更好的服务产品和用户。

进入项目组,如何独立开展自动化?

前提:项目是否适合开展自动化
1、项目人员分工
2、项目周期
3、是否过分依赖于第三方接口
进入项目组,如何独立开展测试工作?
1、熟悉业务
2、提取测试项,基于功能点提取测试点
3、具体功能,具体分析
(1) 分析哪些测试点可以开展自动化,哪些开展不了
(2) 分析自动化的开展批次
原有
Demon 小样 一批次 通用(成绩)
全功能自动 二批次(核心+异常)
新需求
冒烟测试 (正常) 前端开发完成即提交成功
全功能(异常) 下一轮提测前开发完成
(3)哪些功能前期适合使用自动化进行回归而不适宜自动化回归
4、选择自动化测试框架
5、选择开发语言并安装并配置开发集成环境
6、部署自动化执行环境
7、开发自动化测试脚本
8、执行自动化测试脚本
9、维护完善整个自动化的框架并维护自动化脚本
App端 appium
自动化测试工具对比

自动化测试框架对比

搭建Android自动化执行环境----------Appium (python)
APPium自动化------》代码脚本 pc端 借助中间件识别前端和后端 Android----------》M站(mobile)
appium工作原理
Appium是免费开源的自动化测试框架,可以测试原生及混合型应用程序,在android端,appium是基于webdriver协议,利用中间件Bootstrap.jar进行请求处理,最后调用UiAutomator命令实现app的自动化测试,获取测试结果进行返回。
appium在android端的工作流

1.搭建开发语言运行环境(PC)
2.实现PC端和M站的数据交互
2.1借助adb(Android远程调试桥)
2.2用adb存于Android SDk中
2.3下载Android SDK(注:运行环境 Java开发)
2.4下载JRE 或jdk
JRE java运行环境 JDK java开发环境
2.5配置环境变量
bin 二进制文件 lib 资源库
3. 进行脚本解析-----》借助APPium
3.1要有APPium运行环境
3.2下载node.js安装配置验证
3.3下载APPium 安装配置
4. 进行控件对象识别--------》借助selenium(web)
4.1下载安装selenium
4.2下载APPium客户端库(appium-python-client0.28)
4.3安装客户端库 意义:远程链接selenium库,相同协议–基于webdirver Remote
5. 综合环境(相关依赖环境)
APPium-doctor
node------------- npm install -g appium-doctor

自动化执行环境搭建 python+Appium —Android

  1. 官网下载脚本开发语言—python
  2. 安装python
  3. 配置环境变量
  4. 终端进行python环境验证 python —V
  5. 官网下载JDK(java环境下才能运行adb)
  6. 配置Java环境变量
  7. 官网下载对应平台的Android SDK
  8. 进行SDK相关环境变量配置
    ANDROID_HOME
    %ANDROID_HOME%\TOOLS
    %ANDROID_HOME%\PLATFORM-TOOLS
  9. 官网下载node.js
  10. 安装node.js并终端验证(node -v npm -v)
  11. 官网下载appium
  12. 配置appium环境变量
  13. 官网下载selenium
  14. 安装selenium
  15. 下载appium-python-client
  16. 安装appium-python-client (pip install Appium-Python-Client)
  17. 终端安装appium-doctor (npm install -g appium-doctor)
  18. 最终验证

Appium+python进行初始化

一、初始化App
二、构造数据执行
三、判断
四、退出
Appium初始化需要的参数
PlatformName 平台名称
PlatformVersion 平台版本
device 厂商信息
deviceName 设备名称
app 安装包绝对路径
appActivity 活动名称
appPackage 安装包名
noReset 不重置
unicodeKeyboard
resetkeyboard 中文转码
Appium初始化流程
第一种方法
1.搭建自动化执行环境
2. PC和mobile连接
3.启动appium
4.打开inspector
5.进行appium参数设置
6.启动session进行初始化
第二种方法
1.搭建自动化执行环境
2. PC和mobile连接
3.启动appium,pycharm编写脚本
4.运行脚本进行初始化

Web端 selenium

Selenium的安装,Selenium支持的浏览器
Pip install selenium
Chrome IE Firefox
web自动化执行环境搭建时如何匹配驱动?
(1)、查看浏览器版本
(2)、下载对应版本的驱动
(3)、把对应的驱动放在python的script目录中
(4)、使用api验证是否可用
selenium的协议为什么是HTTP?
1、HTTP协议是一个浏览器和Web服务器之间通信的标准协议,
2、可以处理客户端服务器的请求及响应。
3、WebDriver是典型的C/S结构,WebDriver API相当于是客户端,浏览器驱动才是服务器端。
三种等待方式使用场景
time(固定等待)
网络条件不好的情况使用,一般项目中不经长使用。
在开发自动化框架过程中,最忌讳使用python自带模块的time的sleep方式进行等待,虽然可以自定义等待时间,但当网络条件良好时,依旧按照预设定的时间继续等待,导致整个项目的自动化时间无限延长。
implicitly_wait(隐式等待)
隐式等待对整个driver周期都起作用,在最开始设置一次就可以了。
隐性等待设置了一个时间,在一段时间内网页是否加载完成,如果完成了,就进行下一步;在设置的时间内没有加载完成,则会报超时加载。隐式等待对整个driver周期都起作用,在最开始设置一次就可以了。
WebDriverWait(显示等待)
查看一次locator的元素是否可见的时候使用
每经过多少秒就查看一次locator的元素是否可见,如果可见就停止等待,如果不可见就继续等待直到超过规定的时间后,报超时异常
selenium的优势
通过编写模仿用户操作的 Selenium测试脚本,可以从终端用户的角度来测试应用程序。
通过在不同浏览器中运行测试,更容易发现浏览器的不兼容性。
支持多平台-windows、linux、MAC
可以把测试用例分布到不同的测试机器上执行、相当于分发机的功能
支持多语言-java、ruby、python、c#
免费开源,对商业用户也没有任何限制
selenium组件及作用:
Selenium IDE:一个Firefox插件,可以录制用户的基本操作,生成测试用例。
Selenium Remote Control (RC) :支持多种平台(Windows,Linux,Solaris)和多种浏览器(IE,Firefox,Opera,Safari),可以用多种语言(Java,Ruby,Python,Perl,PHP,C#)编写测试用例。
Selenium Grid :允许Selenium-RC 针对规模庞大的测试案例集或者需要在不同环境中运行的可以对测试案例集进行扩展。

selenium工作原理:

1.selenium client(python等语言编写的自动化测试脚本)初始化一个service服务,通过Webdriver启动浏览器驱动程序chromedriver.exe
2.通过RemoteWebDriver向浏览器驱动程序发送HTTP请求,浏览器驱动程序解析请求,打开浏览器,并获得sessionid,如果再次对浏览器操作需携带此id
3.打开浏览器,绑定特定的端口,把启动后的浏览器作为webdriver的remote server
4.打开浏览器后,所有的selenium的操作(访问地址,查找元素等)均通过RemoteConnection链接到remote server,然后使用execute方法调用_request方法通过urlib3向remote server发送请求
5.浏览器通过请求的内容执行响应对应动作
6.浏览器再把执行的动作结果通过浏览器驱动程序返回给测试脚本

iframe切换思路?

1、通过属性找到父类控件
2、通过find_elements_by_tag_name获取iframe标签
3、遍历找到所有iframe通过属性值确定唯一iframe
4、使用switch_to.frame()跳转到对应的iframe
5、执行iframe相关控件的操作
多窗口切换的思路?
第一种:
(1)、打开多个窗口,需要定位到新打开的窗口
使用方法:driver.current_window_handle
(2)、获取打开的多个窗口句柄
windows=driver.window_handles
(3)、切换到当前最新打开的窗口
driver.switch_to(windows[-1])
第二种:
(1)、打开两个窗口,需要定位到新打开的窗口
(2)、获得当前打开的第一个窗口句柄
window_1=driver.current_window_handle
(3)、获得当前打开的所有窗口的句柄
windows=driver.window_handles
(4)、切换到当前最新的窗口
for current_window in windows:
if current_window != window_1:
driver.switch_to.window(current_window)

遇到验证码如何处理

一.跳过登录:
(1)、手动在浏览器登录,记住密码
(2)、使用抓包工具抓取cookie
(3)、把抓取的cookie在进入网页后设置到浏览器
(4)、跳过登录执行其他操作
二.验证码登录:
(1)、获取验证码图片
(2)、使用某些识别软件识别图中验证码的信息
(3)、返回获取的验证码,并填写
三.云打码在线识别

为什么要使用unittest框架来配合自动化测试?

setUp、setUpClass、tearDown、tearDownClass方法含义:
• setUp()
• 初始化函数,在所有的测试方法调用之前调用(自动调用)
• tearDown()
• 清理函数,在所有的测试方法调用之后调用(自动调用)
• setUpClass()
• 类初始化方法,在单个类中的所有测试方法调用之前调用
• tearDownClass()
• 类清理方法,在单个类中的所有测试方法调用之后调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值