本文地址: https://www.cnblogs.com/hchengmx/p/12554939.html
在網絡上看到這樣一個笑話 計算機領域有哪些經典的典故或笑話? - 知乎。一個測試工程師走進一家酒吧,要了一杯啤酒/一杯咖啡/0.7杯啤酒/-1杯啤酒/一杯洗腳水。
從測試工程師的角度來說,來嘗試着對這個問題進行測試用例的設計。
功能測試
要是分析這個問題的話,首先必須明確需求。
"一個測試工程師走進一家酒吧,點了一杯啤酒。"
我們就假定我們是來測試一個酒吧管理系統,這個酒吧管理可以實現顧客從入店到買啤酒結賬的整個過程。首先酒吧肯定不是24小時營業的,假定酒吧的營業時間是 14:00 - 次日02::00,酒吧不允許未成年人進入,酒吧堂食的顧客不能超過100,只能點一種啤酒,且啤酒的數量只能是正整數,酒吧支持刷卡或者現金。
然后分析,整個點啤酒的過程有哪幾個步驟。酒吧在營業時間內 -> 一個成年人走進酒吧 -> 酒吧有座位 -> 點啤酒 -> 刷卡或者現金 -> 酒吧給顧客找錢 -> 酒吧給顧客想要的數量的啤酒。
接着就可以根據分析的步驟來畫出整個點單的流程圖。如下:
可以看到,整個流程圖一共有13個判定,根據最簡單的判定覆蓋的概念,一共至少有14個測試用例才能達到判定覆蓋。
判定覆蓋: 判定覆蓋是設計足夠多的測試用例,使得程序中的每一個判斷至少獲得一次“真”和一次“假”,即使得程序流程圖中的每一個真假分支至少被執行一次。
於是功能測試的用例如下(編號代表走哪個分支):
- 1,2,3,17;
- 1,2,4,17;
- 1,2,3,4,17;
- 1,2,4,5,17;
- 1,2,4,5,6,17;
- 1,2,4,5,6,7,17;
- 1,2,4,5,6,7,8,17;
- 1,2,4,5,6,7,8,9,17;
- 1,2,4,5,6,7,8,9,10,12,17;
- 1,2,4,5,6,7,8,9,10,11,16,17;
- 1,2,4,5,6,7,8,9,10,11,10,11,16,17;
- 1,2,4,5,6,7,8,9,10,12,13,16,17;
- 1,2,4,5,6,7,8,9,10,12,13,14,17;
- 1,2,4,5,6,7,8,9,10,12,13,14,15,16,17;
接着可以對一些特殊的判定做更細的划分,比如圖中的8,只說明了正整數/非正整數。非正整數又包括小數/0/π,正整數也包括當前的最大值/int的最大值等值,接下來用等價類划分法對酒吧數量進行划分。
Input | Expected Result |
---|---|
-1杯啤酒 | 拒絕 |
0杯啤酒 | 拒絕 |
π杯啤酒 | 拒絕 |
3杯啤酒 | 成功 |
100杯啤酒 | 成功 |
101杯啤酒 | 拒絕 |
2^31杯啤酒 | 拒絕 |
NULL杯啤酒 | 拒絕 |
性能測試
負載測試:有若干個測試工程師一直在酒吧喝酒;
疲勞性測試:一家酒吧連續經營 30天,且每天都是從14:00經營到次日02:00。
安全測試
- 一個測試工程師走進一家酒吧,要了一杯啤酒';DROP TABLE 酒吧;
- 一個測試工程師走進一家酒吧,"< script >alert("要了一杯酒");< /script >"
本地化測試
- 一個西班牙籍的測試工程師走進一家酒吧,點了一杯啤酒;
- 一個東北籍的測試工程師走進一家酒吧,用東北話點了一杯啤酒;
參考:
- Bill Sempf on Twitter: "QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers. Orders a sfdeljknesv." / Twitter
- 計算機領域有哪些經典的典故或笑話? - 知乎
- 測試工程師的梗,你了解多少? | 博客 | Powered by skywalker_z
- 判定覆蓋_百度百科
- A QA tester walks into a bar... : ProgrammerHumor
- A test engineer walks into a bar... : ProgrammerHumor
- A Tester Walks into a Bar: Reviewing Test Techniques | StickyMinds