什么是自动化测试框架?自动化测试框架有哪些?

news2024/11/18 7:39:36

一、自动化测试

1、为什么要做自动化测试?

  • 自动化测试就是把以人为驱动的测试行为转化为机器执行的一种过程,即模拟手工测试的步骤,通过执行测试脚本自动地测试软件
  • 自动化测试就是程序(脚本)测试程序,使用自动化工具编写、执行测试人员测试脚本和案例的技术
  • 自动化测试的主要目标是减少手动运行的测试用例数量,而不是完全取消手动测试

2、自动化测试的适用场景

  • 自动化测试基于投资回报率,自动化测试适用于需求比较稳定,也就是不经常变更的场景
  • 比如一些重复性任务、冒烟测试、使用多个数据集进行测试、回归测试用例等
  • 如果是被测系统频繁更改,临时加的需求,或者是随机测试,就不适用于自动化

3、什么样的项目适合开展自动化测试

  1. 软件需求变动不频繁
  2. 项目周期足够长
  3. 软件系统界面稳定,变化较少
  4. 项目进度压力不大
  5. 比较频繁的回归测试
  6. 自动化测试脚本复用率较高(不同平台兼容、和其他模块组合使用)
  7. 被测软件系统开发较规范,能够保证系统的可测试性
  8. 测试人员具备较强的编程能力

3、自动化测试的缺陷

  • 不稳定
  • 可靠性不强
  • 不易维护,维护需要很大的成本
  • 成本与收益可能不对等

 

4、如何开展自动化测试?

自动化测试的切入点:开展自动化测试的时间点很关键,需要在系统已经过多版本的系统测试,达到稳定之后

可行性分析:在进行项目自动化测试之前,第一步就是要确认其可行性,是否可以实行测试自动化。如果项目时间紧迫、项目周期短、需求变幻无常则不建议开展自动化,想要开展自动化测试,还是应该遵循几个前提条件:软件需求变动不频繁、项目周期足够长、自动化测试脚本可重复利用。可以产出《可行性分析报告》

抽样demo分析:通过可行性分析后,接下来需要做一个demo,等待demo完成后,可以再次分析自动化测试能否顺利开展下去,因为demo已经是一个实体案例,可以完全通过透析demo来发现是否存在技术上的问题。关于demo的选取,一般直接选择冒烟测试用例写成测试脚本后执行,检查脚本是否能够成功运行通过,已设计的测试点是否全部执行

测试需求分析:测试需求其实就是测试目标,需要分析项目中具体哪些测试需求(功能点)准备进行自动化测试,一条需求可以包含多条自动化用例,通过需求分析来判定项目中测试自动化要做到什么程度。比如在测试用例设计上,大体是以正向、反向划分的,一般在自动化测试中,优先考虑实现正向的测试用例后再去实现反向的测试用例,而且反向的测试用例大多都是需要进行分析然后筛选出来的,因为反向的用例实在太多了。自动化测试是不需要也没有必要做到100%覆盖率的。在需求分析这个阶段,确定测试覆盖率以及自动化测试粒度,测试用例上的筛选等都是重点工作

制定测试计划:在测试计划中,明确项目实施自动化测试所需的资源、测试范围、测试过程的描述。框架设计、开发或搭建,自动化测试框架是能保证测试的分布执行、

设计测试用例:由于不是所有的测试用例都能用自动化来执行,所以需要将能够执行自动化测试的用例汇总成自动化测试用例,要将登陆系统的用户、密码、产品、客户等参数信息独立出来形成测试数据,便于脚本开发

测试脚本开发:根据测试计划以及设计的测试用例,编写脚本,

分析测试结果、记录测试问题:

自动化测试脚本维护:

5、什么是持续集成?

持续集成是指频繁的一天多次将代码集成到主干,可以让产品快速迭代,同时还能保持高质量

二、自动化测试框架

1、你用过哪些自动化框架?

 python+selenium+RobotFramework

2、介绍一下RobotFramework?

RF是基于可扩展关键字驱动的自动化测试框架

  • 可扩展意味着可以自己开发,也可以调用第三方的关键字库
  • 关键字驱动意味着测试用例都是围绕着关键字运行的

RF有四种表

  • setting 全局配置表,定义配置部分
  • variables 测试套件的全局变量表
  • keywords 用户自定义的关键字表
  • test cases 测试套件的测试用例集

用例表里面的每个测试用例,可以分为配置部分和主体部分

配置部分:

  • [Documentation] 用例文字说明
  • [tags] 用例标签
  • [setup][teardown] 用例的初始化和清除操作
  • [template] 声明该用例是模板关键字驱动的
  • [timeout] 设置用例超时时间

用例主体部分是由关键字组成的,关键字的来源有rf标准库、第三方库和python自定义库

3、RF的原理是什么?

测试数据和关键字库都是自己准备的

编写测试用例后,rf解析测试数据,执行测试用例,最终生成测试报告

rf只是一个工具,并没有和被测系统发生真实交互

4、介绍一下pytest? 

pytest是python的第三方单元测试框架,比自带unittest更简洁和高效,支持非常丰富的插件,同时兼容unittest框架。

pytest特点:

  1. 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
  2. 能够支持简单的单元测试和复杂的功能测试
  3. 支持参数化
  4. 执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败
  5. 支持重复执行rerun失败的case
  6. 支持运行由nose、unittest编写的测试case
  7. 可生成html报告
  8. 方便和持续集成工具jenkins集成
  9. 可支持执行部分用例
  10. 具有很多第三方插件,并且可以自定义扩展

5、unittest有了解过么?

unittest是python内置的单元测试框架,具备编写用例、组织用例、执行用例、输出报告等自动化框架的条件

unittest框架大概有五个概念:

  • test case:一个完整的测试单元
  • test suite:多个测试用例的集合、测试套件或测试计划
  • test loader:加载test case到test suite中的
  • test runner:执行测试用例,并将测试结果保存到test result中
  • test fixture: 一个测试用例的初始化准备及环境还原,主要是setup() 和setdown() 方法

 unittest的工作原理:

通过unittest类调用分析,可将框架的工作流程概述为:编写TestCase,然后由TestLoader加载TestCase到TestSuite,然后由TestRunner来运行TestSuite,最后将运行的结果保存在TestResult中。通过命令行或者unittest.main() 执行时,main会调用TestRunner中的run来执行,或者可以直接通过TestRunner来执行用例,在Runner执行时,默认将执行结果输出到控制台,可以设置其输出到文件,在文件中查看报告。

 

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

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

相关文章

LeNet卷积神经网络-笔记

LeNet卷积神经网络-笔记 手写分析LeNet网三卷积运算和两池化加两全连接层计算分析 基于paddle飞桨框架构建测试代码 #输出结果为: #[validation] accuracy/loss: 0.9530/0.1516 #这里准确率为95.3% #通过运行结果可以看出,LeNet在手写数字识别MNIST验证…

如何开启一个java微服务工程

安装idea IDEA常用配置和插件(包括导入导出) https://blog.csdn.net/qq_38586496/article/details/109382560安装配置maven 导入source创建项目 修改项目编码utf-8 File->Settings->Editor->File Encodings 修改项目的jdk maven import引入…

【C++】类和对象——拷贝构造函数、运算符重载、日期类实现、const成员、取地址操作符重载

目录 拷贝构造函数运算符重载日期类实现const成员取地址及const取地址操作符重载 拷贝构造函数 拷贝构造函数:只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对象创建新对象时由编译器自动调用。 拷贝构…

SOLIDWORKS 钣金零件怎么画?

一、SOLIDWORKS 钣金功能介绍 SOLIDWORKS 是一款广泛应用于机械设计领域的 CAD 软件,其钣金功能可以帮助用户快速创建钣金件的 3D 模型。钣金折弯是一种常见的加工方式,可以将平面材料通过弯曲变形成为所需形状。 二、如何使用 SOLIDWORKS 钣金功能 步骤…

shell清理redis模糊匹配的多个key

#!/bin/bash# 定义Redis服务器地址和端口 REDIS_HOST"localhost" REDIS_PORT6380# 获取匹配键的数量 function get_matching_keys() {local key_pattern"$1"redis-cli -h $REDIS_HOST -p $REDIS_PORT -n 0 KEYS "$key_pattern" }# 删除匹配的键 …

一文带你详细了解Open API设计规范

写在前面: OpenAPI 规范(OAS)定义了一个标准的、语言无关的 RESTful API 接口规范,它可以同时允许开发人员和操作系统查看并理解某个服务的功能,而无需访问源代码,文档或网络流量检查(既方便人…

Atlas200DK A2联网实战

文章目录 1.Atlas原始网络信息2. 开发板联网2.1 使用Type-c 连接开发板2.2 修改本地网络适配器2.3 修改开发板网络信息2.4 测试外网连接 1.Atlas原始网络信息 Type-C 网口 ETH0 网口 ETH1 网口 2. 开发板联网 2.1 使用Type-c 连接开发板 使用xshell 等ssh终端登录开发板&…

【C++从0到王者】第十五站:list源码分析及手把手教你写一个list

文章目录 一、list源码分析1.分析构造函数2.分析尾插等 二、手把手教你写一个list1.结点声明2.list类的成员变量3.list类的默认构造函数4.list类的尾插5.结点的默认构造函数6.list类的迭代器7.设计const迭代器8.list的insert、erase等接口9.size10.list的clear11.list的析构函数…

【java安全】CommonsBeanUtils1

文章目录 【java安全】CommonsBeanUtils1前言Apache Commons BeanutilsBeanComparator如何调用BeanComparator#compare()方法?构造POC完整POC 调用链 【java安全】CommonsBeanUtils1 前言 在之前我们学习了java.util.PriorityQueue,它是java中的一个优…

2.2 身份鉴别与访问控制

数据参考:CISP官方 目录 身份鉴别基础基于实体所知的鉴别基于实体所有的鉴别基于实体特征的鉴别访问控制基础访问控制模型 一、身份鉴别基础 1、身份鉴别的概念 标识 实体身份的一种计算机表达每个实体与计算机内部的一个身份表达绑定信息系统在执行操作时&a…

3、详解桶排序及排序内容总结

堆 满二叉树可以用一个数组中从0开始的连续一段来记录 i i i位置左孩子: 2 ∗ i + 1 2*i+1 2∗i+1,右孩子: 2 ∗ i + 2 2*i+2 2∗i+2,父: ( i − 1 ) / 2 (i-1)/2 (i−1)/2 大根堆 每一棵子树的根为最大值 小根堆 每一棵子树的根为最小值 建大根堆 不断地根据公…

配置HDFS单机版,打造数据存储的强大解决方案

目录 简介:步骤:安装java下载安装hadoop配置hadoop-env.sh配置 core-site.xml配置hdfs-site.xml初始化hdfs文件系统启动hdfs服务验证hdfs 结论: 简介: Hadoop分布式文件系统(HDFS)是Hadoop生态系统中的一个…

【硬件设计】模拟电子基础二--放大电路

模拟电子基础二--放大电路 一、基本放大电路1.1 初始电路1.2 静态工作点1.3 分压偏置电路 二、负反馈放大电路三、直流稳压电路 前言:本章为知识的简单复习,适合于硬件设计学习前的知识回顾,不适合运用于考试。 一、基本放大电路 1.1 初始电…

数学建模-爬虫入门

Python快速入门 简单易懂Python入门 爬虫流程 获取网页内容:HTTP请求解析网页内容:Requst库、HTML结果、Beautiful Soup库储存和分析数据 什么是HTTP请求和响应 如何用Python Requests发送请求 下载pip macos系统下载:pip3 install req…

VactorCast自动化单元测试

VectorCAST软件自动化测试方案 VectorCAST软件自动化测试方案 博客园 软件测试面临的问题 有一句格言是这样说的,“如果没有事先做好准备,就意味着做好了 失败的准备。”如果把这个隐喻应用在软件测试方面,就可以这样说“没有测试到&#xf…

Tomcat虚拟主机

Tomcat虚拟主机 部署 [rootlocalhost webapps]# cd ../conf [rootlocalhost conf]# pwd /usr/local/tomcat/conf [rootlocalhost conf]# vim server.xml #增加虚拟主机配置&#xff0c;添加以下&#xff1a; <Host name"www.a.com" appBase"webapps"u…

react-redux的理解与使用

一、react-redux作用 和redux和flux功能一样都是管理各个组件的状态&#xff0c;是redux的升级版。 二、为什么要用reac-redux&#xff1f; 那么我们既然有了redux&#xff0c;为什么还要用react-redux呢&#xff1f;原因如下&#xff1a; 1&#xff0c;解决了每个组件用数…

怎么才能远程控制笔记本电脑?

为什么选择AnyViewer远程控制软件&#xff1f; 为什么AnyViewer是远程控制笔记本电脑软件的首选&#xff1f;以下是选择AnyViewer成为笔记本电脑远程控制软件的主要因素。 跨平台能力 AnyViewer作为一款跨平台远程控制软件&#xff0c;不仅可以用于从一台Windows电…

数据库监控平台,数据库监控的指标有哪些--PIGOSS BSM

引言 在现代企业的信息化时代&#xff0c;数据库作为关键的数据存储和管理工具&#xff0c;扮演着至关重要的角色。然而&#xff0c;数据库的稳定性和高效性对于企业的正常运营至关重要。为了帮助企业保障数据库的运行状态&#xff0c;我们公司推出了PIGOSS BSM&#xff0c;一款…

MySql006——基本的SELECT查询语句

在《MySql003——结构化查询语言SQL基础知识》中&#xff0c;我们学习了有关SQL的基础知识&#xff0c;也知道SQL中查询语句SELECT使用最为频繁 接下来我们将学习一些基本的SELECT查询语句 一、SELECT语句的通用语法 在MySQL数据库中&#xff0c;使用SELECT语句可以查询数据…