HTTPS : //www.cnblogs.com/beer/p/5011776.html이 문서에서 온다
1 개요
내부의 이전 기사에서 언급 : 가장 중요한 일을 할 수있는 기능이 자동화 될 것입니다 넘어 봐 IT 작업의 실제 구현되는, 인터페이스를 통해 데이터를 볼 수 .
위를 마스터하는이 기능은 쉬운 일이 아니다, 당신은 사물의 뿌리 깊은 성격을 볼 탄탄한 이론적 기반 컴퓨터가 있어야합니다.
추신:
이 문서에서는 수익 컬렉션이 있습니다 : "파이썬 (테스트 자동화)의 인터넷 기반 소프트웨어 개발 테스트 - 전체 모음"보기에 오신 것을 환영합니다 :
어플리케이션 2 논리 구조
데이터베이스 응용 프로그램 시스템은 아마도 가장 일반적인 네트워크 응용 프로그램이며, 그 소프트웨어 아키텍처에 다음과 같습니다 :
일반적으로 논리적으로 4 개 개의 레이어로 나누어 :
-
- 사용자 인터페이스 층 UI
-
대화 형 인간 - 기계 인터페이스와 최종 사용자를 제공합니다
-
- 비즈니스 로직 계층 BLL
-
조직의 데이터베이스 특정 비즈니스 로직 객체로 접합 추상화 객체 및 프로세스
-
- 데이터 액세스 계층 DAL
-
DB 층, ORM을 할 수 있도록 데이터베이스 개체를 조작하는 방식으로 상위 응용 프로그램
-
- DB 데이터 지속성
-
데이터 저장, 데이터 지속성, 다른 클라이언트 데이터 공유
종래에는 C / S 애플리케이션 프레임 워크 (윈도우 아래에 예를 들어, 클라이언트 애플리케이션), 일반적으로 중앙 데이터베이스 서버 (이하 DB ) 다음 N (에 대응하는 클라이언트 국 DAL - 더 BLL-인터페이스 ).
를 들어 차 테스터 , 그것은 단지에 머물 수있는 소프트웨어를 이해하는 것이 가능하다 UI의 계층을, 그래서 테스트를 수행 할 수 있습니다 때 일 : 날마다, 해마다, 마우스로 작은 포인트 가.
3 인터넷 소프트웨어 아키텍처
에서 비록 그가 언급 응용 프로그램의 앞 부분의 기본 아키텍처 "C의 / S" 시대를 제시하지만, 다시는 현재까지 계속되고있다. 오늘까지, 가장 인기있는 "ABC / S" 모드 :
- 앱 / 서버
- 브라우저 / 서버
- 클라이언트 서버
사실, 본질적으로 서버 측에서 클라이언트 UI의 UI를이 레이어를 넣어.
다른 플랫폼에서 클라이언트는 소위의 형성에 지금 인기있는 다른 형태가 "ABC / S" 아키텍처 모델을, 이것은 기본적으로 현재의 인터넷은 제품의 표준이되었습니다입니다. 다음과 같이 구체적인 구조는 다음과 같습니다
서버와 클라이언트 사이에 고용 HTTP / HTTPS 데이터 교환 포맷을위한 통신 프로토콜 XML / JSON의 형식.
위의 모델 후, 소프트웨어 테스트 방법이 일부 변경했을 것이다 :
- 하여 경제적 최고 "통신 인터페이스 테스트에 기초하여 인코딩 형식"해결 될 수있는 일의 20 % 내지 80 %를 소비 속하는
- , 높은 효율의 사용은 통합 스크립팅 언어 인터페이스 테스트 자동화하지만 강제적이지, 개발 프로젝트가 동일한 언어를 사용 할 수있다 할 수있다
- 인터페이스 안정성이 천연 수요 때문에 자동화 프로젝트는 바이올린 현상이 존재하지 않습니다
- 테스터 사이의 인터페이스는 많은 플랫폼이 될 심판
- 接口规范来自设计文档,可以实行 设计产生测试,测试驱动开发 的规范模式
有了抽象成数据的能力之后,那么很多看到的东西就可以进行合理的等价转换了:
-
- web页面背景的是红色
-
等价于:背景元素的background的颜色属性是 #FF0000
-
- 按钮上显示的字为"Submit"
-
等价于:按钮元素的value值为 Submit
-
- 用户执行一次充值活动充了20块钱,他的账号上就多了20元
-
等价于:以20为参数调用充值接口,再对比前后两次调用账号查询的接口,相差刚好是充值的参数值
在数据层次编程进行比较就变得很容易了,因为这些都是计算机擅长处理的领域了,自动化也很自然地实现了。
4 更底层的原理
前面讲到了对把软件项目从看到的具体的界面往底层一点抽象成数据的方法。其实还有一些更底层,更绝的,对软件的数据还可以更底层一点和物理世界建立关联(这已经不好用“抽象”或者“具象”来描述了)。
本部分的内容,已经和应用软件的测试的话题有点扯远了,纯粹就当科普吧。
从更广泛的角度来看一个计算机系统,它给人的体验上本质上是做了如下的处理:
人的所有的直观体验都是来自于对模拟量(物理量)的体验,人的交互输入也是来自于模拟量的输入。
人敲击键盘向计算机系统输入文字,键盘将不同一键位产生的脉冲电流传入计算机系统,计算机系统通过芯片和驱动,将这些电流信号转化成数字信号,然后交付数字芯片处理。这样人就完成了 信息的输入 。
计算机系统对这些数据进行计算,存储,传输等等,最后在LCD显示器上通过点亮不同位置的点阵,以形成光学的模拟量输出,传送到人的眼睛里面,人就完成了 信息的获取 。
以上的例子可以简化为:力学物理量产生电学物理量进行输入,计算机数字系统处理后,光学物理量进行输出。
对于计算机系统,输入和输出都是多样的:
-
- 输入装置
-
各种传感器都可以作为输入的主力,比如现在蓬勃发展的智能硬件,以及炒得火热的 物联网。
-
- 输出装置
-
除了光学的LCD显示器,还有声学的扩音器,还有滚动的轮式机械力学,还有人形走路的机械手臂力学设备。
这些东西都已经是现在互联网行业很流行的元素了。
由于电子技术和通讯领域往往检测的都是物理量,肉眼是很难量化的,所以测试门槛会很高,但是各种检测仪器反而发展得相当好,自动化程度相当高。反观IT行业的上层的应用软件层,人却都过多的依赖于人工去操作,肉眼去观察了,反而忽视了自动化,导致测试行业一直人员素质不高,技术实力太弱,这显然是很不可取的,至少是很不符合目前软件工程行业的时代需求的。
5 小结
本文对应用软件进行了逻辑上的分层,来阐述了软件自动化测试和基本原理,在文章的后半部分对目前流行的 智能硬件 所涉及的电子技术的自动化测试也进行了简单的探讨,希望能够给从来 自动化测试的人也有一点启发。
后面的系列文章将从技术层次来落地这些理论。
总结起来,对于想入这行而且想有深入发展的人,有如下几个结论和建议:
- 软件的本质不是界面而是数据
- 要了解软件的本质,必须必须要有良好的计算机基础
- 从事互联网行业的人可以熟悉linux,尽早建立这种 软件即数据 的世界观
- 接口做自动化测试是最投入回报比最高的(来自Google的工程师的观点)
- 要想做好自动化测试,必须有软件开发能力和系统的设计能力
写到这里,最后容我 “安利” 一下 Linux ,因为相比 MacOS 和 Windows 系统,Linux 在界面这一块做得不太好,但是却有强大的CLI交互,支持强大的脚本编写,对于实现自动化是很有帮助的。