---Web自动化测试之Webdriver(python)--从零到熟练(系列)

从本章开始,我们将讲述如何实施自动化测试,在第一章的时候,我们也提供了自动化实施的步骤。那些儿步骤是指导方针,可以按着这一步步地去实施,可是有点儿笼统。本章我们将从具体实例入手,按前面的我们提到的步骤来讲解,通过本章的学习,你可以从一个被测试的网站着手,从零开始建立起普通的回归测试用例。

6.1 评审被测试对象功能

现在你的老大给你分配个任务:我们公司的业务已经成熟,网站主要功能也基本上不会变化了,我们想在每次上线后自动回归一下主功能。所以呢,我们想让你对我们的网站建立起自动化测试,用例要求覆盖主要功能。

当你接到这个任务的时候,你应该如何去做呢?不是去想用什么来写自动化,或是马上用你擅长的语言马上就去写测试脚本。而是要先分析一下被测网站的功能,哪些儿是主要的,哪些儿必须自动化,哪些儿不能自动化。

现在我们以众筹网(www.zhongchou.cn)为例 ,分析一下主要功能:

(1)登录注册

(2)浏览项目

(3)搜索项目

(4)查看项目详情

(5)支持项目

(6)个人信息设置

(7)发起项目

(8)查看自己相关的项目

(9)发起的项目管理和订单发货

(10)消息中心

等等 ,这十个主要功能是网站最基本的功能,然后我们分析一下哪些儿能自动化,哪些儿不能?

能自动化的部分:1,2,3,4,6,8,10

不能自动化的部分:5,7,9

为什么不能自动化呢?5,支持项目,涉及到真实的支付,影响项目对账,因为不管是测试环境还是线上环境,都是真实的支付,如果有支付的测试环境,也是可以自动化的。

7,发起项目,发起项目通过审核后,会在线上产生测试数据,影响用户体验。这违反了测试不能对线上产生垃圾数据的原则,所不不建议自动化,但是可以测试发起项目的流程,不对项目进行上线。

9,发起的项目管理和订单发货。发起项目我们就没有自动化,所以这块功能是没有数据的,再者订单发货会短信通知支持者,会影响到用户,不建议自动化。

当你接到任何一个测试任务的时候,需要先这样分析一下被测试对象的功能及是否合适自动化测试。然后查找一下是否存在对应功能的手工测试用例,一般公司都会做测试用例的收集工作的。如果没有,就先编写对应的测试用例,然后再去转化成自动化测试用例。

6.2 评审被测对象编码

评审完了主功能,然后开始评审被测试对象的编码,选择与被测试对象相同或是同一系列的脚本语言来写测试用例。一般网站编码无非是ASP.NET,PHP,JSP等,编写测试用例的脚本语言也可以用php,python,java等,根据实际情况,做出相应的选择。

经查看,我们的众筹网是用php编写的,按原则来说,我们应该用php来编写测试用例。Webdriver也支持php,但是php支持库不多,在用例组织和报告生成等方面也存在着不足,所以目前用php编写自动化测试用例的不多。综合考虑各种因素,我们决定用python来编写自动化测试用例。

6.3 自动化测试框架的选择

目前业界做页面自动化的都是选用selenium1.0 RC或是selenium2.0(webdriver),而它们之间是存在着区别的:

Selenium RC 工作原理:

(1)RC server 在服务端启动 浏览器 并将Core 注入到浏览器中 (为了解决浏览器的同源策略)

(2)我们的测试脚本调用Client API,Client将操作转化成标准的selenese语句发送给RC Server。

(3)Selenium Core 解释selenese 语句,通过js的方式操作浏览器。

Webdriver 工作原理:

(1)WebDriver 启动目标浏览器,并绑定到指定端口。该启动的浏览器实例,做为web driver的remote server。

(2)Client 端通过CommandExcuter 发送HTTPRequest 给remote server 的侦听端口(通信协议: the webriver wire protocol)。

(3)Remote server 需要依赖原生的浏览器组件(如:IEDriver.dll,chromedriver.exe),来转化转化浏览器的native调用。

那么remote server端的这些功能是如何实现的呢?答案是浏览器实现了webdriver的统一接口,这样client就可以通过统一的restful的接口去进行浏览器的自动化操作。目前webdriver支持ie, chrome, firefox, opera等主流浏览器,其主要原因是这些浏览器实现了webdriver约定的各种接口。

优缺点:

(1)RC 需要启动一个 RCserver,就直观感觉上多了一个步骤。

(2)RC 采用js 的方式,稳定性和兼容行方面还是取决与js的代码的质量。有时需要自己去写js代码来扩展相应的功能。由于自己是从RC用起的,对于RC js的方式还是比较接受,感觉比较灵活。

(3)至于弹出对话框和警告框的处理,RC原生是不支持的。不过可以通过第三方软件来解决,比如autoit。我用的就是autoit,使用简单方便,是一个不错的工具。

通过上面的分析,结合现在的时代潮流,我们采用高版本的selenium 2.0来作为我们的自动化测试的框架。

6.4 自动化测试用例运行环境

由于我们采用的是python开发的脚本语言,对运行环境要求不是太高,可是相应的包还是要安装的。在脚本编写期间,我们一般是在自己机器上编写和调试的,运行环境是windows环境。在后期的交付运行,自动执行回归的时候,我们要放到服务器上,服务器是linux环境的。

在Windows环境和linux环境下,python运行环境差别不大,所以不要太担心环境的问题。可是也有需要注意的地方,比如说文件路径的写法,两个环境下还是不同的。这也是我们一再要求用相对路径,最好用函数来获取路径,而不是把路径写死到代码中的原因。

6.5 自动化代码架构的规划

任何一个好的程序,都需要有好的规划。考虑到现在的结构化程序设计,我们的自动化测试代码也需要好好规划一下架构,不能像记流水帐似的按测试用例的步骤罗列下来。

6.5.1 代码架构规划的原因

自动化测试用例的主要工作就是回归测试,由于其任务的特殊性,就决定了自动化测试用例是成体系的,大里的自动化测试用例放在一起,如果不好好规划一下,会给后期的工作带来很大的影响。

代码规划的原因:

(1)增加可读性。根据用途,将代码进行分类存放,方便团队其他成员进行代码管理与合作开发。

(2)便于维护。自动化测试用例不可能是一成不变的,被测试的网站变化了,我们对应的自动化测试用例也要进行相应的维护。如果不进行规划,出现问题后不方便定位,更加会耗费大量的成本去维护。

(3)提高代码利用率。结构化程序设计,要求我们对代码重复利用率要高,同样的代码要写在公用函数或是方便,减少代码量。

6.5.2 如何规划代码架构

目前自动化的用法主要有两种:1,简单录制回放转化成的测试用例,此用例用于反复测试的功能点,一旦功能上线后便不再用。目地是加快回归测试的执行。特点就是对功能进行反复测试,不考虑通用性,健壮性等。2,用于回归测试的系统化的测试用例。此种用例是需要反复执行的,一定要考虑程序的通用性,健壮性以及执行时间等。

针对第一种测试用例,虽然使用时间比较短,通用率也不高,不过有些儿公司还是会收集这样的测试用例的,以便以后同样的或是类似的功能回归测试的时候用。此时可以按业务线对测试用例进行存放,测试用例中包含测试脚本和测试数据。

回归测试自动化测试用例是我们的重点,所以我们要详细规划一下:

(1)为了增加代码的通用性,我们把大部分测试用例需要执行的操作步骤封装成函数,放到公共的类中,并把公共的类也按功能进行分类,统一放到一个文件夹下,如CommonFunction.

(2)将所有的测试用例放到一个文件夹下,测试用例与测试数据分离开,以便网站有变化的时候,我们只需要修改相应该的测试数据即可。测试用例放到一个文件夹下,如:TestCases。

(3)测试数据放到和测试用例同名的Xml文件中,然后通过公用的数据读取方法,对测试数据进行读取,然后在测试用例中调用通用的函数,读取到的数据传递过去。所有数据存放到统一的文件夹下,如:TestData.

(4)测试用例集的存放。由于不同的测试目的,我们会运行不同的测试用例。如果测试目的A,我们将运行测试用例1,2,3;测试目的B ,我们运行测试用例1,3,4,5。所以我们会有不同的测试用例集文件,将这些儿文件统一存放到一个文件夹下,如:TestSuites.

(5)其他的资源文件,可以创建不同的文件夹来进行存放,如图片文件夹image.

所以,经过规划后,我们的测试用例结构如图6.5.2所示,图中的文件是我先前写的测试用例。下面的章节,我们会具体讲述测试用例:


6.5.2 自动化测试用例代码结构规划

转载于:https://www.cnblogs.com/eagleking0318/p/6520878.html

第六章 自动测试实施(上)相关推荐

  1. 【数据结构】第六章:图(上)

    第六章:图(上) OVERVIEW 第六章:图(上) 一.基本概念 1.图G相关概念: 2.顶点V相关概念: 3.边E相关的概念: 4.子图G相关概念: 二.图的存储结构 1.数组表示法Adjacen ...

  2. 第六章 深度学习(上中)

    其他的深度学习模型 在整本书中,我们聚焦在解决 MNIST 数字分类问题上.这一"下金蛋的"问题让我们深入理解了一些强大的想法:随机梯度下降,BP,卷积网络,正规化等等.但是该问题 ...

  3. 第六章 深度学习(上)

    在上一章,我们学习了深度神经网络通常比浅层神经网络更加难以训练.我们有理由相信,若是可以训练深度网络,则能够获得比浅层网络更加强大的能力,但是现实很残酷.从上一章我们可以看到很多不利的消息,但是这些困 ...

  4. 数字图像处理第六章——彩色图像处理(上)

    数字图像处理第六章 数字图像处理---彩色图像处理 (一) 在 MATLAB 中彩色图像的表示 1.1 RGB图像 1.2 索引图像 1.3 处理 RGB图像和索引 (二)彩色空间之间的转换 2.1 ...

  5. 判断按键值_「正点原子NANO STM32开发板资料连载」第十六章电容触摸按键实验...

    1)实验平台:ALIENTEK NANO STM32F411 V1开发板2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第十六章电容 ...

  6. C++程序设计原理与实践 习题答案 第二十六章 第26章习题答案

    第二十六章:测试 习题答案 本章的BinarySearch Binary_Search.h 26.2 26.2 测试集 26.3 26.4 26.5 26.8 and 26.9 26.8 测试集 26 ...

  7. 【正点原子MP157连载】 第六章 TF-A 使用-摘自【正点原子】【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  8. 【正点原子STM32连载】第五十三章 DSP测试实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  9. 软件自动化测试平台设计,软件自动测试平台的设计与实现

    [摘要] 随着科学技术的飞速发展,社会生活已经迈入了信息化时代,软件也不可避免地成为人们信息化生活中不可或缺的一分子.软件的广泛使用使得人们对软件产品的质量要求越来越高.为了保证软件产品的质量,软件测 ...

最新文章

  1. Vue 2.5中将迎来有关TypeScript的改进!
  2. 二分图最小覆盖的Konig定理及其证明
  3. MyBatisPlus_查询篇_入门试炼_01
  4. strictmath_Java StrictMath hypot()方法与示例
  5. ui kit模板的用途是什么?
  6. 服务器webpack构建性能,[译] 优化 WEBPACK 以更快地构建 REACT
  7. 放在请求头目的_浅谈http的几种请求方法
  8. d-s证据理论 matlab 完整代码
  9. supervisor命令行
  10. 史玉柱:从巨人到大闲人
  11. neutron-server.service启动失败显示代理报错http://controller:9696/v2.0/agents.json
  12. 汇正财经骗局?科创50大涨
  13. oracle数据块的大小设置,Oracle数据块的大小
  14. 桌面窗口管理器占用GPU高的解决办法
  15. 钉钉开放文档——JSAPI鉴权失败
  16. 0x7c97cdf2指令引用的0x00000014内存。该内存不能为”written
  17. HTTP的详细请求过程
  18. VPP调试trace显示
  19. 【如何快速的开发一个简单的iOS直播app】(代码篇)
  20. 计算机农业sci,IEEE旗下JCR1区智慧农业类SCIEI期刊

热门文章

  1. acer软件保护卡怎么解除_人社局回应!从单位辞职了社保怎么处理
  2. 哪些系统使用了linux内核,Linux操作系统有哪些
  3. android百度地图根据点路线规划,Android 百度地图路径规划一直都是搜索不到结果...
  4. gperftools安装使用_记一次使用gperftools优化线上程序
  5. oracle 断电 瞬间 同步,Oracle 11g 测试ogg中断之后,重新同步操作
  6. java 反射获取属性名和值_面试官这样问我Java反射原理,我刚好都会
  7. c语言自动存储,C语言存储分类
  8. 工业机器人 答案 韩建海_探秘沈阳高科技机器人产业,玩转辽宁科技馆体验感爆棚...
  9. oracle cost小 比较慢,Oracle数据库中有关CBO优化的三个问题
  10. rbac模型的特点和优势_权限体系设计:融合了组织和岗位的权限模型长啥样?...