测试篇(五):什么是自动化测试、自动化测试分类、selenium工具、第一个自动化测试程序

news2025/1/10 17:52:36

目录

  • 一、什么是自动化测试
  • 二、自动化测试分类
    • 2.1 单元测试
    • 2.2 UI自动化测试
  • 三、selenium工具
    • 3.1 selenium的介绍
    • 3.2 环境部署
    • 3.3 selenium的常用方法
  • 四、第一个自动化测试用例

一、什么是自动化测试

在日常生活中我们会见到,自动化的水龙头、无人驾驶汽车、自动化的洗手液、自动化扫地机器人等…


自动化测试是指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将认为驱动的测试行为转化为机器执行的过程;通过自动化测试有效的减少了人力的投入,同时提高了测试的质量和效率。

二、自动化测试分类

自动化测试包括UI自动化(界面测试)、接口自动化、单元测试自动化,按照下面这个金字塔模型来进行自动化测试规划,可以产生最佳的自贡话测试产出投入比(ROI),可以用较少的投入获得很好的收益。
在这里插入图片描述

2.1 单元测试

最大的投入应该在单元测试上,单元测试运行的频率也更加高。
java的单元测试框架是Junit

2.2 UI自动化测试

UI自动化测试又分为移动端自动化测试和web端自动化测试,后面介绍的selenium工具也是主要用于web端自动化测试的.


在测试金字塔中告诉我们尽量多做API层的自动化测试,但是UI层的自动化测试更加贴近用户的需求和软件的实际业务;

【UI自动化的特点】

  • 用例维护量大
  • 页面相关性强,必须后期项目页面开发完后介入
  • UI测试适用于界面变动较小的项目

【UI自动化的好处】

  • 用于回归测试,减少人力的投入
  • 减少重复测试的时间,实现快速回归测试
  • 创建优良可靠的测试过程,减少认为错误
  • 可进行更多繁琐的测试
  • 更好的利用资源
  • 测试脚本的重要性

【UI自动化测试框架】

UI层的测试框架比较多,比如Windows客户端测试的AutoIT,web测试的selenium以及TestPlanteggPlant,Robot framework,QTP等。
下面主要以Web UI自动化测试框架Selenium为例进行详细介绍。selenium有以下优点:

  • 免费,也不用再为破解软件而大伤脑筋
  • 小巧,对于不同的语言它只是一个包而已,而QTP 需要下载安装1个多G 的程序。
  • 支持多语言,熟悉C、java、ruby、python、或都是C#,你都 可以通过selenium 完成自动化测试,而QTP 只支持VBS
  • 支持多平台:windows、linux、MAC ,
  • 支持多浏览器:ie、ff、safari、opera、chrome
  • 提供了很多可供测试使用的API
  • 支持分布式测试用例的执行,可以把测试用例分布到不同的测试机器执行,相当于分发机的功能

【UI自动化测试的适用对象】

实施自动化测试的前提条件:需求变动不频繁、项目周期足够长、自动化测试脚本可重复使用。
适合做自动化的项目:

  1. 产品型项目。产品型的项目,新版本是在旧版本的基础上进行改进,功能变不大的项目,但项目的新老功能都必须重复的进行回归测试。回归测试是自动化测试的强项,它能够很好的验证你是否引入了新的缺陷,老的缺陷是否修改过来了。在某种程度上可以把自动化测试工具叫做回归测试工具。
  2. 机械并频繁的测试。每次需要输入相同、大量的一些数据,并且在一个项目中运行的周期比较长。比如兼容性测试。

以下情况的项目不适合做自动化测试:

1、需求变动频繁的项目,自动化脚本不能重复使用,维护成本太大,性价比低
2、项目周期短,自动化脚本编制完成后使用次数不多,性价比低
3、交互型较强的项目,需要人工干预的项目,自动化无法实施

【自动化测试需要了解哪些技能?】

了解被测系统的基本业务、了解业务的基本框架、懂得功能测试、懂得一门编程语言、了解数据库与操作系统、了解常见的测试框架…

三、selenium工具

3.1 selenium的介绍

Selenium是web应用中基于UI的自动化测试框架,支持多平台、多浏览器、多语言。
早期的selenium RC已经被现在的webDriver所替代,可以简单的理解为selenium1.0+webdriver构成现在的Selenium2.0。现在我们说起selenium,一般指的是Selenium2.0。它有由Selenium IDE,Webdriver,Selenium Grid组成。

3.2 环境部署

想要使用selenium实施web自动化测试,需要的环境是什么呢?

  • 首先需要一个浏览器,我这里选择的使Chrome浏览器
  • ChromeDriver:谷歌浏览器的驱动
  • selenium工具包

【什么是浏览器的驱动?】

对于一台机计算机来说,可以驱动计算机和设备工作起来
对于自动化来说,使用selenium编写的脚本代码,不能直接的打开浏览器,这是就需要借助驱动程序打开浏览器

在这里插入图片描述
驱动程序相当于是一个服务器

3.3 selenium的常用方法

  • 查找页面元素 findElement
    在这里插入图片描述
    在这里插入图片描述
  • 查找标签/属性相同的元素列表 findElements()方法

在这里插入图片描述
在这里插入图片描述

  • 定位元素的方法 ,通过By类中提供的方法
    在这里插入图片描述
    在这里插入图片描述

  • xpath方法
    语法:在这里插入图片描述
    在这里插入图片描述
    对于xpath方法的使用,通过在页面中Copy XPath作为方法的参数即可

四、第一个自动化测试用例

第一步:创建一个Maven项目,并引入selenium依赖
在这里插入图片描述
第二步:在test目录下创建包和java文件
在这里插入图片描述
第三步:在Test1中编写代码,达到"在百度搜索框中搜索迪丽热巴"的目的

package com.autotest;

import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;

public class Test1 {
    //百度网址搜索关键词"迪丽热巴"
    public  void dilirebaTest() throws InterruptedException {
        ChromeDriver chromeDriver=new ChromeDriver(); //创建一个驱动实例
        Thread.sleep(3000);
        chromeDriver.get("https://www.baidu.com"); //输入百度网址,访问百度首页
        Thread.sleep(3000);
        //找到搜索输入框元素,并输入关键字"迪丽热巴"
        chromeDriver.findElement(By.cssSelector("#kw")).sendKeys("迪丽热巴");
        Thread.sleep(3000);
        //找到"百度一下"按钮并点击
        chromeDriver.findElement(By.cssSelector("#su")).click();
        Thread.sleep(3000);
        chromeDriver.quit(); //关闭浏览器
    }
}

第四步:启动程序

package com.autotest;

public class RunAutoTest {

    public static void main(String[] args) throws InterruptedException {

        Test1 test1=new Test1();
        test1.dilirebaTest();
    }
}

【简单的自动化示例主要分以下几步】

  1. 创建驱动实例,创建会话
  2. 访问网站
  3. 查找元素
  4. 操作元素
  5. 结束会话

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/182566.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mysql,使用FIND_IN_SET()函数处理多表关联问题.

这里有 user表、teacher表,其中 teacher.user_ids 字段中的值是 user.id 值以英文半角逗号拼接而来。现在, 我们需要在查询 teacher 表数据时,将 user.name 的值也查询出来。使用以下的SQL语句,即可实现需求。SELECTGROUP_CONCAT(…

系统编程中的进程的概念No.1

引言: 北京时间2023/1/28,本小编04年1月9日出生,今天第一次理解到进程的概念,所以我们接下来就学习一下什么是进程以及和进程相关的一些知识。首先我们想要了解进程以及其相关的知识,我们要先理解一下其它方面的知识&…

【2】Linux基础命令

学习笔记目录 初识Linux--入门Linux基础命令--会用Linux权限管控--懂权限Linux实用操作--熟练实战软件部署--深入掌握脚本&自动化--用的更强项目实战--学到经验云平台技术--紧跟潮流 Linux的目录结构 Linux的目录结构是一个树形结构,没有盘符这个概念&#x…

常用算法分类

按照使用场景分类排序算法,如冒泡排序,快速排序等,用于将一组数据按照特定规则排序。搜索算法,如二分查找算法,深度优先搜索算法等,用于在一组数据中查找特定元素。图论算法,如最短路径算法&…

Claude的2022年终总结——关于2022和Claude的四个问题

文章目录前言1. 我算是合格的开发者了吗2. 我算是正式的游戏人了吗3. 我算是成熟的社会人了吗4. 我算是什么样的写作者呢最后前言 2022年的这个时候,我也是在准备着年终总结,只不过应公司要求,准备述职晋升,是抱着升职加薪&#…

行为型模式 - 命令模式Command

模式的定义与特点 命令模式(Command Pattern),是将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。命令模式是把发出命令的责任和执行命令的责任分割开,委派给不同的对象。命令模式允许请求的一方…

设计一个消息队列的思考点

导图所以主要考虑的点是:P1.1. MQ 要有基础的消息管理能力(CRUD)P1.2. MQ 要有产消日志P2. MQ将消息存储成功才能响应成功P3.1 MQ将消息存储 分片存储P3.2 扩容的实现思路(如何在扩容的时候更方便高效)P4.1 数据要有副本(分片副本…

【27】C语言 | 指针进阶

目录 一、指针概念 二、字符指针 三、指针数组 四、数组指针 五、数组参数、指针参数 六、函数指针 七、函数指针数组 八、回调函数 一、指针概念 1.指针就是个变量,用来存放地址,地址唯一标识一块内存空间。2.指针的大小是固定的4/8个字节(32位平…

Java ccflow 代码

草稿规则目录概述需求:设计思路实现思路分析1.URL管理参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive. happ…

盖子的c++小课堂——第十四讲:指针

前言 作者:大家好鸭,想必大家看到标题都有感到有一丝奇怪吧,其实,今天主要讲一些运算符 粉丝:啊……嗯嗯嗯 作者:那开始吧~~ 内存地址运算符& 粉丝:讲这个干嘛,我都会了~~ …

Jmeter场景组合测试——多个线程组的设计方案

我们绝大多数同学在使用jmeter进行性能测试时都会在一个线程组中完成测试工作,今天我来重点讲解一下jmeter多个线程组在测试中的应用,这也是关于jmeter性能测试面试过程中的进阶问题,希望能够帮到大家来解决工作中不同的测试需求。线程组中的…

Rust个人学习之有意思的所有权

在Rust中是没有内存垃圾回收机制(GC)的,那Rust是如何保障内存安全的呢?这就引出了“所有权”这个概念。 我们看下下面这段伪代码 let s "helloString"; t s; print(s); 在之前我们学习的语言中,比如C语言,对于上述伪…

人工智能原理复习 | 产生式系统

文章目录 一、概述二、八数码问题三、特殊的产生式系统四、一些补充CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 通过学习人工智能原理课程了解基本的人工智能问题的求解方法和原理。 一、概述 产生式系统(Production System):是构造知识型系统和建立认知模型时常用的知…

用canvas绘制微信小程序海报页面并保存相册-适用微信原生

微信小程序绘制海报并保存相册 tip:代码中使用的是uni的api 如果使用原生微信小程序开发,可以把uni更换成wx使用 文章目录微信小程序绘制海报并保存相册前言一、分析需求二、准备数据三、编码开始html部分解析:js部分1、准备好数据后开始绘制…

王道操作系统笔记(三)———— 处理机调度

文章目录一、调度的概念1.1 调度的基本概念1.2 调度的层次1.3 补充:七状态模型二、调度的时机、切换与过程2.1 进程调度的时机2.2 狭义进程调度、进程切换、广义进程调度2.3 进程切换的过程2.4 补充:闲逛进程三、进程的调度方式四、调度算法的评价指标五…

【通信原理(含matlab程序)】实验四 升余弦滚降基带传输

💥💥💞💞欢迎来到本博客❤️❤️💥💥 本人持续分享更多关于电子通信专业内容以及嵌入式和单片机的知识,如果大家喜欢,别忘点个赞加个关注哦,让我们一起共同进步~ &#x…

【Novel AI】使用绘画AI构建unity游戏资源

请勿在商业用途中使用下面的示例图中的任何资源! 1. 设想: 首先根据自己的设想,创造一些角色原型,角色特点等等 这里我根据网络上找的一些参考,我大概想要的是比较特别的一个警察的猫人形的动物角色; 2…

网络编程(TCP+UDP)(1)

咱们的一个TCP服务器,是否可以让一个UDP客户端连接上呢? 1)TCP和UDP,他们无论是API代码,还是协议底层的工作过程,都是差异巨大的,不是单纯的把流转化成数据包就可以的; 2)描述一次通信&#xff…

武器系统中的自主性(国防部指令3000.09)

批准:负责政策的国防部副部长办公室2023年1月25日可以公开发布。可在指令司网站https://www.esd.whs.mil/DD/查阅。国防部指令3000.09,“武器系统中的自主性”,2012年11月21日国防部副部长凯瑟琳希克斯(Kathleen H. Hicks)目的:本指令:•建立开发和使用武…

教育数字化转型 看低代码怎么构建实现

数字经济和数字社会的发展,推动教育培养目标和内容的发展与变革。经过教育信息化1.0和2.0的建设,我国数字技术与教育经历了起步、应用、融合、创新四个阶段,目前正处于融合与创新并存的时期。教育数字化教育数字化转型是教育信息化的特殊阶段…