目录
一、自动化测试
1、概念
自动化测试指软件测试的自动化,将人为驱动的测试行为转化为机器执行的过程。在预设状态下运行应用程序或系统,预设条件包括正常和异常,最后评估运行结果。
2、自动化测试分类
单元测试:对软件组成单元进行测试,测试工具:JUnit;
接口测试:对软件接口进行测试,测试工具:postman;
UI测试:对软件界面进行测试,测试工具:selenium。
3、自动化测试步骤
分析系统核心体系结构---设计测试用例---实现脚本---执行脚本---测试结果分析---测试脚本维护。
二、selenium
1、selenium概念
selenium是做UI自动化测试的一个工具。
2、selenium的特点
(1)免费、开源;
(2)可以支持许多浏览器---edge、chrome、opera等;
(3)跨平台---windows、linux、mac;
(4)有丰富的API。
3、selenium工作原理
三个角色:自动化脚本代码、驱动、浏览器
具体原理:①自动化脚本代码发送请求给浏览器驱动;②浏览器驱动解析自动化脚本代码,解析完成后发送给浏览器;③浏览器执行浏览器驱动发来的指令。
4、selenium在java下的环境搭建
5、selenium api
①基本操作
(1)打开一个浏览器---百度
(2)css选择器定位元素
常见选择器:①类选择器:.class值;②id选择器:#id值;③父类选择器 子类选择器:父类选择器表达式 子类选择器表达式;④标签选择器:标签名。
采用css选择器对于百度浏览器中的某个组件进行定位:
对于一些组件如果不知道css选择器怎么定位时,可以直接copy,操作步骤:
(3)xpath选择器定位元素
绝对路径:通过/开头,从html开头开始向下走。 例如:/html/body/div/div/div
相对路径:通过//开头
①相对路径+索引:
例如该路径会搜索出来3个span:
为了确定唯一的span,可以使用索引:
②相对路径+属性值:
例如该路径会搜索出18个input:
为了确定唯一的span,可以加入属性值:
③相对路径+通配符:
例如:
在所有相对路径中,路径的所有属性中寻找值为s_ipt的。
④相对路径+文本匹配:
采用xpath选择器对于百度浏览器中的某个组件进行定位:
ps:css和xpath的区别
①css表达式更加简洁;②css效率相对更高一些;③css不支持文本搜索,xpath支持文本搜索;④xpath支持的函数较多,对于一些复杂元素的查找,xpath反而更简洁。
(4)关闭浏览器
(5)模拟按键输入
(6)点击对象
(7)等待
①强制等待
无论浏览器是否加载完成,必须等待到规定时间。
②隐式等待
在设置的时间范围内不断查找元素,直到找到元素或超过规定时间,结束等待。
该方法是全局的,设置了隐式等待后,每一条查找语句都需要去隐式等待。
③显式等待
自定义的等待,用来等待某个条件发生后在继续执行后续代码(如元素存在、元素可点击、元素可见等),该等待不是全局的,可以针对每一个元素设置不同的等待时间和等待条件,如果超时就会抛出异常。
(8)清除输入的文本内容
(9)提交
ps:click() 与 sumbit() 的不同。
两者都是点击对象,但是sumbit()方法操作的对象必须在form标签里,否则无法完成点击,click()方法没有该限制。
(10)获取元素文本信息
对于一个对象,获取文本信息指获取标签中间的内容。
例如:
(11)综合运用
打开百度浏览器,搜索嘻嘻关键字,然后判断结果中是否有嘻嘻,有的话测试通过,没有的话测试不通过,清空搜索框内容,退出浏览器。
②打印信息
打印浏览器的标题和url
③浏览器操作
(1)浏览器最大化
(2)设置浏览器大小
(3)浏览器前进和后退
(4)操作浏览器滚动条
需要通过executeScript()方法执行js脚本。
④键盘操作
(1)回车键
(2)ctrl + A、ctrl + C、ctrl + V
⑤鼠标操作
⑥切换窗口
操作:打开百度浏览器,点击新闻,搜索今日新闻热点。
以上操作发现会报错:
找不到新闻窗口的输入按钮,是因为我们的窗口句柄还处在百度首页,在点击新闻时,窗口页面已经改变了,但是窗口句柄还没有改变,需要将窗口句柄也进行改变。
⑦截图
⑧进阶操作
(1)选择复选框
选中所有复选框:
(2)定位下拉框选项
对于该下拉框,选择$8.34:
根据下标选择(下标从0开始):
根据值选择:
(3)操作弹窗
对于弹窗,先点击弹窗按钮,再选择取消,再点击弹窗按钮,再输入姓名点击确定。
(4)上传文件
上传文件:
三、Junit
1、Junit概念
是java编程语言单元测试的框架,用于编写和可重复运行的自动化测试。
2、Junit环境搭建
引入依赖:
3、常用注解
自定义一个测试类
(1)@Test
该注解是标注一个方法为一个测试用例。
(2)@BeforeAll、@AfterAll
@BeforeAll:在所有测试用例执行前执行,只执行一次;
@AfterAll:在所有测试用例执行后执行,只执行一次。
(3)@BeforeEach、@AfterEach
@BeforeEach:在所有测试用例执行前执行,每个测试用例都会执行一次;
@AfterEach:在所有测试用例执行后执行,每个测试用例都会执行一次。
4、指定测试用例执行顺序
5、参数化
自定义测试类:
(1)单参数
注:不需要加@Test注解
(2)多参数---显式指定参数
(3)多参数---文件中指定参数
(4)多参数---方法中指定参数
6、测试套件
测试套件是为了批量运行测试样例。
(1)通过class运行测试用例
(2)通过包名运行测试用例
7、断言
断言是用来验证代码是否符合开发者的预期结果。
(1)断言相等
(2)断言不相等
(3)断言为空
(4)断言不为空
四、LoadRunner
1、性能测试的概念
性能测试是测试人员利用性能测试工具,模拟各种场景,观察性能指标是否符合预期。
ps:性能测试期间发现的缺陷叫瓶颈,开发人员修改缺陷叫性能优化。
2、性能指标
(1)并发
并发是指多个用户在同一时期内进行相同的操作。由于用户在进行一系列操作时有一定的时间间隔(用户思考时间)或服务器处理请求的先后顺序,于是就产生了绝对并发和相对并发。
绝对并发:同一时刻,并发用户对服务器同时发送请求;
相对并发:一段时间内,并发用户对服务器发送请求。
(2)响应时间
响应时间是指某个请求或操作从发出到接收到反馈所消耗的时间,包括:客户端处理请求时间、服务器处理请求时间、网络传输时间以及数据库服务器处理时间。
(3)事务响应时间---TRT
事务响应时间是指系统处理一个待定事务所需要的时间。
(4)每秒事务通过数---TPS
每秒事务通过数指系统每秒通过的事务数。
(5)点击量/点击率
点击量:用户一段时间内向web服务器发送的http请求数;
点击率:用户每秒向web服务器发送的http请求数。
(6)吞吐量/吞吐率
吞吐量:一段时间内,系统处理的客户请求数;
吞吐率:单位时间内,系统处理的客户请求数。
(7)思考时间
思考时间指用户在进行操作时,每个请求之间的间隔时间。
(8)资源利用率
对不同资源的使用情况,包括cpu、磁盘、内存等。
3、性能测试 vs 功能测试
性能测试是为了评估一个系统在某些条件下的性能和稳定性,主要关注系统在某些压力或负载下的表现,包括响应时间、吞吐量、资源利用率等方面。
功能测试是为了验证软件是否满足需求规格书中的要求,主要关注系统的功能是否符合预期需求。
4、性能测试分类
(1)基准性能测试
让系统在正常情况下运行,观察各项性能指标;
(2)负载性能测试
让系统背负一定压力,观察性能指标是否出现拐点;
(3)压力测试
让系统处于饱和状态,观察系统性能指标;
(4)可靠性测试
验证系统在一段时间内持续运行,观察各项性能指标是否正常。
5、LoadRunner的特点
(1)LoadRunner有非常强大的录制功能;
(2)LoadRunner可以模拟许多的场景;
(3)LoadRunner可以输出详细的测试报告。
6、LoadRunner的三大组件
VUG:录制脚本,写代码;
Controller:设计测试场景,运行测试场景;
Analysis:产生测试报告。
7、Web Tours网站
(1)作用
Web Tours网站是惠普LoadRunner自带的一个测试网站,可以帮助我们更好的了解LoadRunner工具的使用。
(2)启动
(3)访问
(4)修改端口号
(5)用户名和密码
用户名就是文件名jojo,密码就是bean;也可以自己注册添加。
8、LoadRunner脚本录制
(1)脚本录制概念
在进行测试的时候,可能有好多界面需要操作测试,并且有些测试需要重复、多线程、高并发进行测试,我们一般会针对这些操作,进行一个脚本录制,录制好之后,往后的测试就可以在这个基础上进行测试。
(2)创建脚本文件
(3)录制脚本文件