摘要:要寫(xiě)出一個(gè)健壯的程序必須要有測(cè)試,測(cè)試可以保證上線(xiàn)的代碼功能符合預(yù)期,防止上線(xiàn)后出現(xiàn)莫須有的損失。根據(jù)這樣的想法,于是編寫(xiě)了一個(gè)測(cè)試框架。的使用非常簡(jiǎn)單,你只需要把你的測(cè)試案例信息寫(xiě)成固定的格式,包括請(qǐng)求信息,預(yù)期響應(yīng)信息,預(yù)期的數(shù)據(jù)信息。
要寫(xiě)出一個(gè)健壯的程序必須要有測(cè)試,測(cè)試可以保證上線(xiàn)的代碼功能符合預(yù)期,防止上線(xiàn)后出現(xiàn)莫須有的損失。對(duì)于我們一口氣寫(xiě)完的api,匆忙上線(xiàn)往往會(huì)導(dǎo)致很糟糕的后果。
那么怎么去寫(xiě)測(cè)試來(lái)保證我們的api上線(xiàn)后是沒(méi)問(wèn)題且符合預(yù)期的呢?一個(gè)后臺(tái)工程師為了不背鍋,如何去需要保證自己的工作完成得沒(méi)問(wèn)題呢?
注意:我們這里討論的是api符合預(yù)期,對(duì)于客戶(hù)端ui顯示,不在我們討論范圍內(nèi)。
我覺(jué)得要做好api測(cè)試,至少有以下三點(diǎn):
測(cè)試案例的返回結(jié)果符合預(yù)期
測(cè)試案例覆蓋了所有代碼條件
測(cè)試案例的結(jié)果數(shù)據(jù)符合預(yù)期
簡(jiǎn)單的說(shuō)就是,充分理解業(yè)務(wù)的情況下,編寫(xiě)出完整的測(cè)試案例集,然后通過(guò)測(cè)試案例集驗(yàn)證了返回結(jié)果以及存儲(chǔ)數(shù)據(jù)的準(zhǔn)確性。這就是保證api正確的核心。
根據(jù)這樣的想法,于是編寫(xiě)了一個(gè)測(cè)試框架 Guardian。Guardian 的使用非常簡(jiǎn)單,你只需要把你的測(cè)試案例信息寫(xiě)成固定的json格式,包括請(qǐng)求信息,預(yù)期響應(yīng)信息,預(yù)期的數(shù)據(jù)信息。然后運(yùn)行命令,guardian 就會(huì)幫你跑完所有測(cè)試案例,并驗(yàn)證最終的結(jié)果返回輸出到終端中。
使用如這個(gè)例子:
guardian --tests=./example/tests/entrance.json SUIT: users ================================================= 獲取用戶(hù) Ok ------------------------------------------------- 響應(yīng)比對(duì) ?? 數(shù)據(jù)比對(duì) ?? ================================================= 修改用戶(hù) Ok ------------------------------------------------- 響應(yīng)比對(duì) ?? 數(shù)據(jù)比對(duì) ?? ================================================= Ok SUIT: orders ================================================= 獲取訂單 Ok ------------------------------------------------- 響應(yīng)比對(duì) ?? 數(shù)據(jù)比對(duì) ?? ================================================= 創(chuàng)建訂單 Ok ------------------------------------------------- 響應(yīng)比對(duì) ?? 數(shù)據(jù)比對(duì) ?? ================================================= Okjson文件格式 入口文件
選項(xiàng)名 | 子選項(xiàng)名 | 描述 | 格式 | 是否必須 | 例子 |
---|---|---|---|---|---|
database | port | 端口 | 字符串 | 是 | 3306 |
user | 用戶(hù) | 字符串 | 是 | root | |
password | 密碼 | 字符串 | 是 | root | |
charset | 字符集 | 字符串 | 是 | utf8 | |
host | 地址 | 字符串 | 是 | 127.0.0.1 | |
database | 數(shù)據(jù)庫(kù)名 | 字符串 | 是 | guardian | |
tables | 無(wú) | 案例集 | 對(duì)象 | 是 | { "users": [ "users/get.json", "users/post.json" ], "orders": ["orders/get.json","orders/post.json"] } |
vars | 無(wú) | 全局變量 | 對(duì)象 | 否 | { "host": "http://127.0.0.1:1235" } |
debug | 無(wú) | 設(shè)置為true則會(huì) 打印所有返回結(jié)果 與數(shù)據(jù)庫(kù)查詢(xún)結(jié)果 |
布爾 | 否 | false |
選項(xiàng)名 | 子選項(xiàng)名 | 描述 | 格式 | 是否必須 | 例子 |
---|---|---|---|---|---|
info | title | 標(biāo)題 | 字符串 | 是 | 這是一個(gè)標(biāo)題 |
description | 描述 | 字符串 | 是 | 這是一個(gè)描述 | |
concurrent | 無(wú) | 并發(fā)數(shù) | 整數(shù) | 否 | 1 |
request | url | url | 字符串 | 是 | {{host}}/user |
method | 方法有:json, get, post, delete, options, formget, formpost | 字符串 | 是 | get | |
params | 參數(shù) | 對(duì)象或數(shù)組 | 否 | {"id": 1} | |
header | 頭部 | 對(duì)象 | 否 | {"token": "1231313"} | |
response | body | 返回body數(shù)據(jù),對(duì)象中可以有 通配符,如"*",表示不匹配 |
字符串或?qū)ο?/td> | 是 | 123 |
header | 頭部 | 對(duì)象 | 否 | {"token": "1231313"} | |
data | 無(wú) | 驗(yàn)證數(shù)據(jù) | 數(shù)組 | 否 | [ { "sql": "select name from user where id = 1", "result": [{"name": "jack"}] } ] |
具體可以參考:
入口json
測(cè)試案例json
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/8864.html
摘要:項(xiàng)目地址測(cè)試有幾個(gè)方面,一個(gè)是的響應(yīng),一個(gè)是持久數(shù)據(jù)庫(kù)與內(nèi)存數(shù)據(jù)庫(kù)數(shù)據(jù)的準(zhǔn)確性。為了方便測(cè)試驅(qū)動(dòng)開(kāi)發(fā),于是寫(xiě)了一個(gè)這個(gè)測(cè)試框架?,F(xiàn)在還在持續(xù)改進(jìn)開(kāi)發(fā)中,歡迎,歡迎提意見(jiàn) 項(xiàng)目地址:https://github.com/chenhg5/gu... 測(cè)試api有幾個(gè)方面,一個(gè)是api的響應(yīng),一個(gè)是持久數(shù)據(jù)庫(kù)與內(nèi)存數(shù)據(jù)庫(kù)數(shù)據(jù)的準(zhǔn)確性。編寫(xiě)測(cè)試代碼是很繁瑣的,現(xiàn)在先進(jìn)的測(cè)試方式就是表格測(cè)試,即...
摘要:在基礎(chǔ)設(shè)施方面,向公共云轉(zhuǎn)移的好處是顯而易見(jiàn)的更好地利用基礎(chǔ)設(shè)施投資,結(jié)束企業(yè)周期性硬件需求的詛咒。正如的例子所示,為了有效地遷移到云平臺(tái),企業(yè)需要進(jìn)行文化變革,然后通過(guò)接受云計(jì)算來(lái)加速變革。通過(guò)將工作負(fù)載從私有數(shù)據(jù)中心轉(zhuǎn)移到公共云中,云計(jì)算不是解決的技術(shù)問(wèn)題。正如云計(jì)算專(zhuān)家Bernard Golden所說(shuō),組織真正利用云計(jì)算需要的是對(duì)其IT方法進(jìn)行全面反思。然而即使這個(gè)聲明雖然可能很大膽,...
摘要:原文地址加密經(jīng)濟(jì)機(jī)制原則現(xiàn)有的鏈下解決方案的加密經(jīng)濟(jì)機(jī)制,通常會(huì)遭受到一些批評(píng)。狀態(tài)守護(hù)網(wǎng)絡(luò)代幣的另一個(gè)重要的價(jià)值體現(xiàn)在,通過(guò)創(chuàng)新的保險(xiǎn)模型和簡(jiǎn)單的交互,實(shí)現(xiàn)高效的流動(dòng)性效率和安全的去中心化的可用的監(jiān)護(hù)。 原文地址:https://medium.com/@CelerNetw... 加密經(jīng)濟(jì)機(jī)制原則 現(xiàn)有的鏈下解決方案的加密經(jīng)濟(jì)機(jī)制,通常會(huì)遭受到一些批評(píng)。因?yàn)檫@些項(xiàng)目發(fā)行的代幣除了充當(dāng)支...
摘要:對(duì)于每個(gè)案例,我們插入所需要的測(cè)試數(shù)據(jù),調(diào)用需要測(cè)試的函數(shù)并對(duì)結(jié)果作出斷言。我們將這個(gè)套接字和用戶(hù)返回以供我們其他的測(cè)試使用。 原文地址:Elixir, Phoenix, Absinthe, GraphQL, React, and Apollo: an absurdly deep dive - Part 2 原文作者:Zach Schneider 譯文出自:掘金翻譯計(jì)劃 本文永久鏈接:gi...
摘要:通常,這種模式是通過(guò)定義一個(gè)代表處理對(duì)象的抽象類(lèi)來(lái)實(shí)現(xiàn)的,在抽象類(lèi)中會(huì)定義一個(gè)字段來(lái)記錄后續(xù)對(duì)象。工廠模式使用表達(dá)式第章中,我們已經(jīng)知道可以像引用方法一樣引用構(gòu)造函數(shù)。 一、為改善可讀性和靈活性重構(gòu)代碼 1.改善代碼的可讀性 Java 8的新特性也可以幫助提升代碼的可讀性: 使用Java 8,你可以減少冗長(zhǎng)的代碼,讓代碼更易于理解 通過(guò)方法引用和Stream API,你的代碼會(huì)變得更...
閱讀 1299·2021-09-30 09:47
閱讀 3862·2021-09-06 15:02
閱讀 1921·2021-09-01 10:46
閱讀 2449·2019-08-30 15:52
閱讀 713·2019-08-29 15:28
閱讀 1948·2019-08-29 15:08
閱讀 1240·2019-08-29 13:28
閱讀 2646·2019-08-29 12:19