欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于應(yīng)用程序編程接口(API)的自動(dòng)化測(cè)試(上)

上??匕?/a> ? 來源:上??匕?/span> ? 作者:上??匕?/span> ? 2023-09-01 11:17 ? 次閱讀

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

蘇亭 華東師范大學(xué)軟件工程學(xué)院教授

版塊 |鑒源論壇 · 觀模

社群 |添加微信號(hào)TICPShanghai”加入“上??匕?1fusa安全社區(qū)”

01

應(yīng)用程序編程接口(API

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

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

02

自動(dòng)化API測(cè)試

隨著軟件技術(shù)的發(fā)展,由于軟件結(jié)構(gòu)的高度復(fù)雜和軟件開發(fā)周期的不斷縮短,為了確保應(yīng)用程序的質(zhì)量和安全,API自身的功能正確性和使用安全性越來越重要,能快速有效地對(duì)API進(jìn)行測(cè)試是關(guān)鍵。API測(cè)試是一種直接對(duì)API進(jìn)行測(cè)試的軟件測(cè)試技術(shù),主要用于保證開發(fā)人員所編寫的API滿足給定的功能目標(biāo)、性能目標(biāo)和安全目標(biāo)。

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

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

03

自動(dòng)化API測(cè)試對(duì)象

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

3.1函數(shù)級(jí) API

函數(shù)級(jí)API(Function-level API)主要是指庫API和系統(tǒng)調(diào)用。一般軟件開發(fā)過程中,開發(fā)人員編寫的單個(gè)函數(shù)或者軟件模塊中暴露的API接口也屬于函數(shù)級(jí)API范疇。對(duì)于這一類API的自動(dòng)化測(cè)試主要通過由開發(fā)人員編寫的或者自動(dòng)生成的測(cè)試驅(qū)動(dòng)(test driver)完成。

庫API指的是SDK(Software Development Kit)、標(biāo)準(zhǔn)庫(Standard libraries)和第三方庫(Third-party libraries)開放給軟件開發(fā)人員調(diào)用的函數(shù),如Android SDK和Python官方標(biāo)準(zhǔn)庫中的API。庫API通常是構(gòu)建整個(gè)應(yīng)用程序的基礎(chǔ),軟件提供給用戶的各種高級(jí)功能都將通過調(diào)用已有API或者組合已有API的方式實(shí)現(xiàn),因此庫API的正確性和安全性不言而喻。

系統(tǒng)調(diào)用(syscall)指的是操作系統(tǒng)中提供給開發(fā)人員進(jìn)行用戶空間和系統(tǒng)內(nèi)核進(jìn)行交互的接口,用于訪問底層的操作系統(tǒng)功能,如Linux中的open、malloc和fork。

3.2RESTful API

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

本文系統(tǒng)介紹了應(yīng)用程序編程接口(API)的概念及其在軟件開發(fā)中的作用與重要性,重點(diǎn)分享自動(dòng)化API測(cè)試的發(fā)展歷程與測(cè)試對(duì)象。后續(xù),在基于應(yīng)用程序編程接口(API)的自動(dòng)化測(cè)試(下)中,筆者將深入剖析單元測(cè)試、模糊測(cè)試等當(dāng)前主流的自動(dòng)化API測(cè)試形式與技術(shù)。

參考文獻(xiàn):

[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

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 自動(dòng)化測(cè)試

    關(guān)注

    0

    文章

    215

    瀏覽量

    26974
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1513

    瀏覽量

    62438
  • 編程接口
    +關(guān)注

    關(guān)注

    1

    文章

    38

    瀏覽量

    8018
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    OPhone自動(dòng)化測(cè)試技術(shù)概述

    本文將對(duì)OPhone平臺(tái)上可采用的幾種自動(dòng)化測(cè)試技術(shù)進(jìn)行介紹,并對(duì)每種技術(shù)的優(yōu)缺點(diǎn)做簡(jiǎn)要的總結(jié)。OPhone臺(tái)除了為應(yīng)用程序開發(fā)提供豐富的API外,也為開展
    發(fā)表于 05-06 08:58

    自動(dòng)化測(cè)試框架思想和構(gòu)建

    自動(dòng)化測(cè)試一般是指軟件測(cè)試自動(dòng)化,軟件測(cè)試就是在預(yù)設(shè)條件下運(yùn)行系統(tǒng)或應(yīng)用程序,評(píng)估運(yùn)行結(jié)果,預(yù)
    發(fā)表于 07-18 06:52

    HarmonyOS自動(dòng)化測(cè)試框架—Hypium

    從零開始,讓測(cè)試更加簡(jiǎn)單、高效。 圖1 Hypium應(yīng)用程序自動(dòng)化測(cè)試,從應(yīng)用場(chǎng)景主要分為兩類:一類主要
    發(fā)表于 08-10 17:13

    JavaScript API自動(dòng)化測(cè)試方案的管理設(shè)計(jì)與實(shí)現(xiàn)

    Logcat并寫入,最終寫成方案并測(cè)試,在應(yīng)用程序中,JavaScript API作為連接程序與web頁面的橋梁,擴(kuò)展了內(nèi)嵌web頁面的JavaScript的能力,為web應(yīng)用帶來更好
    發(fā)表于 11-07 11:10 ?5次下載
    JavaScript <b class='flag-5'>API</b><b class='flag-5'>自動(dòng)化</b><b class='flag-5'>測(cè)試</b>方案的管理設(shè)計(jì)與實(shí)現(xiàn)

    Android應(yīng)用程序GUI遍歷自動(dòng)化方法

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

    使用Postman成功實(shí)現(xiàn)API測(cè)試自動(dòng)化的最佳實(shí)踐

      API 測(cè)試自動(dòng)化支持兩個(gè)獨(dú)立軟件系統(tǒng)之間的通信和數(shù)據(jù)交換。實(shí)現(xiàn) API 的軟件系統(tǒng)包含可由另一個(gè)軟件系統(tǒng)執(zhí)行的功能/子例程。它通過增加測(cè)試
    的頭像 發(fā)表于 06-20 10:19 ?969次閱讀

    使用Postman成功實(shí)現(xiàn)API測(cè)試自動(dòng)化的最佳實(shí)踐

      API 測(cè)試自動(dòng)化支持兩個(gè)獨(dú)立軟件系統(tǒng)之間的通信和數(shù)據(jù)交換。實(shí)現(xiàn) API 的軟件系統(tǒng)包含可由另一個(gè)軟件系統(tǒng)執(zhí)行的功能/子例程。它通過增加測(cè)試
    的頭像 發(fā)表于 07-05 10:46 ?997次閱讀

    使用Postman成功實(shí)現(xiàn)API測(cè)試自動(dòng)化的最佳實(shí)踐

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

    跨平臺(tái)移動(dòng)應(yīng)用程序測(cè)試自動(dòng)化框架確保質(zhì)量與速度

      隨著市場(chǎng)上推出的移動(dòng)應(yīng)用程序數(shù)量不斷增加,測(cè)試工程師努力在移動(dòng)應(yīng)用程序在在線市場(chǎng)上發(fā)布之前滿足所有測(cè)試用例。在現(xiàn)實(shí)世界中,它們總是悄悄潛入,并且經(jīng)常重新出現(xiàn),即使使用最佳的手動(dòng)
    的頭像 發(fā)表于 12-09 14:21 ?768次閱讀

    測(cè)試自動(dòng)化中的Python

      用于測(cè)試編程需要與開發(fā)應(yīng)用程序編程不同的方法。如果你想要一種專門用于測(cè)試編碼的簡(jiǎn)單而精簡(jiǎn)的語言,Python 是一個(gè)不錯(cuò)的選擇。Py
    的頭像 發(fā)表于 12-09 14:53 ?875次閱讀

    如何自動(dòng)化測(cè)試你的接口?

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

    什么是自動(dòng)化測(cè)試框架

    自動(dòng)化測(cè)試框架,即是應(yīng)用于自動(dòng)化測(cè)試所用的框架。按照框架的定義,自動(dòng)化測(cè)試框架要么是提供可重用的
    發(fā)表于 04-18 14:44 ?956次閱讀

    基于Raspberry PI的應(yīng)用程序的典型場(chǎng)景家庭自動(dòng)化

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

    接口自動(dòng)化測(cè)試流程講解 企業(yè)接口自動(dòng)化測(cè)試步驟

    接口自動(dòng)化測(cè)試是指通過編寫腳本或使用自動(dòng)化工具,對(duì)軟件系統(tǒng)的接口進(jìn)行測(cè)試的過程。
    發(fā)表于 07-28 14:54 ?2315次閱讀
    <b class='flag-5'>接口</b><b class='flag-5'>自動(dòng)化</b><b class='flag-5'>測(cè)試</b>流程講解 企業(yè)<b class='flag-5'>接口</b><b class='flag-5'>自動(dòng)化</b><b class='flag-5'>測(cè)試</b>步驟

    基于應(yīng)用程序編程接口API)的自動(dòng)化測(cè)試(下)

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