张焱
随着人工智能的发展,机器代替人工,已经是未来发展的一种趋势,人工智能需要编程语言来实现,而Python语言在这方面有极大的优势,本篇文章主要介绍Python语言在自动化方面的应用。
【关键词】Python Selenium 自动化测试
1 概述
自动化测试是指软件测试的自动化,软件测试就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。
在做自动化测试之前,首先应该知道什么场景适合做自动化测试,因为并不是所有项目都适合做自动化测试的,项目满足以下条件才可以进行自动化测试:
1.1 需求稳定
为什么要求需求稳定呢?
在一个项目组中如果需求经常变动的话,程序代码也要做相应的改动,一旦需求改动,测试人员所写的测试用例也要做对应的修改,测试用例修改了,测试用例对应的自动化测试脚本也要进行调整,而对自动化脚本的维护修改,需要花费大量的人力物力,自动化的一个主要目的就是节省人力成本,把人解放出来做更多的事情,重复的事情交给自动化的代码实现,但如果代码需要经常维护,人力就不能更好的解放出来,这就和自动化的目的相违背。
当然并不是说一个项目的需求不稳定,就意味着完全不能自动化测试了,对于某些功能文档的模块,我们还可以进行自动化测试,变动频繁的采用黑盒测试的方法,可以成为半自动化测试。这就要求结合具体的项目做具体的分析,选用对应的方法。
1.2 项目周期较长
自动化测试框架的选择、设计、评审,脚本的编写以及调试都需要一定的时间来完成,而这一过程基本可以理解为软件开发的过程,这样的一个周期是很长时间的,如果项目的周期很短,自动化测试的框架还没确定好选取哪个,项目就要上线运行,那么就无法开展自动化测试。
1.3 编写的自动化测试脚本复用度较高
经过一个相对较长的周期完成一个自动化测试脚本的编写,但是这些脚本只在上线前可以做回归测试使用,以后再无用武之地,这样的脚本复用度是很低的,是不符合现代化要求的,既然花那么大的成本开发一套脚本,就要有很强的复用性,这就要求在其他相似的项目中,对自动化测试的脚本稍加改动,也能起到作用,这样的脚本才能真正发挥它的价值,被广泛地接受。
如果有些功能测试需要花费大量的时间才能完成,就要想办法引入自动化测试,尤其是大数据量的测试,这些操作如果用人工测试的话,不仅花费时间精力,而且最后测出的结果还不一定准确,所以,遇到这样的操作就要考虑引入自动化测试。
我们所写的自动化脚本选择python语言,那么多语言可以使用,为什么偏偏选用python语言。
首先Python是一种解释型的、面向对象的、动态数据类型的高級程序设计编程语言。解释型,也就意味着开发过程中没有了编译源码这个环节;面向对象,则意味着Python支持面向对象的风格或代码封装在对象的编程技术。另外,其交互性意味着可以在一个Python提示符后,直接互动写和执行程序。此外python语言还具有以下优点:
学起来简单:Python相对于其他语言来说有较少的关键字,语法结构定义明确简单,这可以让一个零基础的学习者在短时间内掌握该语言的语法并加以综合的运用实践。
看起来容易:该语言写的代码顺序简单清晰,可以顺着自己的思路写代码,让稍微懂一些语法的人都能很容易的读懂代码。
改起来方便:Python的源代码不仅写起来容易,而且还有一大优点就是维护起来很方便。
较强的互动模式:具有很强的互动模式的支持,用户可以从任意终端输入任何结果正确的语言,让互动的测试和调试代码片断。
可扩展性:在使用的过程中可以添加低层次的模块到Python解释器中。这些模块使得程序员可以添加或定制自己的工具,更有效,更方便。
具有广泛的标准库:Python有一个很大的优势就是散装库是非常方便的、跨平台上的linux系统,Windows系统和Macintosh系统兼容。
2 自动化测试的优势
在人工智能越来越重要的今天,自动化的推广显得更加重要,同样在软件测试中推行自动化测试也是势在必行的,自动化测试有以下几方面优势:
2.1大大节省回归测试的效率
在每一次上线前或者复测bug的时候都需要把整个系统的业务流程都跑一遍,这样的测试我们就可以称为回归测试,回归测试的测试用例是固定的,而且量很大,此时再进行人工的回归测试,会花费很多的时间,而且人都在做重复的操作,难免是人力的极大浪费,此时引入自动化测试,可以大大的节省人力成本,提高工作效率。
2.2 可以高效率的执行繁琐的重复性的测试
自动化测试相对于人工测试的一个明显的优点就是执行效率高,测试人员在重复测试某个功能时会逐渐出现厌倦感,从而可能降低测试的效率,影响测试的效果,而自动化测试就不会有这方面的顾虑,代码去执行测试,执行的过程都是按照预设好的步骤代码去执行,最终测试人员只要看代码即可。
2.3 能完成一些人工测试不能完成的测试
在测试数量较大且有随机性特点的数据时, 人工测试就不好完成,此时使用自动化测试,随机取一些没有规律的数据,就可达到模拟真实用户测试数据的目的。
2.4 自动化测试可以重复执行且具有一致性
自动化测试的脚本基本是固定的,在需要测试的时候,执行下一脚本即可执行测试,这样可以反复执行多次,在需要的时候执行脚本即可完成测试。由于自动化测试的脚本是固定的,每次执行的内容和执行的结果的一致性是可以保证完全一样的。
2.5 更好地利用人力资源endprint
将繁琐的测试工作任务自动化,可以提高测试的准确性,也可以将测试技术人员解脱出来将更多精力投入到设计更好的测试用例中。有些测试项目模块不适用于自动测试,将可以执行自动测试的测试执行自动化测试之后,让其余测试人员专注于不能自动化测试的部分,从而提高手工测试的效率。图1展示了在项目中自动化测试的流程。
3 实验过程
3.1 环境配置
实验所需环境Windows7 64位操作系统,python2+seleniun2,所用工具Pycharm45.0.2版本的火狐浏览器,以及火狐浏览器的插件Firebug、FirePathSeleniumBuilder。
3.2 技术分析
定位元素的确定可以通过百度的元素组成来查找,在编辑程序中输入该命令的元素,便可执行该命令,若有多个元素便可用以上方法来查找,利用列表中元素的位置所代表的数字也可以精确地执行相关命令,这也体现了Python语言的准确性,为工作提供了方便。
Selenium 是web应用程序自动化测试工具集,包括IDE、Grid、RC(selenium 1.0)、WebDriver(selenium 2.0)等,是直接运行在浏览器中,模拟用户在操作,具有很强的真实感。目前支持的浏览器包括IE系列、火狐浏览器、谷歌浏览器等。这个工具主要有以下功能:浏览器的兼容性测试--模拟应用程序在IE浏览器 、火狐浏览器、谷歌浏览器的运行情况,得出最终结果,查看哪个浏览器兼容性更好。测试整个系统的功能--创建回归测试检验软件功能是否达到用户需求。支持自动录制,录制工具采用selenium IDE,录制完可以自动生成代码,节省人力成本,并且支持其他不同语言的测试脚本。Selenium 是专门为Web应用程序编写的一个验收回归测试的工具。
使用 python语言写自动化应用到了该语言的类和方法以及对数据类型列表、 元组、 字典、字符串的常用操作,以及常用的if 判断语句for、while循环语句,其中用到了该语言的面向对象的特点(继承、多态、封装 )。
在用Pythonselenium实现自动化测试的工程中最重要部分就是定位页面元素,常用的定位页面元素有8种方法以及这八种方法的复数形式,如果是通过复数定位到的元素则会定位到一组元素,这八种方法包含:通过id查找元素、通过name查找元素、通过classname查找元素、通过tagname查找元素、通过link_text查找元素、通过partial_link_text查找元素、通过xpath查找元素、通过css选择器查找元素,其中除了xpath和css选择器外,其他都是可以在页面中通过F12查看到的,而xpath和css是一種特殊的语法。
XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力这种途径给编辑语言带来了极大的便利,也为把繁琐复杂的程序简单化提供了可能。
例如Python可以通过火狐浏览器自动打开网页,通过编辑程序可以执行相关操作:
import webdriver 导入所需的框架,当然在导入前,需要进行安装。webdriver.Firefox()自动打开火狐浏览器,这里就对火狐浏览器的版本有要求,版本必须低于火狐46,否则不能自动打开浏览器,selenium默认支持火狐浏览器,如果需要在IE浏览器或者谷歌浏览器则需要下载对应的驱动。下面展示了部分代码:
driver.get("https://www.baidu.com/")在火狐浏览器中自动输入百度的网址并打开
driver.find_element_by_id("kw").send_keys(u"2018高考")获取百度搜索框并自动输入2018高考,当然还可以输入你需要搜索的任何内容
find_element_by_id("su").click()定位到百度一下按钮并自动点击该按钮进行搜索
close()然后使用该方法自动关闭浏览器,否则运行次数多的时候,系统会卡掉。
find_element_by_xpath("//*[@id='kw']")此行代码是通过xpath方法获取百度搜索框,其中//表示从任何位置开始匹配,*代表匹配任何的标签,@id='kw'表示找到属性名是id,值是kw的元素。
4 实验结果
通过模拟人工操作,使用代码的形式编写程序实现对浏览器的常用操作,以及对页面元素的操作,可以模拟常见的输入、点击、清除文本,输入回车、空格、删除字符以及浏览的最大化、截图、指定浏览器页面大小、关闭浏览器的操作。
5 结论
通过Python进行自动化测试大大节约了人力,通过Firebug和Fire Path可以得到有关按键的位置以及名称,节省了大量的时间,为各种程序的设计者提供了方便,自动化编辑更是迎来了广阔的发展空间与前景,对于我国科技的进步以及生产力的发展也起到了很大的推动作用。
参考文献
[1]网址http://www.w3.org/1999/xhtml.
[2]虫师.《selenium webdriver python (第二版)[M].北京:电子工业出版社,2013.
作者单位
新泰一中 山东省新泰市 271200endprint