1   概述

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

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

2   应用软件逻辑结构

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

一般在逻辑上分为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的工程师的观点)
  • 要想做好自动化测试,必须有软件开发能力和系统的设计能力

最后:下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】

python自动化测试——自动化基本技术原理相关推荐

  1. python自动化和教程_python自动化基本技术原理

    python自动化测试(2) 自动化基本技术原理 1 概述 在之前的文章里面提到过:做自动化的首要本领就是要会 透过现象看本质 ,落实到实际的IT工作中就是 透过界面看数据. 掌握上面的这样的本领可不 ...

  2. python自动化流程概念_【测码学院】python自动化测试-自动化指的是什么

    测码学院  python自动化测试-自动化指的是什么 有很多人做了很长时间的自动化但却连自动化的概念都不清楚,这样的人也是很悲哀,做这样的职业,却连最基本的概念都不清楚.我给大家列举出来如下: 自动化 ...

  3. web python selenium自动化面试题_干货分享 | Selenium 自动化测试相关的面试题

    网上收集到的一些有关Selenium自动化相关的面试,给出的答案仅供参考. 1.Selenium中用什么函数判断元素是否存在? isElementPresent 2.Selenium中hidden或者 ...

  4. 自动化专业学python如何_如何系统有效学习 Python 自动化测试?

    如果你恰好刚刚进入一家新公司,领导一上来就让你开展自动化测试,作为一名初出茅庐的测试新人,除了手足无措,你只能默默慨叹自己能力尚欠,眼前只会出现一个又一个无从下手的问题:作为手工测试,如何营造机会和环 ...

  5. Python自动化-APPium原理解析与实际测试案例分享

    目录结构 一.Appium概述 Appium架构原理 运行原理 1)Appium服务器 2)Bootstrap.jar 3)Appium客户端 二.Appium组件 三.Appium环境搭建 Node ...

  6. 用python做自动化测试仪器_使用python进行windows自动化测试(1)

    最近开始学习整理python在windows自动化测试中的使用,觉得挺有意思的 主要思路,在windows下,主要通过启进程,然后查找进程的句柄,然后再操作这个句柄,包括点击,填写文字,关闭,获取文字 ...

  7. 【Python自动化测试32】App自动化环境搭建

    文章目录 一.前言 二.安装与环境搭建教学 2.1 环境依赖 2.2 appium程序安装 2.3 appium-python-client 2.4 模拟器安装 2.5 java jdk安装 2.6 ...

  8. python自动化办公实例-python自动化测试实例解析

    本文实例讲述了python自动化测试的过程,分享给大家供大家参考. 具体代码如下: import unittest ########################################## ...

  9. python自动化测试学习笔记合集

    python自动化测试学习笔记-1 一.什么是自动化 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程.直白的就是为了节省人力.时间或硬件资源,提高测试效率,便引入了通过软件或程序自动化执行 ...

最新文章

  1. pytorch 驱动不兼容_解决Pytorch 加载训练好的模型 遇到的error问题
  2. cpu,内核和逻辑处理器的关系
  3. SQL Server 2008将数据导出为脚本 [SQL Server]
  4. 主流云服务器购买平台
  5. 微信抢红包的方案_免费公开实收20000的烤鸭店营销方案,餐饮行业可复用
  6. 前端学习(2323):angular文件介绍
  7. Success Rate CodeForces - 807C (数学+二分)
  8. [转载][QT][SQL]sql学习记录3_sqlite之update delete like
  9. python工作岗位要求_Python就业:Python就业岗位职能要求解析
  10. PHP占用内存越来越多,解决phpQuery占用内存过多的问题
  11. css中hover的妙用!!
  12. 在vs2008工程中制作cab包
  13. python中出现UserWarning: libuv only supports millisecond timer resolution怎么解决
  14. java程序员需要掌握的知识,看完直接跪服
  15. 可编程接口芯片8255A
  16. 如何加载和保存AutoCAD DXF文件(四参数法)
  17. C语言——判断一个数字是否为质数(素数)!
  18. 卖身百度,是知乎最好的结局?
  19. elementui实现横向时间轴_element ui step组件在另一侧加时间轴显示
  20. 数据库入口和密码:维普、万方和cnki(转)

热门文章

  1. echarts中markline移动,x轴绘制俩条垂直移动线
  2. mysql基础 Task04:集合运算
  3. Hadoop的十大应用场景
  4. 跑步膝盖疼?(预防及处理方法)
  5. 【计算机科学基础】大数据的特点
  6. 【华为OD机试真题 Java】最左侧冗余覆盖子串(100%通过+全网最详细注释)
  7. 转---工作两年后感悟的《大话西游》
  8. 思科网络设备console,Telnet等设置
  9. Ubuntu 20.04 系统备份和还原
  10. VulnHub—HA-Avengers Arsenal