用Appraise自動化視覺測試

2021-09-17 07:13:53 字數 2577 閱讀 5955

\

\

\\

infoq: 在測試視覺化時,測試人員經常會遇到什麼問題?

\\

\

gojko adzic: 從歷史上看,測試應用程式的視覺方面需要人的眼睛和人的判斷。這使得視覺測試變得昂貴和緩慢,所以有好的啟發式方法來實現適當的覆蓋率是非常重要的。

\\ 對於視覺效果,通常很難表達怎麼算是正確的。有人可以設計很多特定的檢查,比如元素大小、定位和樣式,但是螢幕上的整體組合可能仍然是錯誤的、怪異的或者就是很難看的。雖然人們可以很容易地發現什麼東西有問題,但因為很難表達預期的結果,所以傳統的自動化並不是很有幫助。

\\ 即使預期的結果是明確定義和確定的,測試視覺化常常需要構建和部署應用程式的整個堆疊,從而使測試變得緩慢而脆弱。

\

\\

infoq: 測試人員如何處理這些問題?

\\

\

adzic:乙個常見的解決方案是在使用者介面下盡可能地自動化,讓人們把精力集中在剩下那些需要肉眼的部分上。由於使用者介面自動化往往是緩慢而脆弱的,軟體團隊傾向於將功能從外觀和感覺上分離出來,並盡可能地在視覺化介面下進行測試。為此,mike cohn率先提出了著名的測試自動化金字塔,它在今天的軟體測試自動化中非常有用。

\\ 對於業務應用程式或企業軟體來說,這很有效,因為使用者介面並不是其真正的特別之處。但是在介面外觀是成功關鍵的應用程式中,這個龐大的任務仍然擺在開發團隊的面前,團隊並沒有很多處理此類問題的技巧和實踐。從技術上講,有很多任務具可以檢查應用程式的視覺方面,但是把人排除到這個方程式之外仍然是不可能的。

\\ 在做mindmup的時候,我們最終解決了這個問題。因為它是乙個消費者應用程式,而且使用者群的大部分都是學齡兒童,視覺和介面外觀對整體體驗至關重要。我們是乙個構建、支援和維護應用程式的小團隊。隨著**庫的增長,測試視覺效果所需要的時間確實會帶來負面影響,使我們無法抽身去做新的特性。我們有大量的自動化測試,甚至對應用程式的大部分視覺化方面進行了測試,這些測試都是使用瀏覽器內的測試來檢查dom元素的,但是這些測試很難維護。

\\ 例如,改變一些常見的思維導圖視覺化風格,如字型或頁邊距,會導致數百個測試中斷。每乙個測試用例都是確定的,給我幾個小時和乙個計算器,我可以很容易地計算出新的期望狀態,但是我更願意把時間用在改進產品上,而不是修改測試用例。當然,我們可以抽象這些東西,設計更小的單元測試,不依賴於真實的視覺介面外觀的樣式,但是如果有些東西沒那麼怪那麼醜,那麼這種方法也驗證不出什麼,所以我們仍然需要審查最終視覺化結果,這花了很多的時間。

\\ 事實上,因為其他的測試都很脆弱,我們最終會有一打左右的思維導圖來展示所有的關鍵介面外觀,然後手動載入它們以驗證看起來是否正常。如果存在問題,我們只是會從面向**的測試中複製出實際結果,並為其宣告新的期望值。

\\ 這讓我們思考,我們如何能夠加速這個過程,也許設計乙個自動化流水線來幫助我們做視覺評估能讓我們更快更有效地完成它。我們認為設計自動化測試的目的並不是為了取代人類,但是如果我們能夠設計出一些自動化來幫助我們做這件事,就太好了。

\\ 人類在評估某樣東西是否正常時很在行,但我們不需要參與收集所有資訊的過程,所以我們開始將所有事情都自動化,除了最後的決定。我們構建了乙個工具,它可以執行為應用程式設定的那些簡單枯燥的工作來嘗試許多不同的視覺測試用例,然後將它提交給我們進行審批。我們有了這個,就可以評審比之前多得多的案例了。而不是那十幾二十個思維導圖來幫我們在同一時刻檢查很多東西的,我們可以圍繞各個方面設計測試,讓自動化部分僅僅呈現出不同效果,有那麼點視覺單元測試的意思。

\

\\

\\

\

批准失敗的測試用例使實際結果成為下乙個測試執行的預期,因此維護測試的成本就很低廉了。我只需按下乙個按鈕,而不是重新花時間計算svg位置,就可以讓新的螢幕截圖成為我新的期望狀態。因此,我們從有效的測試設計和自動化例項化需求的工具,以及對典型的批准測試的簡單測試維護中獲得了很多好處。這意味著我們可以快速地做大量的測試用例,並能很容易地管理它們。

\\ 此外,通過採用具體的示例方法,評價團隊可以通過視覺化的例子建立易於維護的、可驗證的開發人員文件。該工具使用markdown作為可執行的規範格式,這意味著團隊可以輕鬆地將其現存的文件發布到github或作為靜態html站點。

\\

\\

\\

\

adzic:它不是主要針對測試人員的工具,而是跨職能團隊。人們可以從使用草圖的視覺化示例開始,無論是用手繪、線框圖還是圖形工具,然後對相關的例子、邊界值和邊界情況進行充分地討論。這種討論,就是bdd和例項化需求的真正威力所在。

\\ 然後把這些草圖放入markdown文件來建立乙個可執行的規範,這將成為乙個半自動化的測試。然後,開發人員將構建這些特性和一些可能的測試夾具,類似於fitnesse夾具或cucumber 步驟,將這些示例聯絡到應用程式中。

\\ 通過這種方式,評價的目的是支援跨職能的對話和方便人們識別和評審的差異。

\

\\

有一些用於視覺測試工具還正處於發展階段,例如chromatic 和screener。

\\

robot framework 介面自動化測試

介面測試比ui測試更有價值,如果專案時間緊張,測試介面更好一些,但每次都頻繁的手工填寫介面進行測試也浪費時間,下面給大家介紹一下很好的自動化測試框架robot framework,並且做介面自動化測試事半功倍。其返回值驗證和與資料庫連線進行增刪改查很方便,邏輯也很嚴謹,如果公司沒有造輪子推薦這麼做。...

Robotframework 介面自動化測試

1.目的 1 以雲平台為例 實現註冊 登入 更新apikey 新增專案 新增裝置 新增感測器 新增執行器 感測器每隔3s上報一次資料 1分鐘後與雲平台主動斷開連線的介面自動化測試。2 斷言每條用例是否執行成功。3 程式不管執行多少次都不報錯。2.robotframework環境搭建 1 安裝pyth...

python requests介面自動化測試 一

python requests環境部署 1.安裝python,配置系統環境變數 4.安裝requests庫 pip install requests 在進行介面自動化測試時,常用到的幾個requests庫方法。如下 get 不帶引數的請求 n requests.get 帶引數的請求 引數是以字典的形...