Soft_Job 板


LINE

※ 引述《HZYSoft (PCMan)》之銘言: : 補充一下,TDD 是還沒有開始寫任何的 code 之前,就先針對 : 程式寫好之後 "預期應該要有的行為" 先寫 test cases : 接著,先跑一次測試親眼看著他 fail : 因為還沒寫任何 code,所以測試絕對會 fail, : 如果沒寫 code 卻 pass 那表示你的 test case 根本沒有測到。 : 接著才開始寫 code,重複跑測試直到確認 pass 為止,就是完成了。 : 不同於先寫 code 再測試,TDD 是顛倒,先測試再寫 code,所以才叫 test driven : 如果程式被報 bug,也是先寫一個會 fail 的 test case,確認可以重現 bug : 接著才開始改 code 修正,直到測試 pass 為止,就表示修好了。 : 這是一個觀念很特別的流派,他們的主張都是有道理的,就只是比較違反直覺不好實現。 : 如果你無法先寫出測試,那表示你還沒弄清楚要實作什麼行為, : 或是你原先構思的 API 介面難以使用,以至於你寫不出 test case : 這是強迫你釐清 spec 以及設計好介面的方法,但實在有點極端,被不少人視為邪教 XD 推文看到有人問前端. 我個人是做客戶端所以很多傳統的測試方法論對介面其實效用很低. 上述段落讓我想起以前寫作的經驗.單純分享. 我在2018~2020年在阿布達比UB維護手機線上遊戲Growtopia. 當時的案子有很多駭客想要破解我們的遊戲的攻擊行為. 當時的主程式教給我一個我以前沒這樣試過的技巧. (但我必須強調.這整個系統跟時程就是不允許我們重構. 所以也不可能有甚麼有序的測試方式. 功能($$$)產生的速度就是比測試碼(COST)來得快 該專案幾年的程式碼簡單來講就是靠優秀的程式員無止盡的縫補.) 不過.當我分享給同僚的時候.他們都給我一種我在講甚麼歪理的眼神. 簡單說 我們當時遇到很多透過奇妙行為(譬如說破解封包)來try我們遊戲server的行為. 因為那些行為不是正規動作.所以我們的QA部門無法用正規手段重現這些步驟. (當然終歸到底就是沒有那麼多時間/資源 去真的學著逆向重建一個駭客軟體 /線上的問題就是以天為單位要解掉) 所以我們無法知道這些破壞到底起因如何.(來龍去脈/竄改點) 我們只能夠知道具體來說發生破壞的時間點.(ex.爆炸點/因為有exception log) A) 爆炸點 已知爆炸發生了.程式碼假如這樣: { Func1();// 我們只知道這函式進去的特定一行發生爆炸(ex. null reference), // 而函式發生前server環境就已經被竄改/攻擊為會爆炸的情況 } B) 埋點: 製作一個駭客的模擬入口 { DEBUG_HACKER_ACTION(); // 製作一個入口, // 我們猜測並刻意模擬駭客的行為就是會把上述那個會爆 // 炸的某個記憶體抹掉. Func1(); } C) 用後門指令手動觸發埋點 DEBUG_HACKER_ACTION() : OK 現在可以重現駭客的爆炸了. (紅燈) D) 修復: 在Func1()裡面布下重重安全機制.只要有異常就吐LOG然後封鎖該玩家(強制離 開/行動取消/黑名單,etc) E) 這步驟最重要.再次用特殊指令手動觸發埋點DEBUG_HACKER_ACTION() : OK server安 全了.Log正常吐出. (綠燈) F) 把後門指令+埋點mark起來.上線測試.抓有問題的玩家.封號. G) 這步也很重要,如果之後又發生類似的問題.再把後門指令搬過去開起來用.快速觸發錯 誤.同時也可以確認之前修掉的問題沒有再出現. 好像不是甚麼很玄妙的高招. 但是面對一些客戶端/前端無法重現 (譬如說一秒鐘按鈕連打60下這種不可能正常可以達到的行為所觸發)的問題. QA又兩手一攤沒辦法重現只好自救的時候,不失為一個方法. -- "May the Balance be with U"(願平衡與你同在) 遊戲設計教學,討論,分享。歡迎來信。 黑水溝歷史文庫 https://ndark.wordpress.com/ --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.35.216 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1661354528.A.5F0.html
1F:推 wulouise: 這個比較偏整合測試?TDD的T通常是指unit test 08/24 23:34
2F:推 bluelink: 這例子在說找不到問題,那就解決提出問題的人? 08/25 01:41
3F:推 lchcoding: 樓主遇到的問題,可以透過側錄封包來解(ex: Wireshark 08/25 03:25
4F:→ lchcoding: ). 透過-回放-爆炸點時間附近的封包s, 然後一直限縮, 08/25 03:25
5F:→ lchcoding: 你可以找到到底是哪一顆(或哪幾顆)封包送進你的serve 08/25 03:25
6F:→ lchcoding: r 後會讓它掛掉. 然後,從這個地方開始解. 08/25 03:25
7F:推 vi000246: 可以查特定ip的request log 看看是從哪個點進來的 08/25 11:35
8F:→ vi000246: 加個類似CSRF token的機制把非特定入口進來的reqeust擋 08/25 11:37
9F:→ vi000246: 掉 08/25 11:37
10F:→ brucetu: 領域不同 錄封包還是記request log兩個做法都不實際 08/27 16:20
11F:→ brucetu: 原po的招數已經算遊戲伺服維護這個領域中兼顧危機處理跟 08/27 16:21
12F:→ brucetu: 可以解決問題的良好範例了 08/27 16:21
13F:→ brucetu: 每天有多少駭客在利用你的漏洞挖錢 一定是先滅火再說 08/27 16:22
14F:→ brucetu: 抓出來封號是打擊破壞者相當有效的手段 08/27 16:23
15F:→ NDark: 一個容易忽視的點是 這些都是合法玩家 即便他們在鑽漏洞 08/27 18:08
16F:→ NDark: 令很多伺服器端的專家會意外的是 08/27 18:09
17F:→ NDark: 從2012遊戲開賣值到我2020離開這個專案 08/27 18:10
18F:→ NDark: Client/Server之間的通訊都是明碼在傳輸 08/27 18:10
19F:→ NDark: "應該要加密" 這議題不存在.因我文中已講 功能永遠是高優先 08/27 18:11
20F:→ lchcoding: 所以在滅火封號之後, 08/28 08:13
21F:→ lchcoding: server 上那道可以撞出 08/28 08:13
22F:→ lchcoding: null reference(ex:) 的漏洞, 08/28 08:13
23F:→ lchcoding: 是不用修,還是盡量修. 08/28 08:13
24F:→ lchcoding: 我實在想不出來, 08/28 08:13
25F:→ lchcoding: 在沒有神奇子彈的指引下, 08/28 08:13
26F:→ lchcoding: 如何盡量修 08/28 08:13
27F:→ NDark: 修是修到堪用這艘船繼續開的情況就好.繼續開就繼續賺錢. 08/28 10:45
28F:→ NDark: 技術這邊無法給出一個重構方案 其成本是小到管理層能買單 08/28 10:46
29F:→ lchcoding: 了解 08/28 11:14
30F:→ longlongint: 這只是很一般的自動測試而已吧 09/11 20:18
31F:→ longlongint: 只是直接尻記憶體滿暴力的 09/11 20:18







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP