charles Mock測試總結(jié)

1、背景

測試存在問題:
1、測試環(huán)境接口不穩(wěn)定
2、業(yè)務(wù)系統(tǒng)不是孤立存在的,關(guān)聯(lián)方太多,而且關(guān)聯(lián)系統(tǒng)常常出現(xiàn)不穩(wěn)定的情況
3、暫時(shí)無可用Mock server工具
4、接口未提測驗(yàn)收完成,前端測試提前介入
影響:
測試依賴數(shù)據(jù),依賴接口阻塞導(dǎo)致測試延期,干耗時(shí)間成本人力成本
解決方案:
引入Mock測試,有了Mock,測試童鞋在后端接口未準(zhǔn)備好時(shí)按照接口文檔就可以開始造數(shù)據(jù)進(jìn)行測試工作,不會出現(xiàn)測試一直等待開發(fā)的情況,也可以開發(fā)聯(lián)調(diào)與測試進(jìn)行。這樣的話,開發(fā)自測階段就可以及早開展,從而發(fā)現(xiàn)缺陷的時(shí)機(jī)也提前了,有利于整個(gè)產(chǎn)品app測試覆蓋率提升和產(chǎn)品項(xiàng)目進(jìn)度的保證

2、環(huán)境配置及準(zhǔn)備

2.1、安裝charles及一些配置項(xiàng)說明

去 Charles 的官方網(wǎng)站(http://www.charlesproxy.com)下載最新版的 Charles 安裝包,是一個(gè) dmg 后綴的文件。打開后將 Charles 拖到 Application 目錄下即完成安裝。

  • 2.1.1將 Charles 設(shè)置成系統(tǒng)代理

Charles 是通過將自己設(shè)置成代理服務(wù)器來完成封包截取的,所以使用 Charles 的第一步是將其設(shè)置成系統(tǒng)的代理服務(wù)器。

啟動 Charles 后,第一次 Charles 會請求你給它設(shè)置系統(tǒng)代理的權(quán)限。你可以輸入登錄密碼授予 Charles 該權(quán)限。你也可以忽略該請求,然后在需要將 Charles 設(shè)置成系統(tǒng)代理時(shí),選擇菜單中的 “Proxy” -> “Mac OS X Proxy” 來將 Charles 設(shè)置成系統(tǒng)代理。步驟如下:

* 1、打開Charles程序
* 2、Mac連接上網(wǎng)絡(luò)paictest,查看Mac電腦的IP地址:
系統(tǒng)偏好設(shè)置->網(wǎng)絡(luò)就可以查看到了,比如我的ip地址是:172.16.0.238
* 3、將 Charles 的代理功能打開。在 Charles 的菜單欄上選擇 “Proxy”->”Proxy Settings”,
填入代理端口 8888,并且勾上 “Enable transparent HTTP proxying” 就完成了在 Charles 上
的設(shè)置。
* 4、要截取 iPhone 上的網(wǎng)絡(luò)請求:進(jìn)入當(dāng)前wifi連接paictest(Mac在一個(gè)局域網(wǎng)內(nèi)),
設(shè)置HTTP代理Group,將服務(wù)器填為上一步中獲得的IP,即172.16.0.238,端口填8888.
* 5、打開 iPhone 上的任意需要網(wǎng)絡(luò)通訊的程序,就可以看到 Charles 彈出 iPhone
 請求連接的確認(rèn)菜單(如下圖所示),點(diǎn)擊 “Allow” 即可完成設(shè)置。

之后,你就可以看到源源不斷的網(wǎng)絡(luò)請求出現(xiàn)在 Charles 的界面中,如下圖所示(由于涉及部分業(yè)務(wù),馬賽克了)。

網(wǎng)絡(luò)抓包.jpeg
  • 2.1.2安裝證書

如果你需要截取分析 Https 協(xié)議相關(guān)的內(nèi)容。那么需要安裝 Charles 的 CA 證書。具體步驟如下。

1、首先我們需要在 Mac 電腦上安裝證書。點(diǎn)擊 Charles 的頂部菜單,選擇 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate”,然后輸入系統(tǒng)的帳號密碼,即可在 KeyChain 看到添加好的證書。

需要注意的是,即使是安裝完證書之后,Charles 默認(rèn)也并不截取 Https 網(wǎng)絡(luò)通訊的信息,如果你想對截取某個(gè)網(wǎng)站上的所有 Https 網(wǎng)絡(luò)請求,可以在該請求上右擊,選擇 SSL proxy,如下圖所示:

SSL proxy setting.png

這樣,對于該 Host 的所有 SSL 請求可以被截取到了。

2、截取移動設(shè)備中的 Https 通訊信息

如果我們需要在 iOS 或 Android 機(jī)器上截取 Https 協(xié)議的通訊內(nèi)容,還需要在手機(jī)上安裝相應(yīng)的證書。點(diǎn)擊 Charles 的頂部菜單,選擇 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate on a Mobile Device or Remote Browser”,然后就可以看到 Charles 彈出的簡單的安裝教程。在設(shè)備上設(shè)置好 Charles 為代理后,在手機(jī)瀏覽器中訪問地址:http://charlesproxy.com/getssl
即可打開證書安裝的界面,安裝完證書后,就可以截取手機(jī)上的 Https 通訊內(nèi)容了。不過同樣需要注意,默認(rèn)情況下 Charles 并不做截取,你還需要在要截取的網(wǎng)絡(luò)請求上右擊,選中SSL proxy 菜單項(xiàng)。

3、組件mock測試:eg: xx app 登錄業(yè)務(wù)

3.1 編輯網(wǎng)絡(luò)請求數(shù)據(jù)了解

根據(jù)具體的需求,Charles 提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,都可以達(dá)到修改服務(wù)器返回內(nèi)容的目的。這三者在功能上的差異是:
Map 功能適合長期地將某一些請求重定向到另一個(gè)網(wǎng)絡(luò)地址或本地文件。
Rewrite 功能適合對網(wǎng)絡(luò)請求進(jìn)行一些正則替換。
Breakpoints 功能適合做一些臨時(shí)性的修改。

3.1.1 調(diào)試不同url的網(wǎng)絡(luò)請求

為了調(diào)試服務(wù)器的接口,我們需要反復(fù)嘗試不同參數(shù)的網(wǎng)絡(luò)請求。Charles 可以方便地提供網(wǎng)絡(luò)請求的修改和重發(fā)功能。只需要在以往的網(wǎng)絡(luò)請求上點(diǎn)擊右鍵,選擇 “Edit”,即可創(chuàng)建一個(gè)可編輯的網(wǎng)絡(luò)請求。如下所示:

我們可以修改該請求的任何信息,包括 URL 地址、端口、參數(shù)等,之后點(diǎn)擊 “Execute” 即可發(fā)送該修改后的網(wǎng)絡(luò)請求(如下圖所示)。

edit網(wǎng)絡(luò)請求.png

Charles 支持我們多次修改和發(fā)送該請求,這對于我們和服務(wù)器端調(diào)試接口非常方便

3.1.2 覆蓋服務(wù)器接口返回的不同異常情況

舉個(gè)例子:有一個(gè)訂單狀態(tài)接口 order_state,有已過期、已失效、已支付、待支付、已取消、待審核等10個(gè)狀態(tài)返回,如果是在沒有mock的情況下,我們需要實(shí)際造10個(gè)狀態(tài)的訂單數(shù)據(jù),甚至去修改數(shù)據(jù)庫訂單字段狀態(tài)來看前端訂單顯示情況。利用Mock方法,我們可以借助一些工具例如charles打斷點(diǎn),截取接口返回的response的json數(shù)據(jù),進(jìn)行一些模擬:比如
訂單接口發(fā)生服務(wù)器錯(cuò)誤 or 系統(tǒng)繁忙時(shí)app是否崩潰;
訂單接口的各種狀態(tài)在前端顯示的覆蓋測試;
訂單狀態(tài)空的時(shí)候前端如何顯示的覆蓋測試;
訂單數(shù)據(jù)異常的時(shí)候前端如何顯示的覆蓋測試,
訂單接口請求超時(shí)的情況等等等總之想要什么返回就模擬什么返回。

3.2 簡單的小例子:xx app 登錄login Mock測試

3.2.1 安裝測試包

打開手機(jī),連接電腦安裝開戶組件app 成功,點(diǎn)擊app啟動成功,登錄成功,moudle名稱輸入模塊名稱(xxBanklogin進(jìn)入xx app 登錄流程,利用charles抓包,如下截圖

登錄.jpeg

3.2.2 登錄測試Mock最基本實(shí)踐

breakpoints方法實(shí)踐過程:

在charless上要mock數(shù)據(jù)的url上右點(diǎn)擊,彈出的列表選中breakpoint,要點(diǎn)擊兩次 Excute 才能完成一次 HTTP 請求,原因是,Charles 的斷點(diǎn)功能分別提供了修改 HTTP Request 和 Response 的機(jī)會映射本地文件

先了解登錄接口定義:
  • login接口一般有登錄超時(shí)、操作超時(shí)、登錄被擠下線、登錄系統(tǒng)繁忙、賬戶和密碼錯(cuò)誤、賬戶鎖定、賬戶解密失敗等情況
每個(gè)接口對應(yīng)的response請求json記錄(可編輯修改):

一般有兩種處理方式可選擇:
一是直接在charels設(shè)置好斷點(diǎn),請求相應(yīng)的接口時(shí)修改編輯response里面json格式的相關(guān)數(shù)據(jù)后點(diǎn)擊excute執(zhí)行模擬請求提交
二是將所有接口的json數(shù)據(jù)在一個(gè)Sublime text 中以json格式保存,進(jìn)行數(shù)據(jù)管理,最后利用 charles Map 規(guī)則的導(dǎo)入導(dǎo)出功能,方法是點(diǎn)擊菜單 Tools → Map Local,在彈出界面中點(diǎn)擊 Export

登錄login接口返回json記錄如下:
  • 1、登錄成功
{
"code": "000000",
"data": {
由于涉及到業(yè)務(wù)信息,部分data信息隱藏
"status": "0"
},
"msg": "成功"
}
  • 2、操作超時(shí)


{
    "code": "030801",
    "msg": "操作超時(shí)"
}
  • 3、登錄報(bào)系統(tǒng)繁忙
{
"code": "000001",
"msg": "系統(tǒng)繁忙,請稍后再試!"
}
  • 4、登錄超時(shí)
{
"code": "000002",
"msg": "登錄超時(shí)!"
}
  • 5、登錄掉線
{
"code": "000004",
"msg": "賬戶在另一臺設(shè)備已登錄,當(dāng)前登錄被擠下線!"
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,546評論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,570評論 3 418
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,505評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,017評論 1 313
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,786評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,219評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,287評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,438評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,971評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,796評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,995評論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,540評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,230評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,918評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,697評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內(nèi)容