【5.21】六、自动化测试—概述

news2024/11/26 14:54:29

目录

6.1 自动化测试概述

6.1.1 什么是自动化测试

6.1.2 自动化测试的基本流程

6.1.3 自动化测试实施策略

6.1.4 自动化测试的优势和劣势


测试中的许多操作都是重复性的、非智力性的和非创造性的,但要求工作准确细致,此时计算机最适合代替人工去完成这样的工作。

软件自动化测试是为代替手工测试而产生的,它将自动化工具和技术应用于软件测试,旨在减少测试工作的手工重复性,以更快、更少的工作量构建质量更好的软件。

6.1 自动化测试概述

6.1.1 什么是自动化测试

自动化测试,是指把以人为驱动的测试行为转化为机器执行的过程。

通常情况下,引入自动化测试需要满足以下条件

  • (1)项目需求变动不频繁
  • (2)项目周期足够长
  • (3)自动化测试脚本可重复使用
  • 另外,在手工测试无法完成,需要投入大量时间与人力时也需要考虑引入自动化测试。比如性能测试、配置测试、大数据量输入测试等。

6.1.2 自动化测试的基本流程

 

1. 分析测试需求:测试需求其实就是测试目标,也可以看作是自动化测试的功能点。

2. 制订测试计划:明确测试对象、测试目的、测试的项目内容、测试的方法。此外,要合理分配好测试人员以及测试所需要的硬件、数据等资源。

3. 设计测试用例:要考虑到软件的真实使用环境,例如对于性能测试、安全测试,需要设计场景模拟真实环境以确保测试真实有效。

4. 搭建测试环境:自动化测试的脚本编写需要录制页面控件、添加对象。测试环境的搭建,包括被测系统的部署、测试硬件的调用、测试工具的安装和设置、网络环境的布置等。

5. 编写并执行测试脚本:公共测试框架确立后,可进入脚本编写的阶段,根据自动化测试计划和测试用例编写自动化测试脚本。

6. 分析测试结果、记录测试问题:如果软件缺陷真实存在,则要记录问题并提交给开发人员修复,如果不是系统缺陷,就检查自动化测试脚本或者测试环境。

7. 跟踪测试Bug:测试发现的Bug要记录到缺陷管理工具中去,以便定期跟踪处理。

6.1.3 自动化测试实施策略

金字塔测试策略要求在3个不同级别进行自动化测试:

最底部的单元测试占据了自动化测试的最大百分比,其次是接口测试和UI测试。将自动化测试重点工作放在单元测试和接口测试阶段有助于加快项目整体开发进度,减少后期开发和测试的成本。

(1)单元测试:单元测试要求在开发中对每个功能模块(函数、类方法)进行测试,如检测其中某一项功能是否按预期要求正常运行。

(2)接口测试:接口测试要求对数据传输、数据库性能等进行测试,从而保证数据传输以及处理的完整性。

(3)UI测试UI测试以用户体验为主,软件的所有功能都是通过这一层展示给用户的,因此UI测试的工作也很重要。

6.1.4 自动化测试的优势和劣势

自动化测试只是众多测试中的一种,并不比人工测试更高级更先进。

和人工测试相比,自动化测试有一定的优势和劣势:

1. 优势

(1)自动化测试具有一致性和重复性的特点,而且测试更客观,提高了软件测试的准确度、精确度和可信任度。

(2)自动化测试可以将任务自动化,能够解放人力去做更重要的工作。

(3)自动化测试只需要部署好相应的场景,如高度复杂使用场景、海量数据交互、动态响应请求等,测试就可以在无人值守的状态下自动进行,并对测试结果进行分析反馈;手工测试很难实现复杂的测试。

(4)自动化测试可以模拟复杂的测试场景完成人工无法完成的测试,如负载测试、压力测试等。

(5)软件版本更新迭代后需要进行回归测试,自动化测试有助于创建持续集成环境,使用新构建的测试环境快速进行自动化测试。

2. 劣势

(1)相对手工测试,自动化测试对测试团队的技术有更高的要求。

(2)自动化测试无法完全替代人工测试找到Bug,也不能实现100%覆盖。

(3)自动化测试脚本的开发需要花费较大的时间成本,错误的测试用例会导致资源的浪费和时间投入。

(4)产品的快速迭代。自动化测试脚本将不断迭代,时间成本很高。

(5)自动化测试能提高测试效率,却不能保证测试的有效性。即使设计的测试用例覆盖率比较高,也不能保证被测试的软件质量会更优。

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

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

相关文章

SpringBoot2.6.3集成ElasticSearch7.13.4详解,上下两篇,上篇集群配置,下篇集成配置(上)

一、集群配置准备 (1)方式一,从网盘下载ElasticSearch7.13.4 链接: https://pan.baidu.com/s/1vwUu1kbpCc5exkfOPgb29g 提取码: thn5 (2)方式二,从官网下载 https://www.elastic.co/cn/downloads/past-…

【C++学习】C++11——lambda表达式 | 可变参数模板 | 包装器

🐱作者:一只大喵咪1201 🐱专栏:《C学习》 🔥格言:你只管努力,剩下的交给时间! lambda表达式 | 可变参数模板 | 包装器 🏀lambda表达式🥎lambda表达式语法&am…

汇编十一、汇编实现外部中断

1、实现目的 (1)实现8颗LED灯呈流水灯依次被点亮;静态数码管通过按键按下,显示数值发生改变,通过按键依次显示0-9。 (2)按键检测采用外部中断检测。 2、原理图及硬件连接 2.1、LED灯 (1)51单片机P1端口接八个共阴极LED灯,即I…

【python之django1.11框架二】django ORM 操作MySQL的基本操作

1. django 连接数据库(MySQL) # setting.py 文件 # 默认用的是sqkite3 DATABASES {default: {ENGINE: django.db.backends.sqlite3,NAME: os.path.join(BASE_DIR, db.sqlite3),} }# django链接MySQL 1.第一步配置文件中配置 DATABASES {default: {ENGINE: django.db.backend…

RocketMQ 消息发送、消息类别

一、消息发送 1.1 单生产者单消费者消息发送&#xff08;OneToOne&#xff09; 1、新建maven项目recketmqtest 2、导入RocketMQ客户端坐标 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId><…

chatgpt赋能Python-pythonbug

Python Bug: 了解并避免Python编程中的错误 在编程中遇到错误是件非常常见的事情&#xff0c;Python编程也不例外。在Python中&#xff0c;被称为“bug”的错误主要分为两种&#xff0c;编译错误和运行时错误。本文将向您介绍如何识别、调试和避免Python编程中的错误&#xff…

Windi CSS 原子css 下一代工类 CSS 框架

最近由于项目原因接触到了windi Css 发现这个东西真是绝绝子啊,不用在代码里写一行style,完全以类的形式去写样式,它里面包含了几乎所有的css样式&#xff0c;可以让我们不需要再去繁琐的写css样式&#xff0c;原来几行的css现在只需要短短的几个字符。他的许多新特性给我们带来…

《算法竞赛进阶指南》(持续更新ing)

算法竞赛进阶指南 位运算 AcWing 89. a^b #include<iostream> using namespace std;int main(void) {long long a,b,p;cin>>a>>b>>p;long long ans1%p;while(b){if(b&1)//判断b当前二进制位是否为1{ansans*a%p;}aa*a%p;//每跨越一个二进制位&…

用WaveNet预测(Adapted Google WaveNet-Time Series Forecasting)

目录 剧情简介: 数据来源 加载数据 分割数据和可视化 时间序列的多元波网模型:实现(多步预测) 创建模型 创建数据集 数据准备 1- Training dataset preparation 2- Validation dataset preparation Train the Model with TPU: 使用经过训练的适应Google WaveNet预测…

【多线程】| 基本知识汇总

目录 &#x1f981; 掌握基本概念1. 什么是线程&#xff1f;2. 什么是主线程以及子线程&#xff1f;3. 什么是串行&#xff1f;什么是并行&#xff1f; 什么是并发? &#x1f981; 线程的创建1. 通过继承Thread类实现多线程2. 通过Runnable接口实现多线程 &#x1f981; 线程执…

AI故事:智慧学校的人脸识别奇幻之旅

人脸识别 在一个名为智慧学校的小镇上&#xff0c;生物老师Rita和她的丈夫朝哥&#xff0c;一个富有创造力的艺术家&#xff0c;过着幸福美满的生活。他们的家庭与学校紧密相连&#xff0c;成为了一座小小的教育乐园。 智慧学校里有一群充满朝气的学生&#xff0c;其中小枣是…

自定义属性,v-bind computed的使用

0.0 自定义组件的使用 【掌握】 先自定义自己的组件 引入组件 import 组件名 from 路径/文件名 注册组件 <script> export default {components:{ // 组件注册组件名:组件名&#xff0c;组件名1},data(){ // 数据return {}},methods:{ // 方法} ​ } ​ </script&…

buu [AFCTF2018]MyOwnCBC 1

题目描述&#xff1a; 三份文件 #!/usr/bin/python2.7 # -*- coding: utf-8 -*-from Crypto.Cipher import AES from Crypto.Random import random from Crypto.Util.number import long_to_bytesdef MyOwnCBC(key, plain):if len(key)!32:return "error!"cipher_t…

lwIP更新记03:IPv6

从 lwIP-2.0.0 开始&#xff0c;lwIP 终于有可用的 IPv6 协议栈了&#xff01;IPv6 支持 双栈&#xff08;IPv4 和 IPv6 同时使用&#xff09; 或 IPv4/IPv6 二选一 模式。 lwIP-1.4.1 版本也有 IPv6&#xff0c;但那是实验性质的&#xff08;见…\lwip-1.4.1\src\core\ipv6目…

linux专题:嵌入式linux系统启动流程基础分析

目录 第一&#xff1a;linux内核源码基本简介 第二&#xff1a;uboot启动分析 第三&#xff1a;内核源码分析 第一&#xff1a;linux内核源码基本简介 下载 Linux 内核网址&#xff1a; https://www.kernel.org/ 最新 Linux 内核是 5.15 版本。现在常用 Linux 内核源码为4…

八大排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序、基数排序

目录 前言 直接插入排序&#xff08;Insertion Sort&#xff09; 一、概念及其介绍 二、过程图示 三、代码 四、复杂度 希尔排序&#xff08;Shell Sort&#xff09; 一、概念 二、实现思路 三、图示过程 四、代码 4.1代码 4.2运行结果 4.3解释 五、复杂度 堆排…

路径规划算法:基于蝙蝠算法的路径规划算法- 附代码

路径规划算法&#xff1a;基于蝙蝠的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于蝙蝠的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法蝙蝠算法来进…

Swift 如何闪电般异步读取大文件?

功能需求 Apple 系统中&#xff08;iOS、MacOS、WatchOS等等&#xff09;读取文件是一个平常的不能再平常的需求&#xff0c;不过当文件很大时&#xff0c;同步读取文件会导致 UI 的挂起&#xff0c;这是不能让用户接受的。 所以&#xff0c;要想读取文件内容的同时保持界面操…

KMP算法及其改进图文详解

文章目录 KMP算法详解什么是KMP算法KMP算法的应用场景KMP算法和暴力求解的比较字符串的前缀、后缀和最长相等前后缀KMP算法实现字符串匹配的具体过程&#xff08;图解&#xff09;从串与主串的下标变化j回退的位置(从串的下标变化)主串的下标变化 Next数组如何运用代码逻辑计算…

[CTF/网络安全] 攻防世界 xff_referer 解题详析

[CTF/网络安全] 攻防世界 xff_referer 解题详析 XFF及refererXFF格式referer格式姿势总结 题目描述&#xff1a;X老师告诉小宁其实xff和referer是可以伪造的。 XFF及referer X-Forwarded-For&#xff08;简称 XFF&#xff09;是一个 HTTP 请求头部字段&#xff0c;它用于表示 …