深圳软件测试学习:如何学习自动化测试?
如何学习自动化测试呢?
首先要了解什么是自动化测试?自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。
那么做自动化测试有什么要求呢?
实施自动化测试之前需要对软件开发过程进行分析,以观察其是否适合使用自动化测试。通常需要同时满足以下条件:
- 需求变动不频繁
测试脚本的稳定性决定了自动化测试的维护成本。如果软件需求变动过于频繁,测试人员需要根据变动的需求来更新测试用例以及相关的测试脚本,而脚本的维护本身就是一个代码开发的过程,需要修改、调试,必要的时候还要修改自动化测试的框架,如果所花费的成本不低于利用其节省的测试成本,那么自动化测试便是失败的。
项目中的某些模块相对稳定,而某些模块需求变动性很大。我们便可对相对稳定的模块进行自动化测试,而变动较大的仍是用手工测试。 - 项目周期足够长
自动化测试需求的确定、自动化测试框架的设计、测试脚本的编写与调试均需要相当长的时间来完成,这样的过程本身就是一个测试软件的开发过程,需要较长的时间来完成。如果项目的周期比较短,没有足够的时间去支持这样一个过程,那么自动化测试便成为笑谈。 - 自动化测试脚本可重复使用
如果费尽心思开发了一套近乎完美的自动化测试脚本,但是脚本的重复使用率很低,致使其间所耗费的成本大于所创造的经济价值,自动化测试便成为了测试人员的练手之作,而并非是真正可产生效益的测试手段了。
另外,在手工测试无法完成,需要投入大量时间与人力时也需要考虑引入自动化测试。比如性能测试、配置测试、大数据量输入测试等。
如何学习自动化测试?
首先要有一些自动化基础方面的学习的,除了要有一门语言的编程基础,那在3.0的大框架下怎么样去做自动化测试呢?在真正的开展自动化测试前,我们要学习一些基础,如果想对页面有更深入的了解,那么要了解一些前端页面的编写方法,比如HTML、JS、CSS,这三个叫做前端开发三部曲。
当我们用一些开源工具去做一些定位的时候,我们需要依赖于元素的一些属性,这是HTML给我们的,有些难以操作的要做JS的一些自动化处理,有些定位可能比较难,用元素属性找不到要用CSS,还有进行自动化测试要进行一些校验,这些校验涉及到页面样式、页面颜色、图标颜色、背景颜色、文字字体等等,这些还是CSS,所以了解学习一定程度上的前端开发是很重要的,但是在自动化学习基础阶段不需要学习那么深,了解HTML一些标签的意义能够读懂一个页面各种各样的表示含义就可以了,JS也是,只要知道它的原理和使用方法,能够写出一个简单的JS语句和脚本来就可以了,CSS只需要了解不需要熟知,在自动化测试里对于CSS是比较简洁的,只要知道它的一些颜色、属性就可以了。
接下来就是浏览器调试工具,像IE、Chrome用的是F2来调试的,像Firefox既有F2也有FireBug,来帮助我们进行自动化元素的一些定位设置。
其实自动化是分为多个方向的,简单的一个方向就是接口自动化,接口方向有一些常用的工具也可以自己写一些框架来完成,比如PostMan、SoapUI、Jmeter都可以完成接口测试的功能,需要了解一些这些工具的基础使用,那如果想自己写代码来完成接口测试,JAVA里有两个通用框架,一个是HttpClient一个是UrlConnection,如果用Python的话,就用Requests来进行http请求它的一些编写。
再有就是Web测试,再成为框架前我们会有一些基础的API学习,包括浏览器的操作、元素的定位、点击 输入值 清空 选择下拉框等动作、特殊控件的操作、JS的一些处理,可能还有一些包括超时的处理、逻辑判断的处理、包括我们怎么样进行Web自动化里面使用现有的API来进行相应的校验点。
那学习完以上的知识后,又该怎么学习呢,给大家提供一个继续深化的自动化测试框架学习。
市面上常用的是selenium工具,Selenium是一款使用Apache License 2.0协议发布的开源框架。Selenium也是一套完整的Web应用程序测试系统工具。
自动化测试步骤 :
定位元素→操作元素→验证操作结果→记录测试结果
在自动化测试过程中,测试程序通常的操作页面元素步骤找到Web的页面元素,并赋予到一个存储对象中 (WebElement)对存储页面元素的对象进行操作,例如:点击链接,在输入框中输入字符等,验证页面上的元素是否符合预期。
通过这三个步骤, 我们可以完成一个页面元素的操作, 找到页面元素是很重要的一个步骤。 找不到页面元素,后面就没法做了,Web页面技术的现实复杂性, 造成大量的页面元素很难定位。经常有人不知道怎么定位。
定位方法大全
使用WebDriver对象的findElement函数定义一个Web页面元素
使用findElements函数可以定位页面的多个元素
定位的页面元素需要使用WebElement对象来存储,以便后续使用
常用的定位页面元素方法如下,
id 定位
name定位
链接的全部文字定位link text
链接的部分文字定位 partid link text
css 方式定位
xpath 方式定位
Class 名称定位
TagName 标签名称定位
如何定位?
在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回元素句柄来定位元素
findElement() 方法返回一个元素, 如果没有找到,会抛出一个异 NoElementFindException()
findElements()方法返回多个元素, 如果没有找到,会返回空数组, 不会抛出异常
如何选择定位方法?
策略是,选择简单,稳定的定位方法。
当页面元素有 id属性的时候,尽量使用 id来定位。没有的话,再选择其他定位方法
cssSelector 执行速度快,推荐使用。
定位超链接的时候,可以考虑 linkText或 partialLinkText:但是要注意的是,文本经常发生改变,所以不推荐用。
xpath 功能最强悍。当时执行速度慢,因为需要查找整个DOM, 所以尽量少用。实在没有办法的时候,才使用 xpath。
然后知道了如何定位接下来就是挑选测试用例,进行自动化脚本的编写了。