python自動化測試(2)-自動化基本技術原理

python自動化測試(2)

自動化基本技術原理

1   概述

在以前的文章裏面提到過:作自動化的首要本領就是要會 透過現象看本質 ,落實到實際的IT工做中就是 透過界面看數據html

掌握上面的這樣的本領可不是容易的事情,必需要有紮實的計算機理論基礎,才能看到深層次的本質東西。python

 

PS:linux

本文已經收入合集:《基於python的互聯網軟件測試開發(自動化測試)-全集合》,歡迎訪問的查看:git

基於Python的互聯網軟件測試開發github

2   應用軟件邏輯結構

數據庫應用系統 多是最典型的網絡應用程序了,關於它的軟件架構以下:web

通常在邏輯上分爲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交互,支持強大的腳本編寫,對於實現自動化是頗有幫助的。

(未完,待續。。。)

後續將開始繼續書寫 python的自動化工具和編程應用了。


做者: Harmo哈莫
做者介紹: https://zhengwh.github.io
技術博客: http://www.cnblogs.com/beer
Email: dreamzsm@gmail.com
QQ: 1295351490
時間: 2015-11
版權聲明: 歡迎以學習交流爲目的讀者隨意轉載,可是請 【註明出處】
支持本文: 若是文章對您有啓發,能夠點擊博客右下角的按鈕進行 【推薦】
相關文章
相關標籤/搜索