在之前的文章裡面有提到:做自動化的首要本領就是要會 透過現像看本質 ,落實到實際的IT工作中就是 透過介面看資料。
掌握上面的這樣的本領可不是容易的事情,必須要有紮實的電腦理論基礎,才能看到深層的本質東西。
資料庫應用系統 可能是最典型的網路應用程式了,關於它的軟體架構如下:
一般在邏輯上分為4層:
使用者介面層UI
#為終端使用者提供互動的人機介面
#業務邏輯層BLL
將資料庫抽象化的物件進行拼接成具體的業務邏輯對象,並對之進行流程組織
資料存取層DAL
對DB層做的ORM,讓上層應用程式以物件的方式操控資料庫
C/S 架構下應用程式(例如,Windows下的用戶端應用程式),通常都是一個中央資料庫服務器( DB ),然後對應N台客戶端(DAL-BLL-UI )。
對於初級測試人員 來說,可能對軟體的理解只能停留在 UI 層,於是測試時候能做到的事情是:日復一日一天,年復一年地用滑鼠 點點點了。
「C/S」 時代提出來的,但後面卻一直延續到現在。直到今天最普遍的 “ABC/S” 模式:
App/Server
##其實基本上就把UI這一層放在客戶端,把UI以下放在Server端。
「ABC/S」
模式的架構,這個基本上已經成為目前的互聯網產品的標配了。特定的架構如下:
伺服器端與用戶端之間採用 Http/Https
的通訊協議,資料交換的格式為#Xml/Json 格式。 基於上述模式之後,軟體測試的方法論就發生了一些變化:
有了介面測試人員成為了眾多平台之間的
介面規格來自設計文檔,可以實行
有了抽象化成資料的能力之後,那麼很多看到的東西就可以進行合理的等價轉換了:
#web頁面背景的是紅色
#等價於:背景元素的background的顏色屬性是 #FF0000
#按鈕上顯示的字為"Submit"
等價於:按鈕元素的value值為 Submit
#用戶執行一次儲值活動充了20塊,他的帳號上就多了20元
等價於:以20為參數調用充值接口,再對比前後兩次調用帳號查詢的接口,相差剛好是充值的參數值
在資料層次程式設計進行比較就變得很容易了,因為這些都是電腦擅長處理的領域了,自動化也很自然地實現了。
#前面講到了對把軟體專案從看到的具體的介面往底層一點抽象成資料的方法。其實還有一些更底層,更絕的,對軟體的資料還可以更底層一點和物理世界建立關聯(這已經不好用「抽象」或「具象」來描述了)。
本部分的內容,已經和應用軟體的測試的話題有點扯遠了,純粹就當科普吧。
從更廣泛的角度來看一個電腦系統,它給人的體驗本質上是做瞭如下的處理:
人的所有的直覺體驗都是來自於對類比量(物理量)的體驗,人的交互輸入也是來自於模擬量的輸入。
人敲擊鍵盤向電腦系統輸入文字,鍵盤將不同一鍵位產生的脈衝電流傳入電腦系統,電腦系統透過晶片和驅動,將這些電流訊號轉換成數位訊號,然後交付數字晶片處理。這樣人就完成了 訊息的輸入 。
計算機系統對這些數據進行計算,存儲,傳輸等等,最後在LCD顯示器上通過點亮不同位置的點陣,以形成光學的模擬量輸出,傳送到人的眼睛裡面,人就完成了 資訊的取得 。
以上的例子可以簡化為:力學物理量產生電物理量進行輸入,電腦數位系統處理後,光學物理量進行輸出。
對於電腦系統,輸入和輸出都是多樣的:
# #輸入裝置
#輸出裝置
除了光學的LCD顯示器,還有聲學的擴音器,還有滾動的輪式機械力學,還有人形走路的機械手臂力學設備。
#########這些東西都已經是現在網路產業很流行的元素了。 ######由於電子技術和通訊領域往往檢測的都是物理量,肉眼是很難量化的,所以測試門檻會很高,但是各種檢測儀器反而發展得相當好,自動化程度相當高。反觀IT產業的上層的應用軟體層,人卻都過多的依賴於人工去操作,肉眼去觀察了,反而忽視了自動化,導致測試行業一直人員素質不高,技術實力太弱,這顯然是很不可取的,至少是很不符合目前軟體工程產業的時代需求的。 ###############5 小結######本文對應用軟體進行了邏輯上的分層,來闡述了軟體自動化測試和基本原理,在文章的後半部分針對目前流行的 ###智慧硬體### 所涉及的電子技術的自動化測試也進行了簡單的探討,希望能夠給予從來自動化測試的人也有一點啟發。 ######後面的系列文章將從技術層次來落地這些理論。 #########總結###起來,對於想入這行而且想有深入發展的人,有以下幾個結論和建議:###軟體的本質不是介面而是資料
要了解軟體的本質,必須要有好的電腦基礎
#從事網路產業的人可以熟悉linux,儘早建立這種 軟體即資料 的世界觀
介面做自動化測試是最投入回報比最高的(來自Google的工程師的觀點)
要想做好自動化測試,必須有軟體開發能力和系統的設計能力
#寫到這裡,最後容我 「安麗」 一下 Linux ,因為相較於MacOS 和Windows 系統,Linux 在介面這一塊做得不好,但是卻有強大的CLI交互,支援強大的腳本編寫,對於實現自動化是很有幫助的。
(未完,待續。。。)
後續將開始繼續書寫 python的自動化工具和程式設計應用了。
以上是python自動化基本技術原理的詳細內容。更多資訊請關注PHP中文網其他相關文章!