自动化测试概述—Python自动化测试实战(1)

发表于:2019-6-12 10:58

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:无涯    来源:51Testing软件测试网原创

  第 1 章  自动化测试概述
  1.1  自动化测试的价值
  传统的商业模式以业务驱动产品,而现在则以技术驱动产品。特别是在产品迭代速度快,市场不断变化的当下,产品调整,很多时候是基于客户的需求,基于整个产品战略的调整。单纯的手工测试越来越无法适应这个变化的过程。测试人员怎样做到快速响应并且保证产品在上线后质量能够满足市场的要求?怎样通过测试技术的手段来达到测试效率的提升?这些值得我们思考。
  测试工作的意义,主要包括两个方面,一是产品质量的管理,二是测试效率的提升。
  自动化测试技术的应用越来越普遍,这源于企业的要求和互联网技术的发展。
  测试人员,已经不能按过去流水线式的方式进行测试,因为这种测试效率低下的生产方式会逐渐被现代企业所淘汰。企业要在新一轮的竞争中脱颖而出,必须快速推出新的产品,并以更快的方式占领市场。测试人员需要考虑的是,怎样快速适应这种节奏的变化,更快地完成产品的测试,并且使产品质量满足发布要求。在这个过程中,可以说自动化测试技术是测试人员的必然选择,也是技术发展的选择。
  站在企业管理层的角度来说,自动化测试技术能够提升团队的战斗力,降低人力成本。对于持续迭代的产品,随着产品的增加,测试人手开始显得紧张,而增加人手则意味着人力成本大幅上升。那么,通过什么样的方式来解决这个问题呢?自动化测试技术的引入可以很好地解决这个问题。在一个可持续迭代的产品测试体系中,完全可以使用自动化测试技术来实现系统已有的功能测试,即使无法达到百分之百实现,实现百分之五十也是很好的,例如,测试环境合并代码后的回归测试,上线后的冒烟测试①等。而测试人员只需要测试新的功能点和自动化测试未实现的功能点,这样就大大地提高了整个测试的效率。
  1.2  自动化测试的应用
  测试人员需要思考如何提升测试效率,如何让自动化测试技术应用在产品测试中,从而给自己留出更多的时间来思考产品质量策略和新的测试场景。在笔者看来,不管是个人还是团队,既然考虑引进自动化测试的技术,就要把它应用起来。笔者也曾经见过有些团队把产品自动化测试做起来后,由于维护成本大又放弃了。其实,任何技术,都既存在优点也存在缺陷,没有一个测试框架能够解决所有的问题,我们应该把它应用到合适的场景中,让它带给我们想要的效果。
  1.UI 自动化测试的应用
  对于产品迭代速度很快的公司,特别是互联网公司,使用 UI 自动化测试技术并不是一个很理想的选择。这主要是由于互联网产品迭代速度太快,使用 UI 自动化就会陷入不断的维护之中。在产品上线前,用 UI 自动化测试用例进行测试的执行时间很长,导致人员必须等待。所以针对这种类型的产品测试,可以使用 UI 自动化测试只覆盖主要流程的方法,只对产品的核心流程进行 UI 自动化测试,而不覆盖大多数测试点。
  针对迭代速度不是很快、开发周期比较长的产品,使用 UI 自动化测试是一种比较好的选择,它可以把能够覆盖到的场景都覆盖到。在实际的测试过程中,如果在晚上下班的时候自动执行 UI 自动化测试用例,则第二天早上就可以看到自动化测试的执行结果,依据自动化测试报告信息,就能够得到本次迭代产品的质量情况。在下次迭代中依此循环,直到产品(项目)测试结束。
  2.接口自动化测试的应用
  前面提到,当产品迭代速度很快时,使用 UI 自动化测试的技术并不是一个理想的选择。在测试的金字塔模型中,第一层是 UI 层,第二层是 API 层,第三
  ① 冒烟测试:冒烟测试是指完成一个版本的产品开发后,对该版本产品 基本的功能进行测试,保证基本功能正常和流程能走通。也指产品上线之后,对 基本的业务流程进行的验证和测试。
  层是 UNIT 层。当产品迭代速度快时,选择 API 层进行测试是一种比较好的方案。
  另外,基于目前,的开发模式基本都是前后端分离的,做接口测试也是一种比较好的选择。选择接口测试技术还有一个优势是,接口相对来说比较稳定,因此测试的效率比较高。测试时应该把更多的精力和时间放在客户端与服务端之间的交互上,放在前后端分离的模式中。平常我们所测试到的产品(WEBAPP、PAD 等类型)都是客户端产品,这样我们只需要更多地关注客户端与服务端的业务交互和逻辑处理。测试接口时,不能仅仅测试客户端与服务端之间的通信,这样完全不能满足测试的需求。在接口测试时,有两个维度是必须要考虑的。第一是 API 的内部逻辑。这主要包含异常处理的测试。通过测试来验证服务端程序的稳定性、健壮性及容错性,测试点的选择需要考虑的主要是请求参数的字段类型、字段参数中不能为空的字段验证,以及请求参数边界值的验证。第二是接口功能的完整性。通俗地说,是通过接口测试技术来测试产品的业务逻辑和流程。也就是说,首先要保证产品的业务流程是好的,然后才考虑产品的性能测试安全测试。可以使用主流的测试工具(PostMan,JMeter),或者 Python 语言代码来进行产品的接口自动化测试。这样,不管是在测试阶段还是在上线阶段后的冒烟测试,接口测试的执行速度是非常快的,即使几百个的接口测试用例,也只需要几分钟就会执行完毕。
  微服务目前已不是一件很新鲜的事了,很多公司目前都在应用。我认为它逐步会发展成测试的主要趋势。在微服务中,以一组 API 提供业务功能的组件;微服务之间是以 HTTP 等轻量级的通信方式进行调用。那么针对微服务的测试,需要做的就是了解微服务的内部请求方式,然后通过应用层的协议来测试它。当然这中间还涉及契约测试。测试需要保障每个微服务组件的内部功能是正确的,同时还要保障每个微服务组件之间连接的正确性。微服务测试还需要注意测试微服务提供的功能是否能够满足他人的需求,例如,开放平台的微服务能否满足第三方的调用和业务需求。
  第 2 章  Selenium 元素定位实战
  2.1  Selenium 简述
  Selenium 是一个用于 Web 应用程序的自动化测试工具。Selenium 直接运行在浏览器中,它可以模拟用户的行为操作,操作界面友好。Selenium 支持 IE、
  Google Chrome、Firefox、Opera 等主流浏览器,同时 Selenium 也支持主流开发语言,如 Java、Python、C#等。本书主要介绍基于 Python 语言,结合 Selenium 进行产品自动化测试的内容。目前,一些主流浏览器厂商已经采取措施使 Selenium 成为浏览器的一部分,厂商还提供了不同的驱动程序(Driver)来兼容 Selenium 的版本。目的是使浏览器在执行程序时更加稳定。
  2.2  Selenium 结合浏览器实战
  针对不同的浏览器,需要下载不同的驱动程序(Driver)。以 Firefox 浏览器为例,在 https://github.com/mozilla/geckodriver/releases/网站中选择"geckodriver v0.23.0-win64.zip"下载并解压文件后,把 Geckodriver.exe 文件放在 Python 安装程序的目录下,也就是 C:\Python36-32。切记 Firefox 浏览器的版本号一定要大于 48,否则运行代码后会出现驱动程序(Driver)版本与 Firefox 浏览器不兼容的情况。针对 Firefox 浏览器的测试代码如下:
#!/usr/bin/env python
#-*-coding:utf-8-*-
#author:wuya
from selenium import  webdriver
driver=webdriver.Firefox()
driver.get('http://www.baidu.com/') driver.find_element_by_id('lst-ib').send_keys('Selenium')
driver.quit()
  2.3  元素定位实战
  在 UI 自动化测试中, 基础 核心的技能是对页面元素进行定位,定位到相应的元素后才可以对页面的操作进行编码验证。
  2.3.1  调试工具实战
  在 Chrome 浏览器中,点击鼠标右键,在弹出的快捷菜单中选择"检查"选项;在弹出的调试信息窗口中,点击 按钮后①,将鼠标移动到需要定位的目
  标位置,调试信息窗口中就会显示元素的属性。
  以对百度搜索页面的测试为例,在调试信息窗口中点击 按钮后,将鼠标移动到百度搜索输入框上,屏幕上就会显示元素属性。如图 2-3-1 所示。
  
图 2-3-1
  在图 2-3-1 中可以看到,百度搜索输入框的元素属性 ID 为 kw,NAME 为 wd,CLASS_NAME 为 s_ipt。
  ① 注:在不同的浏览器中,这一按钮的形状可能稍有差别
  在浏览器中点击菜单栏的"工具"选项卡,在弹出的"工具"选项中点击
  "Web 开发者"选项中的"Web 控制台"子选项,如图 2-3-2 所示。
图 2-3-2
  鼠标移动到搜索输入框上,屏幕上显示百度搜索输入框的元素属性,如图 2-3-3 所示。
图 2-3-3

版权声明:51Testing软件测试网获得电子工业出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号