在以前的文章裏面提到過:作自動化的首要本領就是要會 透過現象看本質 ,落實到實際的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 |
版權聲明: | 歡迎以學習交流爲目的讀者隨意轉載,可是請 【註明出處】 |
支持本文: | 若是文章對您有啓發,能夠點擊博客右下角的按鈕進行 【推薦】 |