• 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:用来批量运行测试用例。

     

  • 相关阅读:
    【转帖】C#索引器
    .NET Framework升级的挑战
    【我翻译的文章】CodeSmith发布代替和扩展LINQ to SQL的工具——PLINQO
    升级到VS2008后的一些疑惑
    【我翻译的文章】你还需要数据层吗?
    Db4Objects发布Db4o 7.0,支持透明激活
    迎接游戏开发新世界——Zune Game和Micro Game
    20071223成都俱乐部活动
    db4o发布7.2,出现.NET 3.5版本,支持LINQ
    微软推出SCE SDK及其示例MSDN Reader
  • 原文地址:https://www.cnblogs.com/chenyablog/p/15201305.html
Copyright © 2020-2023  润新知