Day01 软件测试基础总结
Day02 测试用例知识点总结(上)
Day03 测试用例知识点总结(下)
Day04 禅道-从安装到卸载
Day05 MySql的基础使用
Day06 MySql知识点总结
Day07 MySql知识点再总结与多表查询
Day08 redis的基础知识
Day08 VMware的安装、Linux系统安装和Linux基础命令
Day09 Linux常用命令总结
Day10 Linux环境部署和项目构建
Day11 shell脚本基础知识
Day12 接口和协议
Day13 Postman的使用
Day13 Windows环境下的JDK安装与Tomcat的启动
Day14 jenkins部署
Day15 jenkins的简单使用
Day16 charles的基本使用
Day17 考试
Day18 考试
Day19 Fiddler的简单使用
Day20 Python基础
Day21 python 语句基础
Day22 Python数据类型(上)
Day23 Python数据类型(下)
Day24 Python函数
Day25 Python的文件操作和异常处理
Day26 Python面向对象
Day27 Python的部分算法
Day28 单元测试 unittest
Day29 单元测试 pytest
Day30 接口测试requests
Day31 Web端自动化基础
目录
前言
软件自动化测试就是通过测试工具或者其他手段,按照测试人员的预定计划对软件产品进行自动化测试,他是软件测试的一个重要组成部分,能够完成许多手工测试无法完成或者难以实现的测试工作,正确合理的实施自动化测试,能够快速,全面的对软件进行测试,从而提高软件质量,节省经费,缩短软件的发布周期。
1)缩短测试周期
计算机行业更新迭代快速,大量频繁的回归测试消耗时间,自动化测试能够将重复的实行交给计算机去做,加快测试速度。
2)避免人为出错
测试人员不可能持续高度集中,并且人类易受外界影响(头疼脑热,精神不振),可能会造成人为错误
3)测试信息存储
自动化测试将测试信息和数据储存在文件中,思路清晰明确,交接方便
4)轻易获取覆盖率
自动化测试能够解放测试人员,使测试人员能够有更多的精力做那些非重复性的工作。
5)其他自动化测试可以是实现自动或者定时执行
整体分类:
1.自动化功能测试
分类:
1.单元测试(一般由开发人员做单元测试)
2.功能测试
3.接口测试(只在大中型项目或长期项目中采用自动化测试)
2.自动化性能测试
工具:
Loadrunner、Jmeter等,对软件进行压力测试、负载测试等等,因为这些无法用手工进行代替,所以必须自动化。
为了测试一个web站点的服务能力,需要模拟上千上万的请求(比如打开浏览器访问站点),人的速度是远远达不到这样的操作的。
前提条件:
1)手动测试已经完成,后期再不影响进度的前提下逐渐实现自动化
2)项目周期长,重复性的工作都交给机器去实现
3)需求稳定,项目变动不大
4)自动化测试脚本复杂度比较低
5)可重复利用
使用场景:
1)频繁的回归测试
2)冒烟测试
3)传统行业需求变化不大,应用频繁
4)性能测试
QTP(收费)、Selenium(开源)、RFT(收费)
1)css选择器
2)xpath
1)firefox35
2)firebug插件
3)firepath插件
XPath即为XML路径语言,它是一种用来(标准通用标记语言的子集)在 HTML\XML 文档中查找信息的语言。
节点的概念:每个XML/HTML的标签我们都称之为节点
/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input
XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。
获取XPath由许多好用的方法
表达式 | 描述 |
---|---|
nodename | 读取此节点的所有子节点 |
/ | 从根节点选取 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置 |
. | 选取当前节点 |
.. | 选取当前节点的父节点 |
@ | 选取属性 |
查找某个特定的节点或者包含某个指定的值的节点
路径表达式 | 结果 |
---|---|
/bookstore/book[1] | 选取属于bookstore子元素的第一个book元素 |
/bookstore/book[last()] | 选取属于bookstore子元素的最后一个book元素 |
/bookstore/book[last()-1] | 选取属于bookstore子元素的倒数第二个book元素 |
/bookstore/book[position()<3] | 选取最前面两个属于bookstore子元素的book元素 |
//title[@lang] | 选取所有拥有名为lang的属性的title元素 |
//title[@lang=’eng‘] | 选取所有title元素,且这些元素拥有值为eng的lang属性 |
选择未知节点
通配符 | 描述 |
---|---|
* | 匹配任何元素节点 |
@* | 匹配任何属性节点 |
node() | 匹配任何类型的节点 |
路径表达式 | 结果 |
---|---|
/bookstore/* | 选取bookstore元素的所有子元素 |
//* | 选取文档中的所有元素 |
html/node()/meta/@* | 选择html下面任意节点的meta节点的所有属性 |
//title[@*] | 选取所有带有属性的title元素 |
选取若干路径
路径表达式 | 结果 |
---|---|
//book/title | //book/price | 选取book元素的所有title和price元素 |
//title | //price | 选取文档中的所有title和price元素 |
//bookstore/title | //price | 选取属于bookstore元素的book元素的所有title元素,以及文档中所有的price元素 |
补充内容:
表达式 | 描述 |
---|---|
//*[test()='xxx'] | 查找文本内容是xxx的元素 |
//*[starts-with(@attribute,'xxx')] | 查找属性以xxx开头是元素 |
//*[contains(@attribute,'xxx')] | 查找属性中含有xxx的元素 |
//*[@attribute1=value1 and@attribute2=value2] | 查找同时有两个属性值的元素 |
CSS 中,选择器是一种模式,用于选择需要添加样式的元素。计算机能够通过css选择器定位到相应元素,我们在编写自动化测试脚本的时候很多时候是在不断地找到css选择器。
通过伪类名、id、标签名定位
选择器 | 实例 | 描述 |
---|---|---|
.class | .Intron | 选择class=‘Intron’的所有元素 |
#id | #firstname | 选择id='firstname'的所有元素 |
* | * | 选择所有元素 |
element | p | 选择所有 元素 |
通过元素之间嵌套关系
表达式 | 实例 | 描述 |
---|---|---|
element,element | div,p | 选择所有 元素和所有 元素 |
element element | div p | 选择 内部的所有 元素 |
element>element | div>p | 选择父元素为 元素的所有 元素 |
通过属性
表达式 | 实例 | 描述 |
---|---|---|
[attribute] | [target] | 选择带有target属性所有元素 |
[attribute=value] | [target=_blank] | 选择target=‘_blank’的所有元素 |
[attribute^=value] | a[src^='https'] | 选择属性值以'https'开头的每个元素 |
[attribute$=value] | a[src$='.pdf'] | 选择src属性以'.pdf'结尾的所有元素 |
[attribute*=value] | a[src*='abc'] | 选择src属性中包含'abc'字符串的每个元素 |
通过父子关系
表达式 | 实例 | 描述 |
---|---|---|
:only-child | p:only-child | 选择属于其父元素的每个 元素 |
:nth-child(n) | p:nth-child(2) | 选择属于其父元素的第二个子元素的每个 元素 |
:nth-last-child(n) | p:nth-last-child(2) | 同上,从最后一个子元素开始计数 |
本章是ui自动化的基础