當測試開放API時,測試專家約Johanna Rothman建議要測試API的功能性、端點安全性,尤其是連接的正確性。
為什么要測試新開發的或者成熟的開放API?這個問題的答案和測試應用軟件的原因是相同的:確保連接和流程能正常工作。測試和驗證某個API可以成功連接,并能夠提供可靠的安全性和預期的功能,這點對于軟件開發公司的聲譽很重要。
API測試不是一個簡單的任務,涉及的人員要比單元測試多得多。為了保護和提高公司應用的聲譽,必須要對API做全面測試。在規劃和開發針對開放API測試時,務必要驗證系統間的連接性。通常情況下,驗證連接性都很棘手,要找到能夠滿足業務需求的方法。連接性測試是API測試的基本前提,同時也有其他很多方面需要考慮。
清楚測試內容
測試團隊需要決定具體哪些方面需要測試。和其他測試一樣,風險、優先級和可訪問性都會影響要在API上執行的測試類型。最起碼,需要測試端點的功能性,是否能夠正確地接受或者轉發信息。如果有條件,也需要測試端點安全性和業務邏輯的功能性。有些測試人員不喜歡測試端點安全性,但是可以和開發人員一起確保令牌和證書無法輕易被繞開。
業務邏輯功能性的測試非常關鍵。即使API端點是安全的,并且已經成功建立鏈接,確認API能夠按照設計工作,仍然非常重要。API功能性測試包括模擬客戶行為使用所有可供選擇的功能。測試團隊必須決定他們是否需要創建一個虛擬的用戶實例,或者是否更適合試點測試,或是和真實客戶一起完成測試。測試深度取決于業務需求以及可用于測試和開發的時間。
創建API測試數據
應用所服務的領域決定了需要多少時間和技能來創建測試數據。比如,在醫療軟件領域,不違反HIPAA病例信息披露原則很重要;否則,不僅可能面臨巨額的政府罰款,而且任何形式的數據泄露都不可避免地損傷企業的公眾形象。但是不管API所服務的是什么領域,都需要花費時間為API測試創建簡潔或者廣義的數據。
簡潔數據是有效的真實數據,但是不可識別或者跟蹤到真實的某個人。一組數據也可以手動轉化成一系列數據,用于開發人物角色,用于五個不同的客戶場景。比如,針對藥物記錄的數據轉換API,一個人物角色可能是主動去看初級醫生,和肺、心臟病和風濕病專家的病人。要創建這個人物角色需要個人數據、醫療記錄信息,以及每個醫生的地址,電話號碼和病人到訪信息。根據就診場景的需要,測試人員使用滿足需求的最小數據集填充數據庫。可以使用這些數據測試API,驗證返回的數據是否正確。
測試端點安全性
測試API時,測試API端點的安全性至關重要。測試確保端點只會回復有效鏈接的請求。測試消息安全性也很重要。很多API使用JWT令牌和證書來保證收到的消息來自于授權的發送方。嘗試使用無效令牌發送未經授權的消息,或者確保能夠使用有效令牌。API的功能決定了是否需要使用公司外第三方的安全測試服務,或者公司內現有的測試人員和開發人員能否完成充分的測試。
測試API功能性
創建出的測試數據主要用來測試API的功能性。一種有效的方法是創建模擬的API系統,模擬真實的業務伙伴來使用API。當然,創建模擬系統需要時間,取決于對API使用的理解程度,但是這仍然是一種測試API功能性的有效方式。如果沒有時間開發模擬應用來連接測試API的功能性,那么可以考慮和真實的業務伙伴合作。
和試點測試類似,和真實的業務伙伴一起測試有很多優勢。主要的優勢是使用的是真實的數據實例。這時花在測試和開發上的時間不像花在模擬系統上顯得被浪費了,因為最終創建了能提供價值的可以工作的業務伙伴系統。已經證明數據傳輸的可靠性對于API的成功至關重要,沒有試點系統也很難對此進行測試。試點測試同樣也使用真實的客戶系統來完整測試商業邏輯。
保護已有客戶并維持客戶信任對于業務增長而言至關重要,因此花費時間和精力來測試開放API是很值得的。客戶可能是個人用戶和大型或小型公司,得到客戶的信任和尊重會直接帶來商業上的成功。開放API的測試也提供了初級的安全測試和業務邏輯認證。軟件公司都必須在此領域深度測試來確保API的質量。