精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于應用程序編程接口(API)的自動化測試(上)

上海控安 ? 來源:上海控安 ? 作者:上海控安 ? 2023-09-01 11:17 ? 次閱讀

作者 |黃杉華東師范大學軟件工程學院博士

蘇亭 華東師范大學軟件工程學院教授

版塊 |鑒源論壇 · 觀模

社群 |添加微信號TICPShanghai”加入“上海控安51fusa安全社區”

01

應用程序編程接口(API

應用程序編程接口,英文全稱為Application Programming Interface[7](簡稱API),是一組定義了軟件組件如何互相通信和交互的規則和協議。和用戶接口(User Interface,簡稱UI)不同,API的目的是連接不同的軟件,允許不同的軟件應用程序之間共享功能和數據,而無需了解其內部實現細節。

API的表現形式一般是使用某種編程語言編寫的函數(function)或者數據結構(data structure)。對一個應用程序中的編程接口進行定義和說明的文檔被稱為API規格說明(API specification)。公開的API和其對應的規格說明使得該應用程序開發者之外的開發人員能夠調用這些API,并通過新編寫的軟件邏輯實現新功能或者對原有功能進行擴展。這使得開發人員能夠構建更加模塊化、可擴展和可重用的軟件。API在現代軟件開發中起著重要作用,它們促進了分布式系統、微服務架構和應用程序集成。通過使用API,開發人員可以利用現有功能,加快開發速度,提高代碼的可維護性和可重用性。

02

自動化API測試

隨著軟件技術的發展,由于軟件結構的高度復雜和軟件開發周期的不斷縮短,為了確保應用程序的質量和安全,API自身的功能正確性和使用安全性越來越重要,能快速有效地對API進行測試是關鍵。API測試是一種直接對API進行測試的軟件測試技術,主要用于保證開發人員所編寫的API滿足給定的功能目標、性能目標和安全目標。

現代軟件的架構大部分采用模塊化和分層化的模式,各模塊和層次之間通過API進行功能交互和數據傳輸。當某個模塊或者軟件層提供的API存在軟件錯誤(bug),那么依賴該模塊或者該軟件層的其他模塊和軟件層自身功能也將出現錯誤。最壞情況下可能導致應用程序整體出錯,影響用戶使用體驗,危害用戶數據安全。因此,API測試是非常必要且需要重視的一個軟件開發流程階段。當API測試足夠充分并且結果表明被測API正確無誤時,使用這些API構建的應用程序或者程序功能才有基礎的質量和安全保障。

從最初的軟件開發瀑布模型(Waterfall model)到時下流行的敏捷開發(Agile development)和DevOps,軟件開發周期不斷縮短,使得如何高效保障應用程序的質量和安全受到更多的關注,也就催生了自動化測試(Automated testing)。API測試也順勢進入自動化時代。從通用自動化API測試技術(如單元測試、模糊測試)到特定編程語言的測試框架(如pytest[9]、JUnit[10]),從傳統的應用程序編程庫(library)API測試到Web場景下的RESTful API測試,自動化API測試技術得到廣泛發展。

03

自動化API測試對象

自動化API測試的對象目前主要分為兩種:函數級API(Function-level API)和RESTful API。前者是傳統的程序編程庫(或者稱為第三方庫)或者系統庫中為開發者提供的API接口,需要開發者在軟件代碼中實際調用才能夠發揮作用。后者則是在Web和云場景下廣泛使用的具有REST規范的API,一般以客戶端向服務器發起HTTP請求的形式呈現。對兩者進行自動化測試在形式上相同,都需要測試人員編寫特定的測試驅動進行API調用來完成測試,測試的重要內容也都是檢查API調用的執行結果是否符合預期以及API執行過程中是否出現錯誤。而不同之處在于,函數級API通常運行在本地環境,而RESTful API運行在云端環境,API的調用形式不同,整體的交互環境和測試框架也有所差異。

3.1函數級 API

函數級API(Function-level API)主要是指庫API和系統調用。一般軟件開發過程中,開發人員編寫的單個函數或者軟件模塊中暴露的API接口也屬于函數級API范疇。對于這一類API的自動化測試主要通過由開發人員編寫的或者自動生成的測試驅動(test driver)完成。

庫API指的是SDK(Software Development Kit)、標準庫(Standard libraries)和第三方庫(Third-party libraries)開放給軟件開發人員調用的函數,如Android SDK和Python官方標準庫中的API。庫API通常是構建整個應用程序的基礎,軟件提供給用戶的各種高級功能都將通過調用已有API或者組合已有API的方式實現,因此庫API的正確性和安全性不言而喻。

系統調用(syscall)指的是操作系統中提供給開發人員進行用戶空間和系統內核進行交互的接口,用于訪問底層的操作系統功能,如Linux中的open、malloc和fork。

3.2RESTful API

RESTful API通過直觀簡短的統一資源標識符(URI)定義資源,通過JSON、XML等文件格式進行數據傳輸。RESTful API使用基于HTTP動詞的語義的操作來操作這些資源,例如GET、POST、DELETE和PUT。在處理HTTP請求期間,API可能需要從數據庫讀取/寫入數據,并與其他web服務通信。測試RESTful API不僅需要為不同的端點編寫HTTP消息,還需要選擇正確的查詢參數,以及正文有效載荷消息。

本文系統介紹了應用程序編程接口(API)的概念及其在軟件開發中的作用與重要性,重點分享自動化API測試的發展歷程與測試對象。后續,在基于應用程序編程接口(API)的自動化測試(下)中,筆者將深入剖析單元測試、模糊測試等當前主流的自動化API測試形式與技術。

參考文獻:

[1] Vaggelis Atlidakis, Patrice Godefroid, and Marina Polishchuk. 2019. RESTler: Stateful REST API Fuzzing. In 2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE), 748–758.

[2] Domagoj Babi?, Stefan Bucur, Yaohui Chen, Franjo Ivan?i?, Tim King, Markus Kusano, Caroline Lemieux, László Szekeres, and Wei Wang. 2019. FUDGE: fuzz driver generation at scale. In Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE 2019), Association for Computing Machinery, New York, NY, USA, 975–985.

[3] Sujit Kumar Chakrabarti and Prashant Kumar. 2009. Test-the-REST: An Approach to Testing RESTful Web-Services. In 2009 Computation World: Future Computing, Service Computation, Cognitive, Adaptive, Content, Patterns, 302–308

[4] Harrison Green and Thanassis Avgerinos. 2022. GraphFuzz: Library API Fuzzing with Lifetime-aware Dataflow Graphs. In 2022 IEEE/ACM 44th International Conference on Software Engineering (ICSE), 1070–1081

[5] Kyriakos Ispoglou, Daniel Austin, Vishwath Mohan, and Mathias Payer. 2020. {FuzzGen}: Automatic Fuzzer Generation. 2271–2287. Retrieved July 5, 2023

[6] Carlos Pacheco, Shuvendu K. Lahiri, Michael D. Ernst, and Thomas Ball. 2007. Feedback-Directed Random Test Generation. In 29th International Conference on Software Engineering (ICSE’07), IEEE, Minneapolis, MN, USA, 75–84.

[7] 2023. API. Wikipedia. Retrieved August 16, 2023

[8] 2023. EvoMaster: A Tool For Automatically Generating System-Level Test Cases. Retrieved August 16, 2023

[9] pytest: helps you write better programs — pytest documentation. Retrieved August 16, 2023

[10] JUnit 5. Retrieved August 16, 2023

[11] libFuzzer – a library for coverage-guided fuzz testing. — LLVM 18.0.0git documentation. Retrieved August 16, 2023

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 自動化測試
    +關注

    關注

    0

    文章

    204

    瀏覽量

    26892
  • API
    API
    +關注

    關注

    2

    文章

    1485

    瀏覽量

    61814
  • 編程接口
    +關注

    關注

    1

    文章

    36

    瀏覽量

    7978
收藏 人收藏

    評論

    相關推薦

    OPhone自動化測試技術概述

    本文將對OPhone平臺上可采用的幾種自動化測試技術進行介紹,并對每種技術的優缺點做簡要的總結。OPhone臺除了為應用程序開發提供豐富的API外,也為開展
    發表于 05-06 08:58

    自動化測試框架思想和構建

    自動化測試一般是指軟件測試自動化,軟件測試就是在預設條件下運行系統或應用程序,評估運行結果,預
    發表于 07-18 06:52

    JavaScript API自動化測試方案的管理設計與實現

    Logcat并寫入,最終寫成方案并測試,在應用程序中,JavaScript API作為連接程序與web頁面的橋梁,擴展了內嵌web頁面的JavaScript的能力,為web應用帶來更好
    發表于 11-07 11:10 ?5次下載
    JavaScript <b class='flag-5'>API</b><b class='flag-5'>自動化</b><b class='flag-5'>測試</b>方案的管理設計與實現

    Android應用程序GUI遍歷自動化方法

    和性能。 為了提高應用程序自動執行技術的圖形用戶界面( GUI)覆蓋率和自動化程度以滿足Android應用
    發表于 12-09 11:06 ?0次下載
    Android<b class='flag-5'>應用程序</b>GUI遍歷<b class='flag-5'>自動化</b>方法

    使用Postman成功實現API測試自動化的最佳實踐

      API 測試自動化支持兩個獨立軟件系統之間的通信和數據交換。實現 API 的軟件系統包含可由另一個軟件系統執行的功能/子例程。它通過增加測試
    的頭像 發表于 06-20 10:19 ?905次閱讀

    使用Postman成功實現API測試自動化的最佳實踐

      API 測試自動化支持兩個獨立軟件系統之間的通信和數據交換。實現 API 的軟件系統包含可由另一個軟件系統執行的功能/子例程。它通過增加測試
    的頭像 發表于 07-05 10:46 ?931次閱讀

    使用Postman成功實現API測試自動化的最佳實踐

    API代表應用程序編程接口,用于通過使用任何通信模式來平滑兩個不同應用程序之間的交互。每次您在智能手機上查看天氣或火車時間時,您都在使用
    的頭像 發表于 12-08 15:01 ?646次閱讀
    使用Postman成功實現<b class='flag-5'>API</b><b class='flag-5'>測試</b><b class='flag-5'>自動化</b>的最佳實踐

    跨平臺移動應用程序測試自動化框架確保質量與速度

      隨著市場上推出的移動應用程序數量不斷增加,測試工程師努力在移動應用程序在在線市場上發布之前滿足所有測試用例。在現實世界中,它們總是悄悄潛入,并且經常重新出現,即使使用最佳的手動
    的頭像 發表于 12-09 14:21 ?711次閱讀

    測試自動化中的Python

      用于測試編程需要與開發應用程序編程不同的方法。如果你想要一種專門用于測試編碼的簡單而精簡的語言,Python 是一個不錯的選擇。Py
    的頭像 發表于 12-09 14:53 ?803次閱讀

    如何自動化測試你的接口

    不知道大家的項目是否都有對接口API進行自動化測試,反正像我們這種小公司是沒有的。由于最近一直被吐槽項目質量糟糕,只能研發自己看看有什么接口
    的頭像 發表于 04-07 15:29 ?1227次閱讀
    如何<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>你的<b class='flag-5'>接口</b>?

    什么是自動化測試框架

    自動化測試框架,即是應用于自動化測試所用的框架。按照框架的定義,自動化測試框架要么是提供可重用的
    發表于 04-18 14:44 ?875次閱讀

    基于Raspberry PI的應用程序的典型場景家庭自動化

    電子發燒友網站提供《基于Raspberry PI的應用程序的典型場景家庭自動化.zip》資料免費下載
    發表于 06-13 11:05 ?0次下載
    基于Raspberry PI的<b class='flag-5'>應用程序</b>的典型場景家庭<b class='flag-5'>自動化</b>

    什么是自動測試設備(ATE)?如何進行自動化測試

    自動測試設備(ATE)可以是利用少量設備的簡單測試,也可以是大型復雜測試,包括探測站、氣動自動化、以及機器人自動化等。,而現在,
    的頭像 發表于 05-09 16:46 ?2394次閱讀
    什么是<b class='flag-5'>自動測試</b>設備(ATE)?如何進行<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>?

    接口自動化測試流程講解 企業接口自動化測試步驟

    接口自動化測試是指通過編寫腳本或使用自動化工具,對軟件系統的接口進行測試的過程。
    發表于 07-28 14:54 ?2154次閱讀
    <b class='flag-5'>接口</b><b class='flag-5'>自動化</b><b class='flag-5'>測試</b>流程講解 企業<b class='flag-5'>接口</b><b class='flag-5'>自動化</b><b class='flag-5'>測試</b>步驟

    基于應用程序編程接口API)的自動化測試(下)

    本文將深入剖析單元測試、模糊測試等當前主流的自動化API測試形式與技術。
    的頭像 發表于 09-20 17:16 ?914次閱讀
    基于<b class='flag-5'>應用程序</b><b class='flag-5'>編程</b><b class='flag-5'>接口</b>(<b class='flag-5'>API</b>)的<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>(下)