自动化测试概念篇~

一、自动化

1. 自动化概念

自动的代替人的行为完成操作,通过自动化测试有效减少人力的消耗的同时也提高了测试的质量和效率
常见面试题

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

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

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

错误!!!
一定程度上大幅度 的表达方式也需要注意

测试笔试中的选择题尽量不要选择说的太死或者太绝对的选项

2. 自动化分类

  1. 接口自动化
  2. UI自动化
    UI测试也称为界面测试,常见的UI自动化测试包含web自动化测试、移动端自动化测试等等
  • 移动端自动化测试
    移动端,顾名思义,就是部署在手机上的应用程序。移动端自动化测试主要测试程序部署在手机上能否按照预期的结果的进行操作,移动端测试通常不是将程序部署在移动端上进行测试,而是需要安装模拟器,在电脑上编写自动化测试脚本代码对模拟器上的软件进行操作
  • web自动化测试
    模拟人在浏览器上的操作行为,自动的打开浏览器,访问需要访问的内容

3. 自动化测试金字塔

最早提出来的时候是一个三层的金字塔,从上到下分别是UI界面/Service服务/Unit单元测试,随着敏捷测试的不断推进,测试金字塔出现一些变种

这种下宽上窄的三角形结构,代表在各层自动化的建议投入分配比例,越接近底层的单元测试建议的投入最多,接口测试居中,界面层建议的投入最少

原则上单元测试需要开发人员承担,很多团队中开发人手不足,优先保障功能的实现,在单元测试的投入不够,并且很多开发人员的单元测试经验不足,导致很多团队中不做单元测试或者被动执行流于形式,有人提出了金字塔结构的反模式:蛋筒冰激凌模式和纸杯蛋糕模式

二、web自动化测试

1. 驱动

车有了驱动才能够让车跑起来

计算机有了驱动程序就可以与设备(耳机,摄像头,麦克风,键盘,显示器等等设备)进行通信

安装驱动管理

xml 复制代码
<dependency>
        <groupId>io.github.bonigarcia</groupId>
        <artifactId>webdrivermanager</artifactId>
        <version>5.8.0</version>
        <scope>test</scope>
    </dependency>

三、Selenium

1. 一个简单的web自动化示例

1)安装selenium库

xml 复制代码
<dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.0.0</version>
    </dependency>

2)使用selenium编写代码

java 复制代码
public void search() throws InterruptedException {
        //1.打开浏览器(驱动)
        WebDriverManager.chromedriver().setup();
        //2)添加浏览器配置
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");

        WebDriver driver = new ChromeDriver(options);
        Thread.sleep(2000);
        //2.输入网址:https://www.baidu.com/
        driver.get("https://www.baidu.com/");
        //3.找到输入框,输入搜索内容
        Thread.sleep(2000);
        driver.findElement(By.cssSelector("#chat-textarea")).sendKeys("周杰伦");
        //4.找到搜索按钮,点击
        driver.findElement(By.cssSelector("#chat-submit-button")).click();
        //5.关闭浏览器
        Thread.sleep(5000);
        driver.quit();
    }

2. selenium+驱动+浏览器的工作原理

A. Client 端(你的代码)

是什么:你用 Python、Java 或 C# 写的测试脚本(引用了 Selenium 的库)。

作用:它是发号施令的"大脑"。

具体行为:当你写下一句 driver.get("https://www.google.com") 时,Selenium 库并不会直接操作浏览器(因为 Python 根本不懂怎么控制 Chrome),而是把这行代码转换成一个标准的 HTTP RESTful 请求。

B. Driver 端(中间人/翻译官)

是什么:那个你需要单独下载的 chromedriver.exe (Chrome) 或 geckodriver (Firefox)

作用:它是服务器。当你运行脚本时,驱动程序会启动一个轻量级的 Web Server(通常监听在 9515 或类似端口)

具体行为:

它时刻监听来自 Client 的 HTTP 请求

收到请求后,它解析请求内容(比如"打开网页")

它将这个通用请求翻译"成浏览器能听懂的原生指令(Chrome 使用 CDP 协议,Firefox 使用 Marionette 协议)

C. Browser 端(浏览器)

是什么:真实的 Chrome 或 Firefox 应用程序

作用:执行命令的"手脚"

具体行为:接收 Driver 的原生指令,执行点击、输入、滚动等操作,并将执行结果(或报错信息)返回给 Driver

总结来说:

代码 发送 HTTP 请求

Driver 解析请求并操控浏览器

浏览器 执行操作

本期内容到此为止,喜欢的话请点个赞,谢谢观看!!!

相关推荐
一晌小贪欢4 小时前
【Python办公】用 Selenium 自动化网页批量录入
开发语言·python·selenium·自动化·python3·python学习·网页自动化
代码的乐趣6 小时前
支持selenium的chrome driver更新到142.0.7444.175
chrome·python·selenium
k***3883 天前
SpringBoot Test详解
spring boot·后端·log4j
j***12153 天前
网络爬虫学习:应用selenium获取Edge浏览器版本号,自动下载对应版本msedgedriver,确保Edge浏览器顺利打开。
爬虫·学习·selenium
马达加斯加D3 天前
C# --- 如何写UT
前端·c#·log4j
秃了也弱了。3 天前
testng:Java界功能强大的单元测试框架
java·单元测试·log4j
Sunhen_Qiletian4 天前
python语言应用实战--------网络爬虫篇 第二篇(selenium库)
爬虫·python·selenium
陈辛chenxin4 天前
【接口测试】Postman教程
python·selenium·测试工具·postman·可用性测试