我們即將開始一個新項目。這個項目的概念驗證(PoC)僅使用Win32完成。該計劃是/將要充實PoC,整理醜陋的零件並滿足項目業主的要求。Win32應用程序代碼覆蓋範圍
對實際項目的要求之一是100%的代碼覆蓋率,但我可以看到前面的問題:如何使用Win32獲得100%的代碼覆蓋率 - 消息泵將非常難以有效測試?!我可以編譯成一個DLL,但不會有主應用程序中的代碼不會被覆蓋?
我在考慮放棄Win32代碼並轉移到MFC--至少很多鍋爐板的東西都會被隱藏(因此覆蓋)。
對這個問題有什麼想法?
我們即將開始一個新項目。這個項目的概念驗證(PoC)僅使用Win32完成。該計劃是/將要充實PoC,整理醜陋的零件並滿足項目業主的要求。Win32應用程序代碼覆蓋範圍
對實際項目的要求之一是100%的代碼覆蓋率,但我可以看到前面的問題:如何使用Win32獲得100%的代碼覆蓋率 - 消息泵將非常難以有效測試?!我可以編譯成一個DLL,但不會有主應用程序中的代碼不會被覆蓋?
我在考慮放棄Win32代碼並轉移到MFC--至少很多鍋爐板的東西都會被隱藏(因此覆蓋)。
對這個問題有什麼想法?
我的意思是WndProc,但同樣適用於WinMain。你如何單元測試?
我測試但不是單元測試:我做系統/集成測試。
如果您在運行調試器/分析器/代碼覆蓋率分析器時運行(整個)應用程序,那麼您當然會發現(並且覆蓋分析器將顯示)WinMain等正在運行)。
那麼問題可能是,您如何自動化整個應用程序的系統/集成測試?你可能有一個自動驅動GUI的測試框架;我不知道我自己,但例如there's a list here。或者,如果驗收測試套件是一系列非自動化/手動測試,則可以接受(對客戶)。
又見Should one test internal implementation, or only test public behaviour?
我曾經在一個使用Mercury WinRunner進行自動化測試的地方工作,但不在這裏。此外,我還需要檢查DevPartner是否仍會收集開發環境以外的信息。 – 2010-06-01 10:48:28
@ graham.reeds - 另一種自動化測試的方法可能是將'儀器'(添加額外的代碼)應用程序:以便記錄輸入事件(鼠標和鍵盤),並可以隨後「回放」它捕獲的內容重新注入記錄的輸入事件)。 – ChrisW 2010-06-01 14:55:12
來自內部的遊戲稱爲'Le Chimp'。同樣,由於我們不擁有代碼,客戶需要100%的覆蓋率。由於這是一個短短的8週週期,我們並不是真的有這樣的奢侈品。 – 2010-06-01 15:14:03
你所說的消息泵的意思是,爲什麼不將它覆蓋:你的意思是的GetMessage循環? – ChrisW 2010-06-01 09:12:57
我的意思是WndProc,但同樣適用於WinMain。你如何單元測試?我向客戶提出了一個問題,但是當我最初質疑它時,他們堅持100%左右,但我並沒有完全想到這一點。還系統托盤圖標?多士爐樣式彈出警告?所有這些都很難獲得代碼覆蓋。他們一般也是工作或者他們不工作。 – 2010-06-01 09:36:13