zoukankan      html  css  js  c++  java
  • Web自动化学习(5)

    一、请描述一下自动化测试流程?

    自动化测试流程一般可以分为以下七步:

    • 编写自动化测试计划;

    • 设计自动化测试用例;

    • 编写自动化测试框架和脚本;

    • 调试并维护脚本;

    • 无人值守测试;

    • 后期脚本维护(添加用例、开发更新版本)。

    二、自动化测试有误报过bug吗?产生误报怎么办?

    有误报过,有时候自动化测试报告中显示发现了bug,实际去通过手工测试去确认又不存在该bug。

    误报原因一般是:

    • 元素定位不稳定,需要尽量提高脚本的稳定性;

    • 开发更新了页面但是测试没有及时更新维护。

    三、什么是PO模式?

    全称:page object model  简称:POM/PO,PO模式最核心的思想是分层,实现松耦合,实现脚本重复使用及脚本易维护性。

    PO模式主要分层:

    1.基础层BasePage:封装一些最基础的selenium的原生的api方法,元素定位,框架跳转等。

    2.PO层:元素定位、获得元素对象,页面动作

    3.测试用例层:业务逻辑,数据驱动。

    三者的关系:PO层继承基础层,测试用例层调用PO层。

    po模式和非po模式区别?

    图片

     

    非PO模式 PO模式
    面向过程的线性脚本 POM把页面元素定位和业务操作流程分开,实现松耦合。
    复用性差 UI元素的改变不需要修改业务逻辑代码。只需要找到对应的PO页修改定位即可,数据代码分离。
    维护性差 PO能使我们的测试代码提高代码的可读性,高复用性,可维护性。

     

    四、怎么对含有验证码的功能进行自动化测试?

    对有验证码的功能模块进行自动化测试,可以通过以下方式:

    • 让开发去掉验证码。未上线前,让开发去掉验证码验证,方便做自动化测试;

    • 设置一个万能的验证码。未上线前,让开发生成固定的验证码,方便做自动化测试。

    • 通过 cookie 绕过登录。

    • 自动识别技术识别验证码。第一种是:OCR 自动识别技术,第二种是:通过第三方打码平台的接口来识别。

    五、如何提高脚本的稳定性?

    提高脚本的稳定性,可以通过以下方式:

    • 不要右键复制 xpath(绝对路径很不稳定),自己写相对路径;

    • 定位没问题,第二个影响因素那就是等待了,sleep 等待尽量少用(影响执行时间);

    • 定位元素方法重新封装,结合 WebDriverWait 和 expected_conditions 判断元素方法,自己封装一套定位元素方法; 

    六、如果一个元素无法定位,你一般会考虑哪些方面的原因?

    一个元素无法定位,可能的原因有:

    • 页面加载元素过慢,加等待时间;

    • 页面有frame框架页,需要先跳转入frame框架再定位;

    • 可能该元素是动态元素,定位方式要优化,可以使用部分元素定位或通过父节点或兄弟节点定位;

    • 可能识别了元素,但是不能操作,比如元素不可用,不可写等。需要使用js先把前置的操作完成。 

    七、你的自动化用例的执行策略是什么?

     自动化用例的执行策略的含义:

    • 自动化测试用例是用来监控的。集成到Jenkins,创建定时任务定时执行;

    • 有些用例在产品上线前必须回归。Jenkins上将任务绑定到开发的build任务上,触发执行;

    • 有些用例不需要经常执行。Jenkins创建一个任务,需要执行的时候人工构建即可。

    八、编写自动化用例的原则?

    编写自动化用例的原则包括以下几个方面:

    • 一个用例是一个完整的场景。

    • 一个用例只验证一个功能点。

    • 用例与用例之间尽量避免产生依赖。

    • 一条用例完成测试之后需要对测试场景进行还原,以免影响其它用例的执行。

    • 脚本编写好了之后,需要反复执行,不断调试,直到运行正常为止。脚本的编写和命名要符合管理规范,以便统一管理和维护。

    九、selenium工作原理?

    Selenium的工作原理可以概括为以下5个方面:

    • selenium client(Python等语言编写的自动化测试脚本)初始化一个service服务,通过webdriver启动浏览器驱动程序chromedriver.exe;

    • 通过RemoteWebDriver向浏览器驱动程序发送HTTP请求,浏览器驱动程序解析请求,打开浏览器,并获得sessionid,如果再对浏览器操作需携带此sessionid;

    • 打开浏览器后,所有的selenium的操作(访问地址,查找元素)均通过RemoteConnection链接到remote server,然后使用execute方法调用request方法通过urlib3向remote server请求;

    • 浏览器通过请求的内容执行对应动作;

    • 浏览器再把执行的动作结果通过浏览器驱动程序返回给测试脚本。

    十、你的自动化框架结构是怎么样的?

    搭建的自动化测试框架采用分层设计模型框架,主要分为以下几个模块:

    • common:一些基础的底层方法类,例如:测试报告类、数据配置读取类、日志类、封装webdriver类、数据库连接类、发送邮件类、公共方法类,只要是我们想要实现的一些功能,可以把基础方法的实现放在common文件夹。

    • config:配置文件放在这里,比如:账号密码、数据库连接地址等。

    • log:运行用例后,日志的存储文件夹。

    • report:运行用例后,测试报告的存储文件夹。

    • page:在POM设计模式下,关于具体UI页面操作的方法。

    • test_case:具体存放编写的测试用例。

    • run_all:用来批量运行测试用例。

     

  • 相关阅读:
    1105 Spiral Matrix (25分)(蛇形填数)
    1104 Sum of Number Segments (20分)(long double)
    1026 Table Tennis (30分)(模拟)
    1091 Acute Stroke (30分)(bfs,连通块个数统计)
    1095 Cars on Campus (30分)(排序)
    1098 Insertion or Heap Sort (25分)(堆排序和插入排序)
    堆以及堆排序详解
    1089 Insert or Merge (25分)
    1088 Rational Arithmetic (20分)(模拟)
    1086 Tree Traversals Again (25分)(树的重构与遍历)
  • 原文地址:https://www.cnblogs.com/chenyablog/p/15201305.html
Copyright © 2011-2022 走看看