在功能測試的過程中,我們可能會有一類這樣的測試需求:測試被測軟件的異常處理模塊,確保異常處理模塊工作正常。例如:搜狗瀏覽器開發的過程中,加入了 Exception handle的處理機制,無論是主進程還是子進程,當程序出現異常崩潰時,搜狗瀏覽器可以彈出異常對話框,同時在%temp%目錄下生成se.zip的崩潰信息文件并上傳,以便開發人員可以快速定位崩潰原因進行修復。同樣,如QQ、Word等軟件都有類似的機制。
現在問題來了,為了驗證崩潰處理機制正常,我們如何構造程序崩潰的情況呢?
在項目早期,我們可能掌握著數量可觀的崩潰BUG,所以回答以上問題很容易。但是隨著崩潰BUG逐步地修復,以上問題就變得很難處理了。
本次分享,小編將介紹搜狗同學自己做的一款崩潰模擬工具,使用它可以對任意指定進程進行崩潰模擬操作。
PS:感興趣的各位讀者也可以去Git上下載源碼進行修改。
程序下載地址:
http://url.cn/ekZwQ3
源碼下載地址:
https://github.com/sogou/Test-InjectDll.git
源碼解讀:
崩潰模擬過程大致是:
1.向指定進程(如搜狗瀏覽器)注入一段執行代碼,使得該進程執行LoadLibrary加載指定的一個DLL文件(如InjectDll.dll)。
2.該Dll被上述的指定進程加載后,啟動一個線程,在該線程中執行能夠造成程序崩潰的操作(如除0操作)。
注入代碼執行LoadLibrary的實現:
Dll加載并構造崩潰的實現:
工具使用方法:
示例:小編現在要構造搜狗瀏覽器主進程的崩潰
原文轉自:http://www.testwo.com/article/601