在第二章中咱們簡單地介紹了接口自動化平臺的基本功能,主要包括如下幾個方面:php
(1)接口文檔管理功能:管理接口信息,包括增,刪,改,查等。前端
(2)用例管理功能:新建,展現,查詢,刪除,運行測試用例。java
(3)測試用例集管理:新增,修改,刪除,查找,運行測試用例集。python
(4)任務管理:管理定時任務,或者其餘任務觸發機制。mysql
(5)測試報告管理功能:展現,查找測試報告,對測試報告進行統計和分析。jquery
(6)日誌管理功能:記錄錯誤日誌,對日誌進行過濾及分析。nginx
(7)用戶管理功能:以便對測試用例,測試計劃,任務,報告和日誌的相關操做進行權限控制。git
本章咱們將對每一項目作詳情的設計分析,最後給出設計實現思路。github
接口文檔管理最近是一個單獨的部分,相似於wiki上面的一個功能,屬於文檔技術沉澱或是開發說明等。後來在接口自動化平臺功能愈來愈強大後,此功能正式成功接口自動化平臺的一部分。接口文檔應該詳情記錄接口的調用地址,接口功能,調用方式,接口的參數,參數中是必選的,仍是非必選的,接口返回示例或是字段等信息。sql
此部分功能應該包含如下具體功能:
(1)接口整體信息的展現,不論是採起樹型結構或是列表的樣式,簡單地展現出接口的基本信息,以便對總體接口中有個瞭解。
(2)搜索功能,接口信息量會很是大,不可能人工去查找想要的接口信息,必須有搜索功能,以接口名稱和功能進行具體的搜索。
(3)展現翻頁功能,爲了達到比較好的用戶效果,不可能把全部的信息都展現出來 ,通常一頁展現10-15條信息比較好,多餘的信息要進行翻頁處理。
(4)新增長接口的功能,根據用戶權限,對有權限的用戶開通添加權限。在添加接口文檔的時候,要求添加的信息比較明確,參數和返回示例比較容易增刪。
(5)修改和刪除功能,接口的添加者和系統管理員能夠對接口進行修改或是刪除操做,此處權限必定要控制好,不能修改和刪除不是本身的接口文檔信息。
能夠參考如下的開源項目,說不定能給你帶來不錯的靈感:
(1)CrapApi https://github.com/EhsanTang/ApiManager
(2)ShowDoc https://github.com/star7th/showdoc
(3)php-doc-system https://github.com/ares333/php-doc-system
用例功能管理是接口自動化測試平臺的核心功能,也是發揮比較多的模塊,咱們就基本的內容介紹一下,若是你有新的想法能夠隨意創新。
(1)用例的總體展現,以列表的形式進行用例展現,固然左側也能夠以接口爲單位進行用例的組織,以樹型結構進行篩選。單擊左側的對應接口名,右側展現出該接口下的全部用例。用例的基本信息包含:用例名,用例功能,檢測點,建立時間,執行結果和建立人等。
(2)搜索功能,必須能夠以測試用例名,測試用例功能,接口名和建立人進行對測試用例進行搜索。
(3)翻頁功能,一頁不能展現太多的測試用例,須要根據頁面部署進行翻頁設置。
(4)新增功能:有添加測試用例權限的用戶能夠對相應的接口添加測試用例,此處有兩種作法:一種是徹底手工,選擇接口後添加對應的參數,參數值 ,檢測方法與預期結果。第二種是在選擇接口,根據接口文檔自動添加上相應的參數,返回值示例等,你只須要填寫參數值,選擇檢測方法和填上預期結果值。
(5)修改和刪除功能 :對測試用例必須進行權限控制,用例的建立者纔有權限修改和刪除,其餘人沒有這個權限。
(6)執行功能:測試用例必須有執行功能,執行功能包含單個用例的直接執行,選擇多個用例的同時執行兩個執行操做。以及有接口能夠將選擇的用例保存成測試用例集。
隨着測試用例數量的增長,咱們須要對其有合理的管理方法。很多測試框架都有測試用例集的這個概念,如java的Testng.xml,Python的testsuite等。咱們在開發平臺的時候,這一功能也是很是重要的。
測試用例集的管理包含如下幾個功能 :
(1)測試用例集展現:測試用例集同測試用例,接口文檔同樣,須要有展現功能,展現項應該包含:測試用例集名稱,測試用例集功能,包含用例,執行結果,建立時間,建立人等信息。同時展現頁面也須要有相應的搜索和翻頁功能,此處就不在累述了。
(2)測試用例集的建立:建立測試用例集的時候,須要填寫用例集的名稱,功能,而包含的測試用例是須要有選擇已有測試用例的功能。
(3)修改和刪除,和上面是同樣的,必須進行合適的權限控制,防止不一樣的用戶相互影響。在修改用例集的能夠選擇增長或是刪除相應的測試用例。
(4)用例集的執行:測試用例集包含兩種執行方式,一個是直接執行,單擊觸發相應的用例執行;二是設置定時任務或是觸發策略。
任務管理通常是定時任務,固然也能夠包含其餘如jenkins上觸發任務。不過咱們此處只討論定時任務,先無論定時任務如何實現。定時任務的管理至少包含如下幾個功能:
(1)定時任務展現 :展現出定時任務的功能,執行策略,通知策略,當前狀態等信息。若是有必要,須要添加上搜索和翻頁功能。
(2)定時任務的建立:有相應操做權限的用戶能夠建立相應的定時任務,應該包含定時任務名稱,選擇須要執行的測試用例集,觸發策略,通知策略,以及接收通知人的郵件或是手機號列表等。
(3) 定時任務的中止及刪除:定時任務修改的價值不大,能夠直接刪除了,再建立便可。根據相應的權限對定時任務進行中止,啓動和刪除等操做。
測試報告是咱們查看測試計劃執行結果的重要手段,若是作數據分析的話,這也是重要的數據來源。因此咱們也分兩部分進行介紹此處的功能.
一, 簡化版本
若是是簡化版本的測試報告管理的話,須要具有如下功能:
(1)測試報告的展現:展現出測試報告的基本狀況,如:測試計劃名,測試計劃功能,執行時間,執行策略,執行結果,執行人等。並且要提供搜索的翻頁功能。
(2)測試報告的查看:單擊執行結果,能打開具體的測試報告頁面,若是使用的測試框架能自動生成,就打開相應的報告,若是不能先生成詳情的測試報告。
二, 詳情版本
簡化版提供查看相應的測試報告信息便可,若是要作複雜一點兒,須要對報告進行數據統計,主要統計的維度有:
(1)報告維度
統計每一個測試用例集的執行狀況,成功或是失敗的次數,固然若是能再細度化的話,還能夠細化到測試用例細別。這樣能夠分析出測試用例集的執行狀況,裏面有用例是否合理等。出錯的緣由,以出錯的機率。
(2)執行用戶維度
以執行測試用例集的用戶爲維度來統計成功失敗狀況,以此來分析每一個用戶的執行習慣 ,測試範圍,以及失敗的緣由,建立的測試用例集是否合適等。
(3)執行時間維度
以測試用例集的時間來統計測試用例集的執行狀況,以此來分析每一個時間段的執行狀況,用戶的使用習慣,以便錯開執行峯值或是作成異步多線程等執行方法。
(4)統計展現
在上面作了相應的統計後,咱們須要作相應的展現,若是不展現就失去了統計的意義。因此要藉助於第三方的前端開源框架或是插件展現出來,這個就要看我的使用的熟練程度與審美了。
一個完善的系統都會有相應的日誌功能,用來記錄執行狀況,錯誤信息,以便進行更好的錯誤排查與跟蹤。咱們接口自動化平臺需求記錄的日誌不是太多,由於對應的測試框架會記錄錯誤信息的。可是咱們也要記錄以下信息:
(1)出錯接口的出錯現場:出錯時的參數,出錯的接口輸出,執行時間等等。由於測試框架只對比對信息進行出錯記錄,如實際結果與預期結果不符之類的。
(2)平臺出錯信息:如接口請求不通,或是頁面加載出錯,執行函數出錯等。
(3)日誌分析:根據本身的業務需求,對日誌作相應的分析 ,以便統計出相應的數據以供後期使用。
(4)數據展現:咱們對日誌分析的數據,要作相應的展現,不能僅僅放到數據庫中,這不符合咱們平臺開發的目的。
用戶權限管理對任何一個系統來講都很是重要,由於一個系統的數據不可能對全部人都無限的使用。因此咱們的接口自動化測試平臺也須要作相應的權限管理,大體先將用戶分爲如下幾個權限:
(1)訪客:能夠查看接口文檔,執行接口測試用例,接口測試用例集,查看測試報告及相關的統計數據。簡單來講只有查看和執行權限,也能夠視狀況而定,不授於其執行權限。
(2)接口開發人員:接口開發人員能夠對接口文檔擁有全部權限,以便管理全部的接口文檔。同時能夠執行現成的接口測試用例,能夠用來驗證開發的接口以及查看相關統計信息。
(3)接口測試人員:編寫接口測試用例,接口測試用例集以及設置相應的定時任務等,能夠查看接口文檔以及相關統計信息。
(4)系統管理員:擁有系統全部權限。
而用戶管理功能包括如下幾個方面:
(1)用戶權限申請:申請系統相應的權限,填寫必要的信息,以便管理員審覈。
(2)用戶管理功能:審批用戶申請,更改用戶權限,以及刪除用戶信息。
(3)申請記錄管理:管理用戶的申請記錄,以便分析用戶的申請行爲。
以上功能只有系統管理員能夠進行相應的操做。
上面咱們詳情介紹了一個接口自動化平臺的相關模塊的功能,整體來講就是表格以及對數據的相關操做,因此就完成上面的功能咱們分析一下可能用到的技術:
開發框架:
能夠是現成的php的CI,python的django,java咱們公司有現成的框架,而開源的我不太瞭解,你們能夠根據須要去選擇。
測試框架:
php的phpunit,python的unittest,java的TestNG等都是不錯的選擇。
前端框架:
Bootstrap+jquery,固然選擇bootstrap table加上相關的插件就能很好地完成前端設計。
數據庫:
建議用mysql,輕量級的,sql操做也比較熟悉,也有用mangodb的,本身根據須要選擇便可。
服務器:tomcat+nginx足以完成需求。
本章咱們詳情介紹了接口自動化平臺的各個相關功能模塊,若是很好地完成了這些模塊,一個不錯的接口自動化平臺就已經呈如今你面前了。固然這僅僅是一個基本的平臺,而咱們大部分人也玩的就是這個套路,在知識不斷積累,眼界愈來愈開闊的時候,也會有不少深刻的玩法,下節咱們將介紹幾種比較新穎的接口測試平臺設計案例,你們來相互交流一下。