在之前的文章裡面提到過:做自動化的首要本領就是要會 透過現象看本質 ,落實到實際的it工作中就是 透過介面看資料。
掌握上面的這樣的本領可不是容易的事情,必須要有紮實的計算機理論基礎,才能看到深層次的本質東西。
資料庫應用系統 可能是最典型的網路應用程式了,關於它的軟體架構如下:
一般在邏輯上分為4層:
使用者介面層 ui
為終端使用者提供互動的人機介面
業務邏輯層 bll
將資料庫抽象出來的物件進行拼接成具體的業務邏輯物件,並對之進行流程組織
資料訪問層 dal
對db層做的orm,讓上層應用程式以物件的方式操控資料庫
資料持久層 db
儲存資料,對資料進行持久化,不同的客戶端進行資料共享
在傳統的 c/s 架構下應用程式(例如,windows下的客戶端應用程式),一般都是一台**資料庫伺服器( db ),然後對應n臺客戶端(dal-bll-ui )。
對於 初級測試人員 來說,可能對軟體的理解只能停留在 ui 層,於是在測試時候能做到的事情就是:日復一日,年復一年地用滑鼠 點點點了。
在前一部分裡面提到的應用軟體的基本架構,雖然是在 「c/s」 時代提出來的,但是後面卻一直延續到現在 。直到今天最普遍的 「abc/s」 模式:
browser/server
client/server
其實本質上就把ui這一層放在客戶端,把ui以下放在server端。
客戶端在不同的平台下面有不同的表現形式,就形成了現在流行的所謂的 「abc/s」 模式的架構,這個基本上已經成為目前的網際網路產品的標配了。具體的架構如下:
伺服器端和客戶端之間採用 http/https 的通訊協議,資料交換的格式為 xml/json 格式。
基於以上模式之後,軟體測試的方**就發生了一些變化:
有了抽象成資料的能力之後,那麼很多看到的東西就可以進行合理的等價轉換了:
web頁面背景的是紅色
等價於:背景元素的background的顏色屬性是 #ff0000
按鈕上顯示的字為"submit"
等價於:按鈕元素的value值為 submit
使用者執行一次充值活動充了20塊錢,他的賬號上就多了20元
等價於:以20為引數呼叫充值介面,再對比前後兩次呼叫賬號查詢的介面,相差剛好是充值的引數值
在資料層次程式設計進行比較就變得很容易了,因為這些都是計算機擅長處理的領域了,自動化也很自然地實現了。
前面講到了對把軟體專案從看到的具體的介面往底層一點抽象成資料的方法。其實還有一些更底層,更絕的,對軟體的資料還可以更底層一點和物理世界建立關聯(這已經不好用「抽象」或者「具象」來描述了)。
本部分的內容,已經和應用軟體的測試的話題有點扯遠了,純粹就當科普吧。
從更廣泛的角度來看乙個計算機系統,它給人的體驗上本質上是做了如下的處理:
人的所有的直觀體驗都是來自於對模擬量(物理量)的體驗,人的互動輸入也是來自於模擬量的輸入。
人敲擊鍵盤向計算機系統輸入文字,鍵盤將不同一鍵位產生的脈衝電流傳入計算機系統,計算機系統通過晶元和驅動,將這些電流訊號轉化成數碼訊號,然後交付數字晶元處理。這樣人就完成了 資訊的輸入 。
計算機系統對這些資料進行計算,儲存,傳輸等等,最後在lcd顯示器上通過點亮不同位置的點陣,以形成光學的模擬量輸出,傳送到人的眼睛裡面,人就完成了 資訊的獲取 。
以上的例子可以簡化為:力學物理量產生電學物理量進行輸入,計算機數字系統處理後,光學物理量進行輸出。
對於計算機系統,輸入和輸出都是多樣的:
這些東西都已經是現在網際網路行業很流行的元素了。
由於電子技術和通訊領域往往檢測的都是物理量,肉眼是很難量化的,所以測試門檻會很高,但是各種檢測儀器反而發展得相當好,自動化程度相當高。反觀it行業的上層的應用軟體層,人卻都過多的依賴於人工去操作,肉眼去觀察了,反而忽視了自動化,導致測試行業一直人員素質不高,技術實力太弱,這顯然是很不可取的,至少是很不符合目前軟體工程行業的時代需求的。
本文對應用軟體進行了邏輯上的分層,來闡述了軟體自動化測試和基本原理,在文章的後半部分對目前流行的 智慧型硬體 所涉及的電子技術的自動化測試也進行了簡單的**,希望能夠給從來 自動化測試的人也有一點啟發。
後面的系列文章將從技術層次來落地這些理論。
總結起來,對於想入這行而且想有深入發展的人,有如下幾個結論和建議:
寫到這裡,最後容我 「安利」 一下 linux ,因為相比 macos 和 windows 系統,linux 在介面這一塊做得不太好,但是卻有強大的cli互動,支援強大的指令碼編寫,對於實現自動化是很有幫助的。
(未完,待續。。。)
後續將開始繼續書寫 python的自動化工具和程式設計應用了。
Selenium自動化測試 python基礎
author 佳期如夢 data 2020 11 06 function python base study 順序 分支 迴圈 語法 if true print true else print else a 2 b 5 if a b print a小於b,a的值是 a else print b s1...
Selenium自動化測試 python基礎07
author 佳期如夢 data 2020 11 20 function 異常處理 注釋的快捷鍵 ctrl 捕獲異常 不存在的變數 import json try print a 用型別去捕捉 except nameerror as msg print msg msg 開啟乙個檔案 不存在的檔案 t...
自動化測試 web自動化測試
自動化 由機器裝置代替人為完成制定目標的過程 優點 提高工作效率 減少勞動力 產品規格同一標準 批量生產 自動化測試 讓程式代替人為去驗證程式功能的過程,即在預設條件下執行程式系統 流程確定 搭建自動化框架 編寫測試用例,將其轉化為soupui 介面 自動化測試指令碼 執行自動化測試指令碼 輸出執行...