一、自动化测试
1.概念:软件自动化测试就是通过测试工具或者其他手段,按照测试人员的预定计划对软件产品进行自动化测试
2.优点:
- 自动化测试是软件测试的一个重要组成部分,能够完成许多手工测试无法完成或者难以实现的测试工作。
- 正确合理的实施自动化测试,能够快速,全面的对软件进行测试,从而提高软件质量,节省经费,缩短软件的发布周期
- 缩短测试周期,计算机行业更新迭代快速,大量频繁的回归测试消耗时间,自动化测试能够将重复的实行交给计算机去做,加快测试速度
- 避免人为出错,测试人员不可能持续高度集中,并且人类易受外界影响(头疼脑热,精神不振),可能会造成人为错误
- 测试信息存储,自动化测试将测试信息和数据储存在文件中,思路清晰明确,交接方便
- 轻易获取覆盖率,自动化测试能够解放测试人员,使测试人员能够有更多的精力做那些非重复性的工作
- 其他,自动化测试可以实现自动或者定时执行
3.自动化测试的分类:
①整体分类:
- 自动化功能测试
- 自动化性能测试
②自动化功能测试的分类:
- 单元测试:程序员搞定
- 接口测试
- 功能测试
4.性能测试工具:
- 性能测试主要是使用测试工具
- Loadrunner、Jmeter等,对软件进行压力测试、负载测试等等,因为这些无法用手工进行代替,所以必须自动化
- 场景:为了测试一个web站点的服务能力,需要模拟上千上万的请求(比如打开浏览器访问站点),人的速度是远远达不到这样的操作的
二、web自动化
1.web自动化条件和使用范围
①使用自动化的前提条件:
- 手动测试已经完成,后期在不影响进度的前提下逐渐实现自动化
- 项目周期长,重复性的工作都交给机器去实现
- 需求稳定,项目变动不大
- 自动化测试脚本复杂度比较低
- 可重复利用
②使用自动化测试的场景:
- 频繁的回归测试
- 冒烟测试
- 传统行业需求变化不大,应用频繁
- 性能测试
3.web自动化常用的工具
①QTP(收费):QTP是Mercury公司的Quick Test Professional的简称,是一种自动测试工具。
②Selenium(开源):ThroughtWorks一个强大的基于浏览器的开源自动化测试工具,通常用来编写web应用的自动化测试
③RFT(收费):IBM Rational Test Professional的简称,是一款先进的自动化的功能和回归测试工具,使用与测试人员和GUI开发人员,基础是针对Java,.NET的对象计数和基于web应用程序的录制,回放功能
三、元素的定位
1.为什么要学习元素定位?
- 计算机没有智能到人的程度
- 计算机不能像手动测试人员一样通过眼看,手操作鼠标点击,操作键盘输入
- 计算机通过一系列计数手段找到元素(按钮、输入框、模拟键盘等)
2.元素定位的工具或手段有哪些?
- css选择器
- xpath
3.元素定位的工具:firefox35(版本低的兼容性好一些)、firebug插件、firepath插件
四、Xpath
1.介绍:XPath是一门在XML文档中查找信息的语言
2.节点:每个XML/HTML的标签我们都称之为节点
3.表达式:
①查找某个特定的节点或者包含某个指定的值的节点
表达式 | 描述 |
---|---|
/ | 绝对路径,从根节点一层层选取,第一个/相当于document |
// | 相对路径,从指定节点读取,匹配所有符合条件的节点 |
. | 选取当前节点,./是当前绝对路径下,.//是当前相对路径下 |
.. | 选取当前节点的父节点 |
@ | 选取节点中的属性 |
/a/b[1] | 选取a节点下多个重复b节点中的第一个b节点 |
/a/b[last()] | 选取a节点下多个重复b节点中的最后一个b节点 |
/a/b[last()-1] | 选取a节点下多个重复b节点中的倒数第二个b节点 |
/a/b[position()<5] | 按位置范围选取,选取a节点下多个重复b节点中的前四个b节点 |
//a[@content] | 选取a节点下所有带有content属性的节点 |
//a[@content="666"] | 选取a节点下所有带有content属性且属性值为666的节点 |
②查找未知节点
表达式 | 描述 |
---|---|
* | 匹配全部节点 |
@* | 匹配全部带属性的节点 |
node() | 匹配任何类型的节点,用于代替某节点 |
/html/node()/* | 匹配html节点下所有的子节点,node()即为head和body标签 |
//* | 匹配全部节点 |
/html/node()/meta/@* | 匹配html节点下所有子节点中,meta节点的所有属性 |
//a[@*] | 匹配所有带属性的a节点 |
③查找若干路径
表达式 | 描述 |
---|---|
//a | //b | 选取所有的a和b节点 |
/a/b/c | //d | 选取a节点下的b节点的所有c节点,以及所有的d节点 |
④常用方法
表达式 | 描述 |
---|---|
//*[text()="xxx"] | 查找节点中间的文本内容为xxx的节点 |
//*[starts-with(@aaa,"xxx")] | 查找属性aaa的属性值以xxx开头的节点 |
//*[contains(@aaa,"xxx")] | 查找属性aaa的属性值包含有xxx的节点 |
//*[@aaa=v1 and @bbb=v2] | 查找同时满足两个属性值条件的节点 |
五、CSS选择器
1.介绍:css中,选择器是一种模式,用于选择需要添加样式的元素。计算机能够通过css选择器定位到相应元素
2.表达式:
①通过伪类名、id、标签名定位
表达式 | 举例 | 描述 |
---|---|---|
.class | .aaa | 选择class="aaa"的所有元素 |
#id | #bbb | 选择id="bbb"的所有元素 |
* | * | 选择所有元素 |
element | input | 选择所有的<input></input>元素 |
②元素之间的嵌套关系
表达式 | 举例 | 描述 |
---|---|---|
element1,element2 | form,span | 选择所有form标签和span标签 |
element1 element2 | form span | 选择form元素内部所有的span标签 |
element1>element2 | form>span | 选择父元素为form的所有span标签 |
③通过属性查找
表达式 | 举例 | 描述 |
---|---|---|
[attribute] | [href] | 选择带有href属性的所有元素 |
[attribute=value] | [href="xxx"] | 选择href属性为xxx的所有元素 |
[attribute^=value] | a[href^="https"] | 选择href的属性值以https开头的所有a元素 |
[attribute$=value] | a[href$="com"] | 选择href的属性值以com结尾的所有a元素 |
[attribute*=value] | a[href*="baidu"] | 选择href的属性值包含baidu的所有a元素 |
④通过父子关系查找
表达式 | 举例 | 描述 |
---|---|---|
:only-child | p:only-child | 匹配属于某一个父元素的唯一子元素p |
:nth-child(n) | p:nth-child(2) | 匹配某个父元素下第二个子元素p |
:nth-last-child(n) | p:nth-last-child(2) | 匹配某个父元素倒数第二个子元素p |