当前位置: 首页 > news >正文

软件测试--自动化测试1

本章目标

1.自动化测试

2.Web自动化测试

3.selenium

1.自动化

1.1自动化概念

        自动的替代人的行为完成操作

        自动化生活中随处可见:自动洒水机,自动闸门..

        软件中的自动化测试也是如此,通过自动化有效的减少人力的消耗的同时提高了测试的质量和效率.

        自动化测试主要是目的就是用来进行回归测试.

1.1.1回归测试

        软件有多个版本需要进行功能的整体回归,为了避免新增功能影响到历史的功能,需要进行功能的回归.

       手工测试新增加的功能,自动化测试历史功能,最后进行回归测试

        手工测试的功能少,能保障产品尽快上线,时间足够,测试的质量也会更高一些

        如果存在历史功能的优化/变更,自动化测试脚本可能会出现报错,测试人员需要维护并解决自动化脚本里的问题

        自动化脚本出现报错有时不一定是代码写的问题,有可能是开发人员编写新的功能影响了历史功能--自动化脚本发现了bug

       常见问题

1.自动化测试能取代人工测试吗?

        自动化测试不一定比人工测试更能保障系统的可靠性,自动化测试是测试人员手工编写的,后续如果有功能的变更,自动化也需要进行不定期的维护和更新.

2.自动化测试可以大幅降低工作量?

       自动化测试并不能直接减少工作量。它需要前期投入大量时间搭建框架、编写脚本,并持续维护更新。只有在长期稳定、重复执行的场景中,自动化测试才能逐步体现效率优势。

        自动化测试可以一定程度上降低工作量

1.2自动化分类

        自动化测试是一个统称

        自动化测试分为UI/界面自动化测试接口自动化测试

        UI自动化测试也称为界面自动化测试,常见的UI自动化测试包含web自动化测试,移动端自动化测试等等.

        

1.3自动化测试金字塔

        

这是理想的自动化测试金字塔

越往上走投入更多的时间和精力,获得的回报越少

越往下走投入更少的时间和精力,获得的回报越大

在企业中,越来越多的人开始重视单元测试,编写单元测试脚本

单元测试是由开发人员来进行的,存在较少的公司会招聘专业的单元测试人员

对于开发人员来说,又是一部分工作,会不太愿意做,所以需要测试人员来推动开发人员实施单元测试

企业中实际上往往是"冰淇淋蛋筒反模式"

        实际工作中手工测试阶段才能发现问题,投入的精力也就是更大

        UI自动化:可以发现的问题相较于接口自动化来说更多,很多后端问题都会体现在界面上,界面不仅可以发现界面问题,也能发现后端问题

        接口自动化:关注接口(url,请求方案,请求参数,响应码,相应数据...)

2.Web自动化测试

目标:百度搜索关键字"洛克王国"并展示相关词条

手工测试

1.打开浏览器

2.请求网址http://www,baidu.com

3.找到百度输入框,并输出关键词"洛克王国"

4.找到百度一下并且点击

5.关闭浏览器

自动化测试无非也是如此步骤,只不过需要使用代码实现

1.打开浏览器

2.请求网址http://www,baidu.com

3.找到百度输入框,并输出关键词"洛克王国"

4.找到百度一下并且点击

5.关闭浏览器

自动化的打开浏览器需要使用驱动程序

程序想打开web浏览器就需要安装web驱动(即WebDriver),WebDriver 以本地化方式驱动浏览器.

安装驱动有两种方式,一种是通过手动下载,另一种是由驱动管理工具下载与浏览器版本匹配的

                               手动下载驱动,驱动必须要跟浏览器匹配(浏览器的名称和版本)

                                产生的问题:浏览器会不定时更新,更新之后旧版本驱动无法使用

自动下载:使用 WebDriverManager 自动管理驱动,但需要添加相关依赖

<dependency><groupId>io.github.bonigarcia</groupId><artifactId>webdrivermanager</artifactId><version>5.8.0</version><scope>test</scope>
</dependency>

使用驱动管理程序下载驱动的时候,必须要保证对应的浏览器程序一定是存在的(必须是正版)

3.Selenium

驱动程序准备好了,这里还需要使用 selenium 中提供的方法来通过驱动程序操作浏览器

添加相关依赖:

<dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>4.0.0</version>
</dependency>

 

第一个简单的web界面自动化的代码如下(火狐浏览器打开):

import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;public class auto_test {public void test01() throws InterruptedException {//驱动管理程序下载驱动WebDriverManager.chromedriver().setup();ChromeOptions options=new ChromeOptions();//允许访问所有链接options.addArguments("--remote-allow-origins=*");//1.驱动打开浏览器WebDriver driver=new ChromeDriver(options);Thread.sleep(3000);//2.请求百度 http://www.baidu.com/driver.get("http://www.baidu.com/");Thread.sleep(3000);//3.找到百度输入框输入"洛克王国"driver.findElement(By.cssSelector("#kw")).sendKeys("洛克王国");Thread.sleep(3000);//4.找到百度一下按钮并点击driver.findElement(By.cssSelector("#su")).click();Thread.sleep(3000);//5.关闭浏览器driver.quit();}
}

这里是Edge浏览器版本的戴拿,在4处地方稍作修改即可

import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.edge.EdgeOptions;public class auto_test2 {public void test02(){WebDriverManager.edgedriver().setup();EdgeOptions options=new EdgeOptions();options.addArguments("--remote-allow-origins=*");WebDriver driver=new EdgeDriver(options);driver.get("http://www.baidu.com/");driver.findElement(By.cssSelector("#kw")).sendKeys("洛克王国");driver.findElement(By.cssSelector("#su")).click();driver.quit();}
}

可能会存在自动下载的驱动跟浏览器版本号不是一模一样(但不影响程序),存在两种情况

1)浏览器已经更新了,但是驱动还没有发布最新版本,那么最近的历史版本就可以接着使用

2)浏览器还未更新,但是下载的是最新版本的驱动,新的版本驱动可以兼容历史版本的浏览器

使用的驱动自动下砸的驱动存放位置:C:\Users\用户名\.cache\selenium

相关文章:

  • 【操作系统原理02】进程的描述与控制
  • 基于机器学习 LSTM 算法的豆瓣评论情感分析系统
  • matlab论文图一的地形区域图的球形展示Version_1
  • 【Matlab】中国东海阴影立体感地图
  • 梅施CPQ + AI:开启智能AI与报价软件的新潮流
  • 大模型Rag - 文本分块
  • libevent的bufferevent测试用例和使用方法(附带源码)
  • 腾讯wxg企业微信 后端开发一面
  • 基于Ubuntu2504部署OpenStack E版
  • uv:重新定义Python开发效率的下一代工具链
  • GNU,GDB,GCC,G++是什么?与其他编译器又有什么关系?
  • Android TTY设备调用流程和简单分析
  • Vue3 本地打包启动白屏解决思路!! !
  • Springboot+vue3开发项目——热点事件
  • YOLO拓展-NMS算法
  • Dijkstra 算法
  • 用usb网卡 虚拟机无法开到全双工的解决办法
  • 时态--06--现在完成時
  • jmeter中文乱码问题解决
  • k8s安装kubeadm
  • 侧记|“五五购物节”启动!最大力度补贴,买买买 “666”
  • 上海浪琴环球马术冠军赛明日启幕!五一假期在这里感受精彩
  • 武汉大学新闻与传播学院已由“80后”副院长吴世文主持工作
  • 美国经济萎缩意味着什么?关税政策如何反噬经济?
  • 解放日报:硬科企业由此迈出“市场第一步”
  • 伊朗外长:伊美第四轮间接谈判将于5月3日举行