從零八開始工作到現在,不知不覺已經十二個年頭了,今天拿到這個這個Case,重新整理一下思路,歡迎大家批評指正。
『在軟件測試的面試經常碰到一類經典問題是:如何測試一個杯子, 或者如何測試一隻筆。 要求你設計20個以上的test case. 』
以下根據工作十幾年的經驗,分享一下面對這類問題如何處理更加妥當,當然不只是面試,真正的工作中面對問題分析問題和解決問題的時候,也希望大家按照這樣的金字塔模型的思維方式進行;
首先不要直接一頭扎進細節裏,先思考宏觀上從哪些方面着手,先大類着手,再大類下闡述細節,一環扣一環,這樣無論是口頭的面試回答還是筆試的面試書寫,都會顯得思路清晰,邏輯縝密。
首先來看測試對象:杯子,目的:測試,信息有限,如果可以可以跟面試官再明確一下需求,比如杯子的顏色,功用範圍(盛水還是裝土亦或是玩具模型等等),大小等等,anyway,需求越明確,測試起來纔會越有針對性。
以下測試點是按照這種方式的一種梳理,供大家參考,不當之處歡迎拍磚。
一、基礎功能測試(Basic Function Test)
細分維度的思考可以從杯子本身的屬性着手思考如下:
1.1:杯子的功能用途,如果是盛水,那麼肯定要對盛水這個條件測試,其次還包括非水的條件測試
1.2:杯子的顏色,紅橙黃綠青藍紫等等各種顏色的定義需求測試
1.3:杯子的容量,產品的定義是期望杯子是多少升的?實際是否滿足需求
1.4:杯子的材質,要求是陶瓷的材質,做了一個塑料硬殼紙杯肯定不行的吧
1.5:杯子的外形,比如要求是上大小小,中間有弧度,具體的要求精確到mm級的誤差範圍,但是真正的產品確實跟產品需求大相徑庭肯定也是不行的
二、性能測試(Performance Test)
2.1:使用壽命,比如能夠使用多少次可能就壞了,是否有指標要求
2.2:承載能力,比如規定的是裝水,但是如果裝熱水和冰塊是什麼情況,會不會出現異常?
2.3:受物理環境的變化影響的能力,比如說外層的顏色是否容易磨損掉色或者內部的塗層容易脫落等待
2.4:受化學環境的變化影響的能力,比如說杯子裏裝了酸或鹼性物質後,是否有異常的化學反饋等等
2.5:壓力測試,比如快速的往裏加水等會不會更容易壞掉等
三、用戶體驗測試(User Experience Test)
PS:這裏標紅是想說這個是重點,需要高度重視,否則沒有交付真正的對用戶而言有價值產品就不是產品交付。
這裏重點說明一下,軟件產品也好,硬件產品也罷,最終都是要產生商業價值,但是商業價值如何判斷,最終對於用戶是否真正產生價值,這個是需要用戶來投票的,所以,用戶體驗非常重要,如果只是異想天開的生產產品而完全忽視用戶的聲音,忽視用戶的真實感受和體驗,也是不可取的。
3.1:典型用戶/目標用戶對這個杯子的評價如何,是好是壞,可以從整體的維度和細分的維度進行用研分析,給出結論,進而進行產品的改進和迭代
四、國際化和本地化測試(Internationalization and LocalizationTest)
這裏說的國際化不一定每個產品都有涉及,如果有的話也是需要考慮的一個方面,這裏重點說一下本地化,本地化就是指這個產品如何能夠融入到或者讓當地的用戶接受,這裏要考慮的因素比如如下:
4.1:宗教信仰,產品不能出現有違當地宗教信仰的元素存在
4.2:風俗習慣,比如說我們期望的這個杯子是當地的用戶去喝水,但是當地的風俗就是拿杯子來澆花(現實情況不一定存在,僅是舉個例子)
五、安全測試(Security Test)
5.1:杯子對人產生的安全方面考慮,比如是否會對人造成危害等等
5.2:杯子本身的安全方面考慮,比如杯子是否容易裂開,容易摔碎等
六、認證測試(AutheticationTest)
6.1杯子是否需要進行國家標準的認證等
6.2杯子是否需要進行國際標準的認證等
七、法務相關測試(Legal Test)
7.1杯子是否涉及知識產權等相關的方面的測試?比如設計師直接從未授權的磨具上涉及,但是未經授權,這種需求提前規避
以上都是列舉的一些大項的小項,細分再梳理一下測試用例即可,當然在真正用例編寫的過程或者測試的過程中,發現還有遺漏的地方,可以逐步補充和完善,但是需要留心的一件事情是:如果後期發現有遺漏的點,先宏觀看看是某個大類有遺漏還是大類下的某個小類整體有遺漏,還是一個旁枝末節有遺漏,針對思維的漏洞去針對性的修補自己用例設計的bug,這樣逐步迭代,相信經過幾個產品週期的訓練,即使是工作一年或兩年的小白也可以像工作十年那樣有厚度和深度。
Anyway,學無止境,keep learning,keep improving,不斷的學習,不斷的優化,相信我們永遠是跟着時代的腳本一起前行。對已經三十而不立,再有四五年就奔四的自己說聲:加油,少年,Fighting!