自动化测试概念篇~

一、自动化

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 解析请求并操控浏览器

浏览器 执行操作

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

相关推荐
m0_740043731 天前
SpringBoot05-配置文件-热加载/日志框架slf4j/接口文档工具Swagger/Knife4j
java·spring boot·后端·log4j
Pyeako2 天前
网络爬虫相关操作--selenium库(超详细版)
爬虫·python·selenium
袁袁袁袁满2 天前
基于selenium和亮数据爬取海外电商平台
爬虫·selenium·网络爬虫·数据采集·爬虫实战·电商采集·自动化采集
子夜江寒2 天前
基于Selenium的自动化Web数据采集实践
selenium·自动化
syt_biancheng2 天前
博客系统全流程测试总结
python·selenium·测试用例·压力测试·postman
她说彩礼65万3 天前
C# params使用
开发语言·c#·log4j
测试19983 天前
一个只能通过压测发现Bug
自动化测试·软件测试·python·selenium·测试工具·bug·压力测试
mike04124 天前
Eclipse+maven+selenium自动化测试开发环境搭建
selenium·eclipse·maven
数据科学小丫5 天前
浏览器 driver (Chrome & Edge)驱动安装、Selenium 安装,使用Selenium进行网页自动化操作与数据抓取(Edge)
selenium·测试工具·自动化
测试19985 天前
Selenium(Python web测试工具)基本用法详解
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例