在以前的文章里面提到过:作自动化的首要本领就是要会 透过现象看本质 ,落实到实际的IT工做中就是 透过界面看数据。html
掌握上面的这样的本领可不是容易的事情,必需要有扎实的计算机理论基础,才能看到深层次的本质东西。python
PS:linux
本文已经收入合集:《基于python的互联网软件测试开发(自动化测试)-全集合》,欢迎访问的查看:git
基于Python的互联网软件测试开发github
数据库应用系统 多是最典型的网络应用程序了,关于它的软件架构以下:web
通常在逻辑上分为4层:数据库
为终端用户提供交互的人机界面编程
将数据库抽象出来的对象进行拼接成具体的业务逻辑对象,并对之进行流程组织服务器
对DB层作的ORM,让上层应用程序以对象的方式操控数据库网络
存储数据,对数据进行持久化,不一样的客户端进行数据共享
在传统的 C/S 架构下应用程序(例如,Windows下的客户端应用程序),通常都是一台中央数据库服务器( DB ),而后对应N台客户端(DAL-BLL-UI )。
对于 初级测试人员 来讲,可能对软件的理解只能停留在 UI 层,因而在测试时候能作到的事情就是:日复一日,年复一年地用鼠标 点点点了。
在前一部分里面提到的应用软件的基本架构,虽然是在 “C/S” 时代提出来的,可是后面却一直延续到如今 。直到今天最广泛的 “ABC/S” 模式:
其实本质上就把UI这一层放在客户端,把UI如下放在Server端。
客户端在不一样的平台下面有不一样的表现形式,就造成了如今流行的所谓的 “ABC/S” 模式的架构,这个基本上已经成为目前的互联网产品的标配了。具体的架构以下:
服务器端和客户端之间采用 Http/Https 的通信协议,数据交换的格式为 Xml/Json 格式。
基于以上模式以后,软件测试的方法论就发生了一些变化:
有了抽象成数据的能力以后,那么不少看到的东西就能够进行合理的等价转换了:
等价于:背景元素的background的颜色属性是 #FF0000
等价于:按钮元素的value值为 Submit
等价于:以20为参数调用充值接口,再对比先后两次调用帐号查询的接口,相差恰好是充值的参数值
在数据层次编程进行比较就变得很容易了,由于这些都是计算机擅长处理的领域了,自动化也很天然地实现了。
前面讲到了对把软件项目从看到的具体的界面往底层一点抽象成数据的方法。其实还有一些更底层,更绝的,对软件的数据还能够更底层一点和物理世界创建关联(这已经很差用“抽象”或者“具象”来描述了)。
本部分的内容,已经和应用软件的测试的话题有点扯远了,纯粹就当科普吧。
从更普遍的角度来看一个计算机系统,它给人的体验上本质上是作了以下的处理:
人的全部的直观体验都是来自于对模拟量(物理量)的体验,人的交互输入也是来自于模拟量的输入。
人敲击键盘向计算机系统输入文字,键盘将不一样一键位产生的脉冲电流传入计算机系统,计算机系统经过芯片和驱动,将这些电流信号转化成数字信号,而后交付数字芯片处理。这样人就完成了 信息的输入 。
计算机系统对这些数据进行计算,存储,传输等等,最后在LCD显示器上经过点亮不一样位置的点阵,以造成光学的模拟量输出,传送到人的眼睛里面,人就完成了 信息的获取 。
以上的例子能够简化为:力学物理量产生电学物理量进行输入,计算机数字系统处理后,光学物理量进行输出。
对于计算机系统,输入和输出都是多样的:
各类传感器均可以做为输入的主力,好比如今蓬勃发展的智能硬件,以及炒得火热的 物联网。
除了光学的LCD显示器,还有声学的扩音器,还有滚动的轮式机械力学,还有人形走路的机械手臂力学设备。
这些东西都已是如今互联网行业很流行的元素了。
因为电子技术和通信领域每每检测的都是物理量,肉眼是很难量化的,因此测试门槛会很高,可是各类检测仪器反而发展得至关好,自动化程度至关高。反观IT行业的上层的应用软件层,人却都过多的依赖于人工去操做,肉眼去观察了,反而忽视了自动化,致使测试行业一直人员素质不高,技术实力太弱,这显然是很不可取的,至少是很不符合目前软件工程行业的时代需求的。
本文对应用软件进行了逻辑上的分层,来阐述了软件自动化测试和基本原理,在文章的后半部分对目前流行的 智能硬件 所涉及的电子技术的自动化测试也进行了简单的探讨,但愿可以给历来 自动化测试的人也有一点启发。
后面的系列文章将从技术层次来落地这些理论。
总结起来,对于想入这行并且想有深刻发展的人,有以下几个结论和建议:
写到这里,最后容我 “安利” 一下 Linux ,由于相比 MacOS 和 Windows 系统,Linux 在界面这一块作得不太好,可是却有强大的CLI交互,支持强大的脚本编写,对于实现自动化是颇有帮助的。
(未完,待续。。。)
后续将开始继续书写 python的自动化工具和编程应用了。
做者: | Harmo哈莫 |
---|---|
做者介绍: | https://zhengwh.github.io |
技术博客: | http://www.cnblogs.com/beer |
Email: | dreamzsm@gmail.com |
QQ: | 1295351490 |
时间: | 2015-11 |
版权声明: | 欢迎以学习交流为目的读者随意转载,可是请 【注明出处】 |
支持本文: | 若是文章对您有启发,能够点击博客右下角的按钮进行 【推荐】 |