python自动化测试(2)-自动化基本技术原理

news2024/12/26 0:28:33

1   概述

在之前的文章里面提到过:做自动化的首要本领就是要会 透过现象看本质 ,落实到实际的IT工作中就是 透过界面看数据

掌握上面的这样的本领可不是容易的事情,必须要有扎实的计算机理论基础,才能看到深层次的本质东西。

2   应用软件逻辑结构

数据库应用系统 可能是最典型的网络应用程序了,关于它的软件架构如下:

如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386 

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337&vd_source=488d25e59e6c5b111f7a1a1a16ecbe9a

一般在逻辑上分为4层:

  1. 用户界面层 UI

    为终端用户提供交互的人机界面

  2. 业务逻辑层 BLL

    将数据库抽象出来的对象进行拼接成具体的业务逻辑对象,并对之进行流程组织

  3. 数据访问层 DAL

    对DB层做的ORM,让上层应用程序以对象的方式操控数据库

  4. 数据持久层 DB

    存储数据,对数据进行持久化,不同的客户端进行数据共享

在传统的 C/S 架构下应用程序(例如,Windows下的客户端应用程序),一般都是一台中央数据库服务器( DB ),然后对应N台客户端(DAL-BLL-UI )。

对于 初级测试人员 来说,可能对软件的理解只能停留在 UI 层,于是在测试时候能做到的事情就是:日复一日,年复一年地用鼠标 点点点了。

3   互联网软件架构

在前一部分里面提到的应用软件的基本架构,虽然是在 “C/S” 时代提出来的,但是后面却一直延续到现在 。直到今天最普遍的 “ABC/S” 模式:

  • App/Server
  • Browser/Server
  • Client/Server

其实本质上就把UI这一层放在客户端,把UI以下放在Server端。

客户端在不同的平台下面有不同的表现形式,就形成了现在流行的所谓的 “ABC/S” 模式的架构,这个基本上已经成为目前的互联网产品的标配了。具体的架构如下:

服务器端和客户端之间采用 Http/Https 的通讯协议,数据交换的格式为 Xml/Json 格式。

基于以上模式之后,软件测试的方法论就发生了一些变化:

  • 有了 性价比 最高的“基于于通讯编码格式的接口测试”,属于花20%就能解决80%的工作
  • 接口测试完全可以进行自动化,而且不必强制和开发项目使用相同的语言,可以统一使用效率较高的脚本语言
  • 接口 天然就具有稳定性的需求,所以自动化测试项目不会存在反复折腾的现象
  • 接口测试人员成为了众多平台之间的 裁判员
  • 接口规范来自设计文档,可以实行 设计产生测试,测试驱动开发 的规范模式

有了抽象成数据的能力之后,那么很多看到的东西就可以进行合理的等价转换了:

  1. web页面背景的是红色

    等价于:背景元素的background的颜色属性是 #FF0000

  2. 按钮上显示的字为"Submit"

    等价于:按钮元素的value值为 Submit

  3. 用户执行一次充值活动充了20块钱,他的账号上就多了20元

    等价于:以20为参数调用充值接口,再对比前后两次调用账号查询的接口,相差刚好是充值的参数值

在数据层次编程进行比较就变得很容易了,因为这些都是计算机擅长处理的领域了,自动化也很自然地实现了。

4   更底层的原理

前面讲到了对把软件项目从看到的具体的界面往底层一点抽象成数据的方法。其实还有一些更底层,更绝的,对软件的数据还可以更底层一点和物理世界建立关联(这已经不好用“抽象”或者“具象”来描述了)。

本部分的内容,已经和应用软件的测试的话题有点扯远了,纯粹就当科普吧。

从更广泛的角度来看一个计算机系统,它给人的体验上本质上是做了如下的处理:

人的所有的直观体验都是来自于对模拟量(物理量)的体验,人的交互输入也是来自于模拟量的输入。

人敲击键盘向计算机系统输入文字,键盘将不同一键位产生的脉冲电流传入计算机系统,计算机系统通过芯片和驱动,将这些电流信号转化成数字信号,然后交付数字芯片处理。这样人就完成了 信息的输入 。

计算机系统对这些数据进行计算,存储,传输等等,最后在LCD显示器上通过点亮不同位置的点阵,以形成光学的模拟量输出,传送到人的眼睛里面,人就完成了 信息的获取 。

以上的例子可以简化为:力学物理量产生电学物理量进行输入,计算机数字系统处理后,光学物理量进行输出。

对于计算机系统,输入和输出都是多样的:

  • 输入装置

    各种传感器都可以作为输入的主力,比如现在蓬勃发展的智能硬件,以及炒得火热的 物联网

  • 输出装置

    除了光学的LCD显示器,还有声学的扩音器,还有滚动的轮式机械力学,还有人形走路的机械手臂力学设备。

这些东西都已经是现在互联网行业很流行的元素了。

由于电子技术和通讯领域往往检测的都是物理量,肉眼是很难量化的,所以测试门槛会很高,但是各种检测仪器反而发展得相当好,自动化程度相当高。反观IT行业的上层的应用软件层,人却都过多的依赖于人工去操作,肉眼去观察了,反而忽视了自动化,导致测试行业一直人员素质不高,技术实力太弱,这显然是很不可取的,至少是很不符合目前软件工程行业的时代需求的。

5   小结

本文对应用软件进行了逻辑上的分层,来阐述了软件自动化测试和基本原理,在文章的后半部分对目前流行的 智能硬件 所涉及的电子技术的自动化测试也进行了简单的探讨,希望能够给从来 自动化测试的人也有一点启发。

后面的系列文章将从技术层次来落地这些理论。

总结起来,对于想入这行而且想有深入发展的人,有如下几个结论和建议:

  • 软件的本质不是界面而是数据
  • 要了解软件的本质,必须必须要有良好的计算机基础
  • 从事互联网行业的人可以熟悉linux,尽早建立这种 软件即数据 的世界观
  • 接口做自动化测试是最投入回报比最高的(来自Google的工程师的观点)
  • 要想做好自动化测试,必须有软件开发能力和系统的设计能力

写到这里,最后容我 “安利” 一下 Linux ,因为相比 MacOS 和 Windows 系统,Linux 在界面这一块做得不太好,但是却有强大的CLI交互,支持强大的脚本编写,对于实现自动化是很有帮助的。

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

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

相关文章

零代码编程:用ChatGPT批量删除文件名的字符

文件夹里面的文件标题如下,后面都带有一个网址,怎么批量删除掉呢? 这样让ChatGPT编写一段Python代码: 你是一个Python编程专家,要完成一个处理批量删除文件名中字符的任务,具体步骤如下: 打开…

GO语言数据抓取代码示例

安装Go语言的net/http和io/ioutil包,这两个包是爬虫程序的基础。你可以使用下面的命令来安装: bash go get -u github.com/golang.org/x/net/http2 go get -u golang.org/x/net/html 然后,你可以使用下面的代码来获取爬虫信息: …

第一个ARM程序裸板点灯

硬件知识LED原理图 如何点亮一个LED灯? 看原理图,确定控制LED的引脚。看主芯片的芯片手册,确定如何设置控制这个引脚。写程序。 LED有插脚封装的、贴片封装的。 它们长得完全不一样,因此我们在原理图中把它们抽象出来。 点亮…

ESXi配置两个不同网段虚拟机互通

ESXi配置两个不同网段虚拟机互通 拓扑图: 步骤 在ESXi上新建一个虚拟交换机新建两个端口组,VLAN ID分别为30和31,添加到新建的虚拟交换机上创建两个虚拟机,网络适配器分别使用新建的端口组30和31对新建的虚拟机配置IP在物理交换…

论文阅读:LOGO-Former: Local-Global Spatio-Temporal Transformer for DFER(ICASSP2023)

文章目录 摘要动机与贡献具体方法整体架构输入嵌入生成LOGO-Former多头局部注意力多头全局注意力 紧凑损失正则化 实验思考总结 本篇论文 LOGO-Former: Local-Global Spatio-Temporal Transformer for Dynamic Facial Expression Recognition发表在ICASSP(声学顶会…

369B1860G0028 44A730240-G01 IC697ACC722B

369B1860G0028 44A730240-G01 IC697ACC722B 在NOA,一个名为MO(监控和优化)的独立领域与现有系统分开准备,数据直接从机器人、无人机和新传感器收集,例如腐蚀、声音和振动传感器。此外,现有系统中的数据通过OPC UA导入&#xff0c…

实现前后端分离开发:构建现代化Web应用

文章目录 什么是前后端分离开发?为什么要采用前后端分离开发?前后端分离的最佳实践1. 定义API2. 使用RESTful风格3. 选择适当的前端框架4. 选择合适的后端技术5. 数据交互格式6. 前端路由7. 自动化构建和部署8. 跨域问题 示例:前后端分离开发…

使用JavaScript编写的爬虫程序

这是一个使用JavaScript编写的爬虫程序,它使用了Elasticsearch和Nginx来收集和存储数据。在这个程序中,我们首先设置了代理信息,然后使用JavaScript编写了一个爬虫程序来收集数据。以下是每行代码和步骤的详细解释: // 定义代理信…

Tkinter创建菜单窗口

一、说明 本文专门记录如何添加Tkinter的菜单,包括,菜单如何生成,菜单如何布局,菜单如何绑定回调函数,并安排代码示例,凡期望做菜单界面的读者,可以全面参考。 二、创建菜单实现步骤 2.1 总体…

2023-11笔记

1.switch空指针异常 Exception in thread "main" java.lang.NullPointerException:Cannot invoke "String.hashCode()" because "<local2>" is nullat Study5.Test03.main(Test03.java:6)我们由此可以知道&#xff0c;switch语句部分情况下…

正点原子嵌入式linux驱动开发——Linux Regmap驱动

在前面学习I2C和SPI驱动的时候&#xff0c;针对I2C和SPI设备寄存器的操作都是通过相关的API函数进行操作的。这样Linux内核中就会充斥着大量的重复、冗余代码&#xff0c;但是这些本质上都是对寄存器的操作&#xff0c;所以为了方便内核开发人员统一访问I2C/SPI设备的时候&…

每日一题 2586. 统计范围内的元音字符串数(简单)

简单题&#xff0c;走流程 class Solution:def vowelStrings(self, words: List[str], left: int, right: int) -> int:ans 0for i in range(left, right 1):if words[i][0] in aeiou and words[i][-1] in aeiou:ans 1return ans

1300*B. Big Vova(最大公约数贪心)

Problem - 1407B - Codeforces 解析&#xff1a; 显然最大的数肯定放到第一个&#xff0c;然后对于之后每一个数&#xff0c;贪心考虑让其最大公约数最大即可。 时间复杂度log(n^2logn) #include<bits/stdc.h> using namespace std; #define int long long const int N…

qt多线程例子,不断输出数字

dialog.h #include "dialog.h" #include "ui_dialog.h"Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog) {ui->setupUi(this); }Dialog::~Dialog() {delete ui; }// 启动线程按钮 void Dialog::on_startButton_clicked() {//conn…

springboot本地启动多个模块报错:Address already in use: JVM_Bind

目录 背景解决方法 背景 环境&#xff1a; jdk1.8 idea 2019.2.4idea本地启动多个模块联调时&#xff0c;提示报错&#xff1a; 错误: 代理抛出异常错误: java.rmi.server.ExportException: Port already in use: 9090; nested exception is: java.net.BindException: Addre…

vue实现商品列表,组件抽离

1.需求说明 my-tag 标签组件封装 ​ (1) 双击显示输入框&#xff0c;输入框获取焦点 ​ (2) 失去焦点&#xff0c;隐藏输入框 ​ (3) 回显标签信息 ​ (4) 内容修改&#xff0c;回车 → 修改标签信息 my-table 表格组件封装 ​ (1) 动态传递表格数据渲染 ​ (2) 表头支…

电表采集器有抗干扰的能力吗?

电表采集器作为一种数据采集和远程通讯设备&#xff0c;广泛应用于电力、能源、工业等领域。在这些环境中&#xff0c;电表采集器面临着各种各样的电磁干扰&#xff0c;如高频干扰、脉冲干扰、电磁辐射等。为了确保电表采集器的稳定运行和数据准确性&#xff0c;抗干扰能力成为…

极智AI | GPT-4 Turbo登场

欢迎关注我的公众号 [极智视界],获取我的更多经验分享 大家好,我是极智视界,本文来介绍一下 GPT-4 Turbo登场。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:https://t.zsxq.com/0aiNxERDq 今天,OpenAI 的首届开发者大会揭幕 (真的像科…

python-28-日志模块Loguru的应用

参考为什么不推荐使用Python原生日志库&#xff1f; 参考loguru&#xff0c;一个神奇的 python 库 Loguru 是一个旨在为 Python 带来愉快的日志记录的库&#xff0c;它可以完全增强你的日志记录体验&#xff0c;并且非常易于使用。 对logging及Loguru进行使用对比。 1 Loguru的…

L4级自动驾驶前装量产车型来了,小马智行与丰田联合打造

11月5日&#xff0c;小马智行与丰田汽车联合发布的首款纯电自动驾驶出租车&#xff08;Robotaxi&#xff09;概念车在第六届进博会亮相&#xff0c;该车型基于广汽丰田生产的bZ4X纯电车辆平台打造&#xff0c;将搭载小马智行研发的第七代L4级自动驾驶乘用车软硬件系统。 今年8月…