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

软件测试09 自动化测试技术(Selenium)

重点/难点
  • 重点:理解自动化测试的原理及其流程
  • 难点:Selinum自动化测试工具的使用

目录


系统测试

  • 什么是系统测试
  • 什么是功能测试
  • 什么是性能测试
  • 常见的性能指标有哪些

自动化测试概述

测试面临的问题

  • 测试用例数量增多,工作量增大,许多测试用例需重复执行
  • 手工测试占用人力资源,工作重复单调,影响测试人员积极性

自动化测试的概念

  • 通过测试工具和脚本,按预定计划自动进行软件测试
  • 验证软件是否满足用户需求

特点

  • 可重复性
  • 可操作系统
  • 高效率

通常情况下,引入自动化测试需要满足以下条件:
● 项目需求变动不频繁
● 项目周期足够长
● 自动化测试脚本可重复使用


自动化测试的适用范围

  • 非常重要的测试和广泛范围的测试,如组件、功能、性能、安全性、移动APP兼容性测试等
  • 内部系统间的交互点
  • 期望测试结果可预料,测试复用性要求强
  • 加快软件开发周期,通过自动化测试缩短测试周期,提高软件信度
  • 手工测试困难或不可能的测试,如性能测试的负载测试
  • 运行频繁的测试,或短时间内需要大量测试
  • 全面、准确、快速响应的测试,及全面的测试管理

自动化测试的局限

  • 不能代替手工测试
  • 预期结果不确定时
  • 缺乏自动化测试经验时
  • 文档较少或不一致时
  • 发现缺陷能力不足
  • 测试成本较高

自动化测试技术

以用户登录功能为例

  • 执行测试前,完成测试用例设计
  • 模拟手工测试过程:
  • 模拟用户的手工操作
  • 记录执行过程
  • 判断测试结果
  • 统计测试情况
自动化功能测试任务
  • 识别被测系统
  • 驱动被测系统
  • 记录执行过程
  • 设置校验点,判断测试结果
  • 统计测试情况

自动化测试的原理

录制/回放技术

  • 自动录制手工操作,转化为测试脚本
  • 在脚本中插入指令设置校验点
  • 测试工具读取脚本,执行指令,重复制定测试用例

自动化测试的流程

在这里插入图片描述


测试用例模板

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


自动化测试的关键技术

  • 对象识别
  • 脚本技术
  • 自动比较技术
  • 自动化测试框架

对象识别

  • Windows对象

  • 在这里插入图片描述

  • App对象

  • 在这里插入图片描述

  • Web对象

  • 在这里插入图片描述


脚本技术

  • 线性脚本:录制手工执行的测试用例得到的脚本,这种脚本包含所有的击键、移动、输入数据等,所有录制的测试用例都可以得到完整的回放
  • 结构化脚本:具有逻辑结构、函数调用功能
  • 数据驱动脚本:测试输入存储在独立数据文件中,而不是存储在脚本中
  • 关键字驱动:"填表格"式的关键字驱动封装,测试人员进行自动化测试时只要考虑3个问题就可以了:做什么、对谁做、怎么做。

自动比较技术

  • 验证点命令与对象值的比较
  • 静态比较与动态比较
  • 简单比较与复杂比较
  • 敏感性测试比较与健壮性测试比较
  • 比较过滤器
    在这里插入图片描述

Selenium自动化测试工具

  • 用于Web应用程序测试
  • 测试浏览器兼容性与系统功能
  • 支持IE、Mozilla Firefox、Safari、Google Chrome、Opera等浏览器
  • 这个工具的主要功能包括:
    测试与浏览器的兼容性
    测试系统功能
  • 在普遍的经验中,一般会对具有下列特征的项目开展UI自动化测试:
    软件需求变动不频繁
    项目周期较长

Selenium IDE与WebDriver与Grid

在这里插入图片描述

Selenium IDE

  • 嵌入Firefox的插件,录制与回放Selenium脚本

Selenium WebDriver

  • 操作浏览器的API,支持多种编程语言

Selenium Grid

  • 支持多节点并行执行多个测试,不同浏览器和操作系统

Selenium脚本

  • 接下来编写第一个Selenium Python脚本,本例使用Selenium WebDriver提供的类和方法模拟用户与浏览器的交互,代码如下所示。
    在这里插入图片描述
    不同的浏览器版本需要下载匹配其版本的驱动程序
    谷歌:http://npm.taobao.org/mirrors/chromedriver/
    火狐:https://github.com/mozilla/geckodriver/releases
    Edge:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

WebDriver原理

在这里插入图片描述

  • Selenium-client无法直接操作浏览器
  • WebDriver作为中介,调用浏览器原生组件
  • 实际上是Selenium-client去请求WebDriver,然后WebDriver通过调用浏览器原生组件驱动浏览器操作。

Selenium WebDriver的常用方法

在这里插入图片描述


Selenium WebDriver的功能

在这里插入图片描述


示例:定位一组元素

  • 在百度首页找到所有链接并输出链接文字
  • 在这里插入图片描述

WebElement接口

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


相关文章:

软件测试09 自动化测试技术(Selenium)

重点/难点 重点:理解自动化测试的原理及其流程难点:Selinum自动化测试工具的使用 目录 系统测试 什么是系统测试什么是功能测试什么是性能测试常见的性能指标有哪些 自动化测试概述 测试面临的问题 测试用例数量增多,工作量增大&#xff…...

记录解决springboot项目上传图片到本地,在html里不能回显的问题

项目场景: 项目场景:在我的博客系统里:有个相册模块:需要把图片上传到项目里,在html页面上显示 解决方案 1.建一个文件夹 例如在windows系统下。可以在项目根目录下建个photos文件夹,把上传的图片文件…...

C++ 中 const 关键字

C 中 const 关键字 2009-02-19 2024-07-23 补充C11后的做法 在 C 中,const 是一个关键字(也称为保留字),它用于指定变量或对象的值在初始化后不能被修改。关键字是编程语言中具有特殊含义的词汇,编译器会识别这些词并…...

客梯自动监测识别摄像机

当今社会,随着城市建设的快速发展,客梯作为现代化建筑不可或缺的一部分,其安全性与效率显得尤为重要。为了提升客梯的安全管理水平,智能监测技术应运而生,尤其是客梯自动监测识别摄像机系统的应用,为乘客和…...

为什么那么多人学习AI绘画?工资香啊!

在当今这个科技日新月异的时代,AI绘画作为数字艺术与人工智能融合的璀璨成果,正吸引着无数人投身其中,而“工资香啊!”无疑是这一热潮背后不可忽视的驱动力之一。 AI绘画的高薪待遇是吸引众多学习者的关键因素。随着市场对AI艺术…...

国产JS库(js-tool-big-box)7月度总结

js-tool-big-box开发已经有3个月了,团队内的小伙伴进行了热烈的讨论,持续做了功能迭代。小伙伴们也做了艰苦卓绝的文档分享,有纯功能分享类的,有带有小故事的,有朋友们利用自己独自网站分发分享的。7月份快要结束了&am…...

c++ 高精度加法(只支持正整数)

再给大家带来一篇高精度,不过这次是高精度加法!话不多说,开整! 声明 与之前那篇文章一样,如果看起来费劲可以结合总代码来看 定义 由于加法进位最多进1位,所以我们的结果ans[]的长度定义为两个加数中最…...

python键盘操作工具:ctypes、pyautogui

这里模拟 Win Ctrl L 组合键 1、ctypes ctypes库,它允许我们直接调用Windows API来模拟键盘输入。 import ctypes import time# 定义所需的常量和结构 LONG ctypes.c_long DWORD ctypes.c_ulong ULONG_PTR ctypes.POINTER(DWORD) WORD ctypes.c_ushortclass…...

计算机网络发展历史

定义和基本概念 计算机网络是由多个计算设备通过通信线路连接起来的集合,这些设备能够互相交换数据、消息和资源。计算机网络的核心功能是实现数据的远程传输和资源共享,它使得地理位置的限制被大大减弱,极大地促进了信息的自由流动和人类社…...

记录安装android studio踩的坑 win7系统

最近在一台新电脑上安装android studio,报了很多错误,也是费了大劲才解决,发出来大家一起避免一些问题,找到解决方法。 安装时一定要先安装jdk,cmd命令行用java -version查当前的版本,没有的话,先安装jdk,g…...

Python图形编程-PyGame快速入门

PyGame快速入门 文章目录 PyGame快速入门1、什么是PyGame2、安装PyGame3、创建PyGame窗口4、处理事件5、绘制对象6、移动对象7、加载和显示图像8、播放声音9、处理用户输入10、碰撞检测11、动画精灵12、管理游戏状态13、Pygame 中的典型主游戏循环1、什么是PyGame Pygame 是一…...

邦芒宝典:8种方法调整职场心态

在职场中拼斗当然要有好的心态,您知道职场心态如何调整吗? ​ ​方法1:自我调整 ​“思想可以使天堂变成地狱,也可以使地狱变成天堂。”你不能样样顺利,但可以事事尽心;你不能左右天气,但可以改变心情;你…...

华为OD2024D卷机试题汇总,含D量50%+,按算法分类刷题,事半功倍

目录 专栏导读华为OD机试算法题太多了,知识点繁杂,如何刷题更有效率呢? 一、逻辑分析二、数据结构1、线性表① 数组② 双指针 2、map与list3、队列4、链表5、栈6、滑动窗口7、二叉树8、并查集9、矩阵 三、算法1、基础算法① 贪心思维② 二分查…...

Unity UGUI 之 Graphic Raycaster

本文仅作学习笔记与交流,不作任何商业用途 本文包括但不限于unity官方手册,唐老狮,麦扣教程知识,引用会标记,如有不足还请斧正 首先手册连接如下: Unity - Manual: Graphic Raycaster 笔记来源于&#xff…...

类和对象——相关的零碎知识

前提提示: 其实C中的类和对象,最重要的是6个默认函数,如有忘记,请移步到:类和对象。本章是对于一些细节知识的补充和拓展。 1. 隐示类型转换 在运算时,运算符左右两边的操作数的类型不同,编译器…...

【hadoop大数据集群 1】

hadoop大数据集群 1 文章目录 hadoop大数据集群 1一、环境配置1.安装虚拟机2.换源3.安装工具4.安装JDK5.安装Hadoop 一、环境配置 折腾了一下午/(ㄒoㄒ)/~~ 1.安装虚拟机 参考视频:https://www.bilibili.com/video/BV18y4y1G7JA?p17&vd_sourcee15e83ac6b22a…...

TQSDRPI开发板教程:实现PL端的UDP回环与GPSDO

本教程将完成一个全面的UDP运行流程与GPSDO测试,从下载项目的源代码开始,通过编译过程,最终将项目部署到目标板卡上运行演示。此外,我们还介绍如何修改板卡的IP地址,以便更好地适应您的网络环境或项目需求。 首先从Gi…...

array.some() ==> 查找数组list中,是否有包含与当前currKey的值不一样的misId

需求: const list [ {misId: e, name: 小白}, {misId: e, name: 小白白}, {misId: r, name: 小王}, {misId: r, name: 小小王} ] let currKey r 查找数组list中,是否有包含与当前currKey的值不一样的misId 解决: 要查找数组lis…...

最简单的typora+gitee+picgo配置图床

typoragiteepicgo图床 你是否因为管理图片而感到头大?是时候了解一下 Typora、Gitee 和 PicGo 这个超级三剑客了,它们可以帮你轻松打造自己的图床,让你的博客图片管理变得简单又有趣。让我们开始这场神奇的图床之旅吧! Typora …...

【黄啊码】GPT的相关名词解释

GPT是一种基于互联网的、可用数据来训练的、文本生成的深度学习模型 GPT的核心技术是‌变换器(Transformer),这是一种神经网络结构,可以有效地处理序列数据,比如文本、语音、图像等。GPT使用了大量的预训练数据&#…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向

在人工智能技术呈指数级发展的当下&#xff0c;大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性&#xff0c;吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型&#xff0c;成为释放其巨大潜力的关键所在&…...

若依登录用户名和密码加密

/*** 获取公钥&#xff1a;前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...