【 聲明:版權所有,歡迎轉載,請勿用于商業用途。 聯系信箱:feixiaoxing @163.com】
? ? ? ? 嵌入式產品做好了,下面就是測試和量產了。以按鍵+屏幕的開發模式為例,如果僅僅是簡單的功能測試,那還比較好解決,只需要安排專門的測試人員,按照使用手冊去做就可以了。但是如果是復雜測試,特別是壓力測試,這個時候再靠人去測試,其實是不太現實的。所以,我們得依靠方法論、依靠工具去完成更復雜的測試,這樣才能發現更深層次的問題。
1、壓力測試需要工具
? ? ? ? 簡單的測試、日常的測試,測試人員是可以自己搞定的。但是一旦面臨復雜的測試,特別是壓力測試,人其實是搞不定的。一方面這種測試枯燥乏味,另外一方面人需要休息,是沒有辦法做到幾千、上萬次的反復測試。
2、用腳本來模擬人的操作
? ? ? ? 前面我們說過,對于按鍵的輸入,盡量歸集到一個地方,集中送給狀態機。等到業務處理好之后,再完成各個ui的更新。這里面,其實按鍵的輸入,只是整個系統的一個環節。這個輸入,是真的按鍵輸入,還是仿真輸入,其實一點都不重要。只要有這個輸入即可。
? ? ? ? 所以,一種比較簡單的辦法就是通過編寫腳本,來實現按鍵的輸入。這個腳本理論上不僅僅是配置,最好還能編程。
3、引入lua
? ? ? ? 和python相比較,lua是一個比較輕的腳本語言。使用lua,有很多好處。一方面是它集成比較簡單,可以比較容易地集成到我們已有的項目當中。對于腳本當中需要的函數,也可以通過c語言快速地實現,比如像這樣,
lua_register(L, "press_mode", (lua_CFunction)&press_mode_Function);lua_register(L, "release_mode", (lua_CFunction)&release_mode_function);
? ? ? ? 對應的實現就是這樣的,
static int press_mode_function() // press_mode
{::receive_key_event(KEY_MODEONE, KEY_DOWN_EVENT);return 0;
}static int release_mode_function() // release mode
{::receive_key_event(KEY_MODEONE, KEY_UP_EVENT);return 0;
}
? ? ? ? 這樣在腳本里面直接調用函數,就可以實現和真實按鍵一樣的效果。另外一方面,lua腳本語法簡單,寫起來很容易,哪怕是沒有學過的人,只要通過幾個demo,也可以短時間之內快速上手,類似于這樣,
--for linux, cygwin or mingw
function sleep(n)os.execute("sleep " .. tonumber(n))
end--sleep for a while
sleep(10)i = 1
while i < 50 dopress_mode() --press mode keysleep(0.5)release_mode()i+=1sleep(3)
end
4、其他要注意的方面
? ? ? ? 一般測試人員要求都不會太高,所以測試的時候,盡量把重復、單調的工作,用工具來實現。這樣不僅可以減輕測試的負擔,也可以促使測試人員把精力轉到測試用例的設計上面來。并且越到后期,簡單的測試越不能發現問題,這個時候只能靠腳本、靠方法論,才能讓產品越可靠,這靠人本身是沒有辦法做到的。