當面試的時候,面試官要問你對自動化測驗架構的理解時,該如何回答呢?

其實這是一個很“大”的問題,面試者需要對如下內容進行闡述,主要包括:什么是架構、什么是架構設計思想、自動化架構設計帶來的好處、有哪些核心類別庫以及他們的作用、結合你的實際作業談談遇到的架構使用問題,在這里我概述一下對于這幾個問題的核心回答思路,
1.什么是架構
軟體架構(software architecture)是一系列相關的抽象模式,用于指導大型軟體系統各個方面的設計,軟體架構是一個系統的草圖,軟體架構描述的物件是直接構成系統的抽象組件,各個組件之間的連接則明確和相對細致地描述組件之間的通訊,在實作階段,這些抽象組件被細化為實際的組件,比如具體某個類或者物件,在面向物件領域中,組件之間的連接通常用介面來實作,

2.架構設計思想
用一套通用的自動化測驗框架,解決不同產品線的基礎服務構建作業(包括:提供日志模塊,提供郵件模塊,提供外部檔案讀寫處理模塊以及日志決議模塊等等),通過引入框架方便公司對不同的產品線自動化實施進行整合,便于日后管理和維護,該設計方案使得不同產品的自動化業務撰寫人員只需專注于用例業務的實作,無需理會API中內部技術細節的實作,而架構設計人員無需對業務線的具體業務知識進行系統學習,只專注于技術細節的實作,當業務撰寫人員遇到技術問題時提供必要的技術支持,正所謂術業有專攻,通過對不同角色的職責劃分,從整體上提升自動化測驗的作業效率,
具體包括:
編碼選擇(用java還是python)
核心技術選擇(例如:web用selenium 、移動端用appium)
提供編碼規范(類、方法、變數的統一命名規范)
提供用例設計規范
代碼管理方案(svn還是git)
3.為什么使用架構
核心:解決錄制腳本的常見問題,使得自動化測驗穩定
1.把架構撰寫人員(精通代碼設計),用例撰寫人員(了解代碼),以及用例執行人員(不懂代碼)分開
2.把UI物件通過自定義變數的方式賦值,增強了腳本的易讀性
3.通過封裝Webdriver的API,使其更加健壯
4.把常用的業務場景封裝成業務方法,便于常用業務的復用
5.把經常需要修改的內容(例如:登陸用戶名和密碼)保存在外部檔案中,避免了腳本執行人員對測驗腳本代碼的修改
6.生成Debug級別的log,使自動化腳本除錯人員方便除錯程式
7.生成回歸級別的測驗報告,便于不懂腳本的人員查看測驗結果
8.參考Suite執行多個腳本,進行運行腳本的管理
4.具體類別庫是如何設計的
組態檔
把經常需要修改的資訊(例如:用戶名,密碼,環境)保留在組態檔中,好處如下:
便于執行用例的測驗人員修改;
避免對代碼的修改而引起的錯誤
日志
測驗報告:向專案經理、產品經理和老板匯報
除錯日志:便于自動化腳本撰寫人員除錯代碼
ObjectStore
保存頁面中的元素,當UI變化時修改對應變數即可,將可讀性差的UI元素按照統一規則命名
CommonLib
1.提供與Webdriver無關,但與自動化測驗相關的API
包括:從外部檔案讀取資訊,啟動多種瀏覽器,獲得當前系統時間,啟動和終止某個應用程式,獲得亂數等等
2.包括的方法有,從外部檔案讀取資料,生成隨機函式,獲得當前日期等等
Corelib
1.封裝webdriver的api,使其更加健壯,形成自動化專案的api
2.提供斷言的相關方法
3.自動化api提供詳細的輸出訊息,便于除錯
4.自動化api提供向測驗報告中寫入訊息的方法
BusinessLib
業務方法的封裝,根據Corelib中的提供的API,把常用的業務場景封裝成方法便于復用
DataStore
保存輸入的資料資訊,作為架構與外部檔案的介面
5.使用架構時遇到的問題
前面的問題回答的再好,只能證明你在理論方面對架構的理解是OK的,那么你究竟使用過架構嗎?必須結合實際專案來說!主要注意以下幾點
正常流程
1.你是如何利用架構里面的api設計用例的,舉一個具體的場景(非常重要)
解決問題
2.當遇到UI元素變化時,你是如何更新ui變數的?核心點是更新objectstore
3.當遇到腳本執行fail時,你是如何判斷是架構的api問題還是程式本身的bug的?核心點是手工復現問題,查看架構日志
4.當架構提供的api不能滿足你的專案需求時,你是如何擴展api的?核心點是直接重寫架構的api或者添加api;寫一個新類繼承架構中的Corelib,在這個 新類中完善api
5.當架構需要添加新功能時需要如何接入?核心點是寫若干個類完成所需功能,然后提供呼叫介面在架構中使用
原創不易,如果文章幫到了你,歡迎轉發點贊,讓更多的朋友受益!
需要軟體測驗面試資料,點擊鏈接加入群聊【Python自動化測驗交流群】領取全套資料!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/164652.html
標籤:python
