# 1. 測試結果與日誌管理 :::info 簡介: 這部分介紹如何分析和管理測試結果,以及查看 Appium 日誌來進行問題排查。 ::: # 2. 查看測試結果 目前在 config 資料夾內有創建 log.py 來管理 log 的設置 ![image](https://hackmd.io/_uploads/rk5hVtkl1x.png) #### setup_logger : --- ![image](https://hackmd.io/_uploads/Hks5rtyeye.png) 定義了下方執行程式碼的日誌等級 並規範了 assert (斷言),確保運行程式時先判斷主程式 log 配置 ![image](https://hackmd.io/_uploads/HkigIKJeyl.png) 如上圖,主程式在運行前會先呼叫 setup_logger 函數並設置 log-level ![image](https://hackmd.io/_uploads/S179UFklke.png) 輸入錯誤則直接報錯 執行完成可以在父目錄下的 logs 資料夾內找到 執行腳本的log ![image](https://hackmd.io/_uploads/r1ApIYkg1l.png) ![image](https://hackmd.io/_uploads/BkRALYke1e.png) 建議在排查時可以把 level 設為 "DEBUG" 來查看更多資訊 ![image](https://hackmd.io/_uploads/B1OOwt1g1e.png) ![image](https://hackmd.io/_uploads/rkbKwK1gkx.png) #### run_test_step : --- ![image](https://hackmd.io/_uploads/BJzCDKJxkx.png) run_test_step 是更高層級的函數用來包測試名稱 跟測試內需要加的參數 ![image](https://hackmd.io/_uploads/HyuLdKyxyg.png) 直接在主函式內呼叫 run_test_step 用來抓 log 即可 ![image](https://hackmd.io/_uploads/SyuLKFJekg.png) 查看 appium server 生成的 log ``` [W3C (81a54518)] Responding to client with driver.findElement() result: ``` ![image](https://hackmd.io/_uploads/BkaYtFyeke.png) 根據 W3C 協議啟動 Appium Client 向 WebDriver 發出查找元素的請求 ``` GET /wd/hub/session/81a54518-8903-4e77-b54e-786cafaa78ed/element/00000000-0000-03d6-0000-002200000007/displayed 200 ``` ![image](https://hackmd.io/_uploads/rkqG9FJxkg.png) 如果 element display 則回傳 status 200 ``` [W3C (81a54518)] Calling AppiumDriver.performTouch() with args: [[{"action":"press","options":{"x":800,"y":500}},{"action":"wait","options":{"ms":800}},{"action":"moveTo","options":{"x":300,"y":500}},{"action":"release","options":{}}],"81a54518-8903-4e77-b54e-786cafaa78ed"] ``` ![image](https://hackmd.io/_uploads/S1tAkq1x1e.png) 呼叫 appium 內建模組 performTouch tap 螢幕 從座標(800,500)滑到(300,500) ``` [UiAutomator2] Deleting UiAutomator2 session ``` ![image](https://hackmd.io/_uploads/rkNFJckgkg.png) 測試結束時 Deleting Session Appium 使用 UiAutomator2 來實現對 Android 應用的自動化測試 # 3. 查看測試圖片 在 scripts/utils/image_action.py 內定義了儲存圖片位置 ![image](https://hackmd.io/_uploads/B1l-EWcylyl.png) tesseract 是用來測試 OCR 的工具 未來可以用來訓練模型提高圖像辨識 目前 code 碼用正則表達式取值,目前不會用到 tesseract 其他畫面截圖會被放在 Worky_Automation_Testing_1\screenshots 內 ![image](https://hackmd.io/_uploads/HJUvX5yxJe.png) 並用自定義變數跟時間戳命名 ![image](https://hackmd.io/_uploads/rJU675yekg.png) code 碼則會放在更內層的 captcha 的資料夾內 # 4. 定義 Error_code 父目錄下放了一個預計定義 Error code 的文件 ![image](https://hackmd.io/_uploads/SyMQE51gJe.png) 之後會在模組內的捕獲異常代碼內加入 Error code,協助排錯 ![image](https://hackmd.io/_uploads/HyS3NqkxJg.png)