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