我想測試上的下面的 「輸入」 的所有可能組合機器人的行爲:如何測試/鍛鍊android的屏幕旋轉行爲?
- 頂部活動的
setRequestedOrientation()
(15 possible values, not includingSCREEN_ORIENTATION_BEHIND
) Settings.System.ACCELEROMETER_ROTATION
(2個可能值)Settings.System.USER_ROTATION
(4個可能值)- 裝置的物理取向(由
OrientationEventListener
可查詢)(4個可能的象限)
具體而言,我希望看到的投入如何影響下面的「輸出」:
getWindowManager().getDefaultDisplay()
.getRotation()
(4個可能值)
因此,這將需要測試至少所有15*2*4*4=480
可能的輸入狀態。
另外,由於旋轉行爲通常是依賴於歷史的輸入(不僅僅是當前輸入值) , 我想測試(至少)從一個輸入狀態的所有可能的轉換到一個「相鄰」輸入狀態,即 ,即與一個輸入參數不同於給定輸入狀態的輸入狀態。 這樣的輸入的狀態轉換的數量是:
(number of input states) * (number of states adjacent to a given input state) = (15*2*4*4) * ((15-1) + (2-1) + (4-1) + (4-1)) = 480 * 21 = 10080
此外,有時輸出取決於前一個輸出,以及以前和當前 輸入(例如SCREEN_ORIENTATION_LOCKED
,SCREEN_ORIENTATION_SENSOR_LANDSCAPE
)。 對於給定的輸入狀態可能的輸出的數量可以是1和4之間, 所以這乘以必須由最多4個被測試的轉變的數目:
10080 * 4 = 40320
這是一個很大的轉變來測試,所以測試必須是編程/腳本。 四個輸入參數中的三個直接用於編程控制;不直接控制的是設備的物理方向。
那麼,怎麼會去編寫腳本呢?我可以想到以下方法。
方法#1:具有用於測試的持續時間的腳本化模擬加速度計 更換(物理或模擬)設備中的加速度計。但是,如果我理解正確,模擬加速度計不適用於android。
方法2:使用機器人仿真器,和腳本按壓的「逆時針旋轉」和 「順時針旋轉」使用在主機上的交互的自動化工具(例如AppleScript的/ AutoHotkey的/ xdotool)的按鈕。
還有其他想法嗎?