国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

接口自動(dòng)化框架篇:流程封裝與基于加密接口的測(cè)試用例設(shè)計(jì)

這篇具有很好參考價(jià)值的文章主要介紹了接口自動(dòng)化框架篇:流程封裝與基于加密接口的測(cè)試用例設(shè)計(jì)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

?接口測(cè)試僅僅掌握 Requests 或者其他一些功能強(qiáng)大的庫(kù)的用法,是遠(yuǎn)遠(yuǎn)不夠的,還需要具備能根據(jù)公司的業(yè)務(wù)流程以及需求去定制化一個(gè)接口自動(dòng)化測(cè)試框架的能力。所以,接下來(lái),我們主要介紹下接口測(cè)試用例分析以及通用的流程封裝是如何完成的。

接口測(cè)試用例分析

首先在做用例分析之前,可以通過(guò)追查公司一年來(lái)所有的故障原因,定位問(wèn)題起因,或者通過(guò)與 CTO、產(chǎn)品經(jīng)理、研發(fā)、運(yùn)維、測(cè)試調(diào)查,得到質(zhì)量痛點(diǎn),還可以分析業(yè)務(wù)架構(gòu)、流程調(diào)用,以及監(jiān)控系統(tǒng)了解到業(yè)務(wù)的使用數(shù)據(jù),從而得到質(zhì)量需求。

得到質(zhì)量需求之后,通過(guò)與產(chǎn)品經(jīng)理、項(xiàng)目經(jīng)理、研發(fā)總監(jiān)等對(duì)接后得知待測(cè)業(yè)務(wù)范圍、業(yè)務(wù)場(chǎng)景用例、業(yè)務(wù)接口分析,從而確定公司的測(cè)試計(jì)劃。將測(cè)試計(jì)劃與質(zhì)量需求結(jié)合進(jìn)行分析,就可以開(kāi)始進(jìn)行業(yè)務(wù)用例的設(shè)計(jì),而接口測(cè)試用例分析,也在其內(nèi)。

質(zhì)量需求 樣例
測(cè)試痛點(diǎn) 公司的接口一直不穩(wěn)定影響用戶的使用
質(zhì)量反饋 最近半年來(lái)出現(xiàn)了幾次大的故障
回歸測(cè)試 每次升級(jí)都會(huì)影響老的功能
測(cè)試策略 目前公司沒(méi)有可靠的測(cè)試體系
重構(gòu)測(cè)試 微服務(wù)話改造需要有良好的測(cè)試體系保證

接口測(cè)試封裝思想

接口封裝思想主要分為 3 個(gè)大維度:配置、接口封裝、業(yè)務(wù)流程。其中:

  • 配置主要用作根據(jù)配置文件獲取初始配置和依賴;
  • 接口封裝遵循 APIObject 設(shè)計(jì)模式,對(duì)接口的調(diào)用進(jìn)行抽象封裝;
  • 業(yè)務(wù)流程則負(fù)責(zé)數(shù)據(jù)初始化、業(yè)務(wù)用例設(shè)計(jì),包含有多個(gè) API 形成的流程定義,不要再包含任何接口實(shí)現(xiàn)細(xì)節(jié)、以及斷言。

下面將會(huì)與實(shí)戰(zhàn)案例結(jié)合,進(jìn)行詳細(xì)的介紹。

基于加密接口的測(cè)試用例設(shè)計(jì)

由于信息安全原因,許多接口在傳輸?shù)臅r(shí)候會(huì)對(duì)請(qǐng)求與響應(yīng)進(jìn)行加密處理,如果直接對(duì)這部分?jǐn)?shù)據(jù)做斷言顯然是行不通的。還需要對(duì)這部分接口額外進(jìn)行解密的處理之后,才可以對(duì)已解密的接口進(jìn)行斷言。

環(huán)境準(zhǔn)備

在進(jìn)行實(shí)戰(zhàn)之前,需要先準(zhǔn)備一個(gè)對(duì)響應(yīng)加密的接口。對(duì)它發(fā)起一個(gè) get 請(qǐng)求后,得到一個(gè)加密過(guò)后的響應(yīng)信息。

先準(zhǔn)備一個(gè) JSON 格式 demo:

{"topics":
{
"orange":"movie",
"shool":"testing-studio",
"president":"seveniruby"
}
}

使用 base64 對(duì)其做加密,得到一個(gè)加密后的文件 demo64.txt

base64 demo.json >demo64.txt

使用 Python 命令在 “demo64.txt” 所在目錄啟動(dòng)一個(gè)服務(wù)

python -m http.server 10000

啟動(dòng)后的樣子如圖:

?使用curl命令對(duì)這個(gè)服務(wù)進(jìn)行g(shù)et請(qǐng)求:

curl http://127.0.0.1:10000/demo64.txt

如果請(qǐng)求成功的話就代表環(huán)境已經(jīng)準(zhǔn)備成功

實(shí)戰(zhàn)練習(xí)

調(diào)用 base64,直接對(duì)返回的請(qǐng)求做解密,即可得到解密后的響應(yīng),將解密后的響應(yīng)轉(zhuǎn)為 JSON 格式,此時(shí)就可以對(duì)這個(gè)返回值做斷言且不會(huì)報(bào)錯(cuò)了。

import base64
import json
import requests
class TestEncode:
    url = "http://127.0.0.1:10000/demo64.txt"
    def test_encode(self):
        r = requests.get(self.url)
        encode = json.loads(base64.b64decode(r.content))
        assert encode["topics"]["president"] == "seveniruby"

這樣的寫法顯然不夠優(yōu)雅,如果被測(cè)接口的協(xié)議發(fā)生變化,Requests 庫(kù)無(wú)法支持改變后的協(xié)議,需要調(diào)用別的第三庫(kù)發(fā)送請(qǐng)求信息,則還是需要修改底層的源碼。碰到這種情況,可以增加一層封裝,構(gòu)造一層更加通用的發(fā)送方法。

首先需要通過(guò)一個(gè)字典的結(jié)構(gòu)體,保存所有的請(qǐng)求信息,包括發(fā)送的協(xié)議、解碼方式、請(qǐng)求 method 等等,而這種字典形式的結(jié)構(gòu)體也為后面的數(shù)據(jù)驅(qū)動(dòng)改造做好了一個(gè)重要的鋪墊。

 req_data={
            "schema": "http",
            "method": "get",
            "url": "http://127.0.0.1:10000/demo64.txt",
            "headers": None
        }

通過(guò)請(qǐng)求信息的結(jié)構(gòu)體中的schema,添加判斷條件,去選擇不同的請(qǐng)求協(xié)議。舉個(gè)例子,如果 schema 為“http”的話,就選擇調(diào)用被封裝的 requests 庫(kù)。

 class ApiRequest:
    #構(gòu)造send方法,通過(guò)
    def send(self, data: dict):
        if "http" == data["schema"] :
            res = requests.request(data["method"],data["url"],header=data["headers"])
            return json.loads(base64.decode(res.content))
        elif "dubbo" ==  data["schema"]:
            pass
        elif "websocket" == data["schema"]:
            pass
        else:
            pass        

調(diào)用在ApiRequest類中的send方法發(fā)送請(qǐng)求并進(jìn)行斷言

class TestEncode:
   def test_api(self):
        req_data={
            "schema": "http",
            "encoding": "base64",
            "method": "get",
            "url": "http://127.0.0.1:10000/demo64.txt",
            "headers": None
        }
        re = ApiRequest()
        data = re.send(req_data)
        assert data["topics"]["president"] == "seveniruby"

如果面對(duì)不同的算法,還需要修改底層的源碼,所以需要把算法封裝。需要使用哪個(gè)算法,就使用哪個(gè)。封裝的思想與上面相同。首先在字典結(jié)構(gòu)體中添加一個(gè) encoding 字段,用來(lái)判斷選擇的不同的加密條件。

 req_data={
            "schema": "http",
            "method": "get",
            "url": "http://127.0.0.1:10000/demo64.txt",
            "headers": None,
            "encoding": "base64"
        }

還是通過(guò)請(qǐng)求信息的結(jié)構(gòu)體中的 encoding,添加判斷條件,去選擇不同的解密方式。

class ApiRequest:
    def send(self, data: dict):
        if "http" == data["schema"] :
            res = requests.request(data["method"],data["url"],headers=data["headers"])
            return json.loads(base64.b64decode(res.content))
            #通過(guò)請(qǐng)求信息的結(jié)構(gòu)體中的`encoding`,去選擇不同的解密方式。
            if data["encoding"] == "base64":
                return json.loads(base64.b64decode(res.content))
            elif data["encoding"] == "private":
                return json.loads(requests.post("url", data=res.content).content)
            else:
                return json.loads(res.content)

總結(jié)

首先需要明確在面對(duì)一個(gè)加密的響應(yīng)結(jié)果,可以使用什么樣的處理方式:

  1. 如果知道使用的是哪個(gè)通用加密算法的話,可以自行解決。
  2. 如果不了解對(duì)應(yīng)的加密算法的話,可以讓研發(fā)提供加解密的 lib。
  3. 如果既不是通用加密算法、研發(fā)也無(wú)法提供加解密的 lib 的話,可以讓加密方提供遠(yuǎn)程解析服務(wù),這樣算法仍然是保密的。

本文主要講的是在了解使用加密算法的情況下,如何處理這樣的解密算法。但是封裝的思路都是相通的,不管是面對(duì)哪種情況,都可以通過(guò)格式化的數(shù)據(jù),指明數(shù)據(jù)的內(nèi)容,并通過(guò)一層邏輯的封裝,將加解密或者選擇的協(xié)議封裝進(jìn)去。

最后如果你想學(xué)習(xí)自動(dòng)化測(cè)試和需要軟件測(cè)試資料,歡迎加入筆者的交流群:320231853,里面會(huì)有很多測(cè)試資源和大佬答疑解惑,我們一起交流一起學(xué)習(xí)!

搜索

復(fù)制文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-711141.html

到了這里,關(guān)于接口自動(dòng)化框架篇:流程封裝與基于加密接口的測(cè)試用例設(shè)計(jì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于Pytest+Allure+Excel的接口自動(dòng)化測(cè)試框架

    基于Pytest+Allure+Excel的接口自動(dòng)化測(cè)試框架

    Allure 框架是一個(gè)靈活的、輕量級(jí)的、支持多語(yǔ)言的測(cè)試報(bào)告工具,它不僅以 Web 的方式展示了簡(jiǎn)介的測(cè)試結(jié)果,而且允許參與開(kāi)發(fā)過(guò)程的每個(gè)人可以從日常執(zhí)行的測(cè)試中,最大限度地提取有用信息。 Allure 是由 Java 語(yǔ)言開(kāi)發(fā)的,支持 Pytest,JaveScript、PHP、Ruby 等。 從 DEV/QA 的角

    2024年02月09日
    瀏覽(29)
  • 如何基于YAML設(shè)計(jì)接口自動(dòng)化測(cè)試框架?看完秒會(huì)

    如何基于YAML設(shè)計(jì)接口自動(dòng)化測(cè)試框架?看完秒會(huì)

    在設(shè)計(jì)自動(dòng)化測(cè)試框架的時(shí)候,我們會(huì)經(jīng)常將測(cè)試數(shù)據(jù)保存在外部的文件(如Excel、YAML、CSV)或者數(shù)據(jù)庫(kù)中,實(shí)現(xiàn)腳本與數(shù)據(jù)解耦,方便后期維護(hù)。目前非常多的自動(dòng)化測(cè)試框架采用通過(guò)Excel或者YAML文件直接編寫測(cè)試用例,通過(guò)腳本讀取出來(lái)驅(qū)動(dòng)自動(dòng)化測(cè)試代碼執(zhí)行。 至于采

    2023年04月24日
    瀏覽(21)
  • 接口自動(dòng)化測(cè)試套件封裝示例

    ?在Python中,我們可以使用requests庫(kù)來(lái)實(shí)現(xiàn)接口自動(dòng)化測(cè)試,并使用unittest或pytest等測(cè)試框架來(lái)組織和運(yùn)行測(cè)試套件。以下是一個(gè)基本的接口自動(dòng)化測(cè)試套件封裝示例: 首先,我們需要安裝所需的庫(kù): 創(chuàng)建一個(gè)項(xiàng)目目錄結(jié)構(gòu),如下所示: 同時(shí),在這我也準(zhǔn)備了一份軟件測(cè)試視

    2024年02月03日
    瀏覽(19)
  • Python接口自動(dòng)化之request請(qǐng)求封裝

    Python接口自動(dòng)化之request請(qǐng)求封裝

    我們?cè)谧鲎詣?dòng)化測(cè)試的時(shí)候,大家都是希望自己寫的代碼越簡(jiǎn)潔越好,代碼重復(fù)量越少越好。那么,我們可以考慮將request的請(qǐng)求類型(如:Get、Post、Delect請(qǐng)求)都封裝起來(lái)。這樣,我們?cè)诰帉懹美臅r(shí)候就可以直接進(jìn)行請(qǐng)求了。 我們先來(lái)看一下Get、Post、Delect等請(qǐng)求的源碼,

    2024年02月13日
    瀏覽(22)
  • python+selenium封裝UI自動(dòng)化框架

    python+selenium封裝UI自動(dòng)化框架

    seleinum框架 框架的思想: 解決我們測(cè)試過(guò)程中的問(wèn)題:大量的重復(fù)步驟,用自動(dòng)化來(lái)實(shí)現(xiàn) 1)配置和程序的分離 2)測(cè)試數(shù)據(jù)和程序的分離 3)不懂編程的人員可以方便使用:使用的時(shí)候不需要寫程序 4)有日志功能,實(shí)現(xiàn)無(wú)人值守 5)自動(dòng)發(fā)報(bào)告 6)框架中不要有重復(fù)的代碼,

    2024年02月09日
    瀏覽(22)
  • Python接口自動(dòng)化搭建過(guò)程,含request請(qǐng)求封裝

    Python接口自動(dòng)化搭建過(guò)程,含request請(qǐng)求封裝

    接口測(cè)試自動(dòng)化好處 顯而易見(jiàn)的好處就是解放雙手??。 可以在短時(shí)間內(nèi)自動(dòng)執(zhí)行大量的測(cè)試用例 通過(guò)參數(shù)化和數(shù)據(jù)驅(qū)動(dòng)的方式進(jìn)行測(cè)試數(shù)據(jù)的變化,提高測(cè)試覆蓋范圍 快速反饋測(cè)試執(zhí)行結(jié)果和報(bào)告 支持持續(xù)集成和持續(xù)交付的流程 使用Requests+pytest+allure搭建測(cè)試框架的目的

    2024年02月07日
    瀏覽(31)
  • 自動(dòng)化測(cè)試(三):接口自動(dòng)化pytest測(cè)試框架

    自動(dòng)化測(cè)試(三):接口自動(dòng)化pytest測(cè)試框架

    API:Application Programming Interface 接口自動(dòng)化按照自動(dòng)化的工具可分為 基于 接口測(cè)試工具 的接口自動(dòng)化 eg1:Postman+Newman+git/Svn+Jenkins(基于Javascript語(yǔ)言)接口自動(dòng)化 Postman :創(chuàng)建和發(fā)送 API 請(qǐng)求,并對(duì)響應(yīng)進(jìn)行斷言和驗(yàn)證。 Newman : Postman 的命令行工具,它允許測(cè)試人員在沒(méi)有界

    2024年02月10日
    瀏覽(94)
  • 接口自動(dòng)化測(cè)試框架

    接口自動(dòng)化測(cè)試框架

    另外,現(xiàn)階段流行推薦使用:Python+unittest+requests+HTMLTestRunner框架 ??Java Rest-assured 是使用代碼來(lái)實(shí)現(xiàn)接口的請(qǐng)求,封裝業(yè)務(wù)流程,對(duì)于公司的業(yè)務(wù)支持比較高,靈活度很強(qiáng),可以通過(guò)代碼的方式打造自己公司的接口自動(dòng)化框架,上手有點(diǎn)難度,需要有Java 編程基礎(chǔ),才可以使用

    2024年02月04日
    瀏覽(19)
  • python接口自動(dòng)化封裝導(dǎo)出excel方法和讀寫excel數(shù)據(jù)

    python接口自動(dòng)化封裝導(dǎo)出excel方法和讀寫excel數(shù)據(jù)

    一、首先需要思考,我們?cè)陧?yè)面導(dǎo)出excel,用python導(dǎo)出如何寫入文件的 封裝前需要確認(rèn)python導(dǎo)出excel接口返回的是一個(gè)什么樣的數(shù)據(jù)類型 如下:我們先看下不對(duì)返回結(jié)果做處理,直接接收數(shù)據(jù)類型是一個(gè)對(duì)象,無(wú)法獲取返回值 此時(shí)我們需要對(duì)返回?cái)?shù)據(jù)做處理,如下; respons

    2024年02月16日
    瀏覽(24)
  • 接口自動(dòng)化測(cè)試框架設(shè)計(jì)

    接口自動(dòng)化測(cè)試框架設(shè)計(jì)

    測(cè)試系統(tǒng)間接口的一種測(cè)試,測(cè)試的對(duì)象主要是接口,主要是測(cè)試外部系統(tǒng)與所測(cè)試系統(tǒng)之間以及內(nèi)部系統(tǒng)之間的交互點(diǎn)。 前后端分離,通過(guò)測(cè)試保證服務(wù)端的正確性 基于安全考慮,前端驗(yàn)證很容易跳過(guò)。 BUG更容易定位 自動(dòng)化測(cè)試落地性價(jià)比更高,比UI更穩(wěn)定 測(cè)試提前,降

    2024年01月19日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包