一、自动化测试含义

在自动化测试领域内流传着一个说法:单元测试才是自动化测试的核心,在自动化测试里,无论框架何等完美都不可能脱离单元测试,单元测试将会是自动化测试里最小的单位,把它看作单位一,若干个单位一组成了一个整体,它就成了自动化测试;

诸如Python的单元测试框架Unittest、Pytest;Java的单元测试框架TestNG、Junit都为自动化测试提供并承担了决定性的支持,如何做好单位一,是一个合格的自动化测试工程师所必备的技能。

二、结构说明

  • Util:工具类包:包含操作浏览器的常规事件、键盘及鼠标事件的模拟、文件的解析等,不区分平台皆可使用的公共的工具类
  • PageObject:页面对象包:以每一个页面为单位,封装该页面内所有需要控制的控件,通过页面控件的定位将其封装成对象,然后操作该对象实现自动化操作
  • AppModules:公共应用模块包:在产品的业务流程中,常有中间过程,公共流程,例如登陆、例如导航,将其独立封装,而非在脚本中重复编写
  • PropertyFiles:属性文件包:自动化框架必须实现的一点,页面元素独立,配置信息独立,从而达到更高的可维护性,页面的变动对整体代码影响降到最低
  • TestScripts:测试脚本包:以TestNG作为支撑,单纯的测试脚本
  • TestData:测试数据包:自动化框架必须实现的一点,测试数据独立,根据实际测试内容的需要可以将测试数据存放在文件里,可以是excel、yaml、json等,而Util包里提供解析测试数据文件的工具类实现对的读取写入,在测试数据量少的情况下,则可直接使用TestNG的DataProvider实现测试数据的组织形式
  • Constants:常量包:用于定义一些配置信息如文件路径、SQL语句、连数据库信息等以供代码直接调用

注:每一款产品都有不同的特性,例如针对我们平台来说,它提供大量的服务及应用相关内容,这些内容并非单纯的UI自动化可测的,因此我们在Util里单独为服务验证提供方法用于验证Mysql、MongoDB、Redis、ElasticSearch、PostGreSQL、Neo4j、Kafka、RabbitMQ等服务在UI自动化执行后对服务可用性进行补充验证。

三、编码规则及样例

任何一家公司的自动化框架都应该有一定的规约,当自动化工程师进进出出团队,难免变法风格及相关工作存在一定的差异。

那么自动化团队的编码规约应该从哪写方面进行规范呢?

  • 命名风格规约
  • 常量定义规约
  • 代码格式规约
  • 控制语句规约
  • 注释规约
  • 元素定位规约
  • 页面元素封装规约
  • 自动化测试脚本规约
  • 工具类封装规约
  • 公用应用类封装规约

四、使用自动化测试框架的优势

为什么要使用自动化测试框架,实际上很多已经从事了自动化测试的人或者刚刚迈进门槛的人都会问这个问题。

明明一个文件就能编写用例并执行,为什么要费那么大力气弄框架,为什么要使用它?

我在从事了很多年自动化测试工作后一度非常厌倦,我们常常会吐槽的点大概就是:为什么PO又要对页面进行优化、为什么前端代码如此的不规范、为什么需求又变了等等

一个产品的自动化用例量可能有几千几万甚至更多,一旦页面发生变化就可能导致我们的用例因为定位不到页面元素而执行失败或者断言失败,如此我们修改自动化代码的代价就是不可估量的,代码的可维护性无法保障

同样的道理,测试输入,我们的测试数据也尽可能不要出现在测试代码中,从而方便维护和扩展

在一个产品内的思考:公共方法类的封装,例如一个产品的业务逻辑会出现很多公共的且绕不过去的部分,比如登陆、比如导航,我们不可能每个用例都去编写或复制一遍它,因此自动化框架也将这公共部分单独封装以供调用

再有一个很重要的考虑层面是,我们决定做一个新的产品,也要上自动化测试,那么原有的自动化测试中是否有直接迁移的部分,以便我们新的团队不用从0做起

因此我们还要合理的封装一些通用的不依赖产品本身的API,例如鼠标操作、键盘操作、浏览器控制、文件解析、报告类、日志类等等

五、好的自动化框架什么样

其一 必须做到页面元素与实际测试代码分离

其二 必须做到测试数据与实际测试代码分离

其三 必须将公共方法独立封装不可依赖于产品

其四 必须尽可能封装产品内的公共模块以供调用

自动化测试框架的目标一定是为自动化测试工程师服务的,让他们能够快速构建测试代码,并且框架必须是松耦合的从而使它可维护可扩展

Java&Selenium Web自动化测试框架理念的更多相关文章

  1. Java+Selenium+Testng自动化测试学习(二)

    Java+Selenium+TestNG自动化测试框架整合 1.简化代码 封装一个定位元素的类,类型为ElementLocation package com.test; import org.open ...

  2. 基于Selenium+Python的web自动化测试框架

    一.什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.S ...

  3. web自动化 基于python+Selenium+PHP+Ftp实现的轻量级web自动化测试框架

    基于python+Selenium+PHP+Ftp实现的轻量级web自动化测试框架   by:授客 QQ:1033553122     博客:http://blog.sina.com.cn/ishou ...

  4. Windows环境搭建Web自动化测试框架Watir

    Windows环境搭建Web自动化测试框架Watir 一.前言     Web自动化测试一直是一个比较迫切的问题,对于现在web开发的敏捷开发,却没有相对应的敏捷测试,故开此主题,一边研究,一边将We ...

  5. Web 自动化测试框架 sweetest 介绍

    项目开源: https://github.com/tonglei100/sweetest 文章转载:https://segmentfault.com/a/1190000011612061 介绍 swe ...

  6. Web自动化测试框架改进

    Web自动化测试框架(WebTestFramework)是基于Selenium框架且采用PageObject设计模式进行二次开发形成的框架. 一.适用范围:传统Web功能自动化测试.H5功能自动化测试 ...

  7. Web自动化测试框架-PO模式

    Web自动化测试框架(WebTestFramework)是基于Selenium框架且采用PageObject设计模式进行二次开发形成的框架. 一.适用范围:传统Web功能自动化测试.H5功能自动化测试 ...

  8. selenium3与Python3实战 web自动化测试框架 ☝☝☝

    selenium3与Python3实战 web自动化测试框架 selenium3与Python3实战 web自动化测试框架 学习 教程 一.环境搭建 1.selenium环境搭建 Client: py ...

  9. selenium3与Python3实战 web自动化测试框架✍✍✍

    selenium3与Python3实战 web自动化测试框架  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课 ...

随机推荐

  1. 【AMAD】django-crispy-forms -- 不要再重复编写Django Form了!

    动机 简介 个人评分 动机 这个APP提供了一个template tag和一个template filter,让你可以在模版中快速渲染表单. 简介 django-crispy-forms1可以看作是d ...

  2. 【AMAD】django-debug-toolbar -- 一个可配置的panel,展示当前request/response的debug信息

    简介 个人评分 简介 django-debug-toolbar1是一个django开发工具,可以在你开发django页面的时候展示一些当前请求的debug信息:  个人评分 类型 评分 实用性 ⭐️ ...

  3. 字符编码笔记:ASCII,Unicode 和 UTF-8(理解)

    1.ASCII 码 美国制定的字符编码规则,对英语字符与二进制位之间的关系做了统一规定. 占一个字节,8 位,最多可表示 2^8 = 256 种状态(字符) 实际共有 128 个字符,只占用一个字节的 ...

  4. (模板)poj2947(高斯消元法解同余方程组)

    题目链接:https://vjudge.net/problem/POJ-2947 题意:转换题意后就是已知m个同余方程,求n个变量. 思路: 值得学习的是这个模板里消元用到lcm的那一块.注意题目输出 ...

  5. [Python3 填坑] 004 关于八进制

    目录 1. print( 坑的信息 ) 2. 开始填坑 2.1 问题的由来 2.2 问题的解决 2.2.1 先说结论 2.2.2 八进制的用途 2.2.3 少废话,上例子 1. print( 坑的信息 ...

  6. [转帖]2019-03-26 发布 深入理解 MySQL ——锁、事务与并发控制

    深入理解 MySQL ——锁.事务与并发控制 https://segmentfault.com/a/1190000018658828 太长了 没看完.. 数据库 并发  mysql 639 次阅读   ...

  7. 在Linux环境下的对启动服务进行停止或在运行

    下面我以elasticsearch服务为例进行: 第一种: 1.前台运行: 运行结果 2.ctrl+c停止运行   第二种:后端运行 1.后端运行的命令./elasticsearch -d 这种启动后 ...

  8. 【AtCoder】ARC070

    ARC070 C - Go Home 题目大意:一只袋鼠第i秒可以向左或向右跳i步或者不跳,问从0跳到x的最小时间 就是1,2,3,4...k总和超过x的最小的k,因为如果超过了x的那部分需要减掉的那 ...

  9. Redis 常用命令学习一:通用的基本命令

    1-链接,如果需要的 Redis 部署在远程机器上,可以通过以下命令链接,其中-h后面跟着主机名,-p后面跟端口名 redis-cli -h 233.2.2.4 -p 666 2-PING 命令用来测 ...

  10. fiddler笔记:TimeLine时间轴选项卡

    1.TimeLine选项卡介绍 TimeLine选项卡支持使用"瀑布"模型查看1~250个选中的Session.主要用于帮助性能分析和理解请求之间的关联.选项卡的主体内容是数据流视 ...