UI 自動化測試中遇到的問題,希望可以獲得大佬們的解答

漆黑的橘子發表於2020-12-01

公司要求搭建 UI 的自動化測試,我用的 pytest+Python3+ChromeDriver+selenium,現在寫了幾百個 case,但是遇到了很多問題,並且執行時間很長,我搜尋了很多的網站,但是並沒有搜尋到針對我的問題而言很有用的資料,所以在這裡發帖求助,看看大家是否有什麼思路可以供給我,萬分感謝
問題:
1、拋開連線 SQL 外,有什麼其他好的方法回收麼?公司不允許我這邊連線生產的庫,所以我在 case 中手寫的資料回收,如在 case 中建資料 A,依據 A 執行用例,而後刪除 A,這樣有個隱患就是一旦 case 執行失敗了,那麼後續資料回收的步驟也全部受到影響,導致我這邊的環境會有大量的垃圾資料,因為系統之中有些垃圾資料影響是全域性的,會影響其他使用同樣的用例,從而造成連鎖反應,導致用例成功率不穩定,忽上忽下的,並且執行完成後還需要手動刪除垃圾資料。
2、公司做的是 ToB 的 Web 端 SaaS 服務,用域名 + 使用者賬號來進行分離,並且賬號不允許多端登入,如何進行併發?之前是單執行緒執行,現在希望提速,我準備用 redis,每次執行自動化測試時,將這些賬號放到 redis 賬號池中,每個用例從池子中取出賬號後,將其狀態標識為不可用,後續的 case 不能使用該賬號,只能選取其他賬號,case 執行完成後,釋放該賬號,將其狀態變為可用,我不知道這樣是不是最佳實踐,但是目前能解決我的困境,如果有好的方案,希望可以和我分享
3、系統中存在的 ajax 請求、非同步操作的情況下,如何提高 UICase 的成功率?比如 A 賬號登入後,更新其某個狀態,這裡面會有一些非同步操作,比如 MYSQL、ES 的讀寫,觸發相關服務的 sidekiq 操作等,因為在非同步操作執行期間,前端會有一個狀態變更成功的假象,所以用 UI 定位狀態變更成功,但是後續執行時可能會導致非同步操作沒有處理完,狀態更新操作執行後,後端資料沒有更新完畢,導致 case 執行失敗,在這些問題上,我現在迫不得已用 sleep 來解決的,ajax 的請求也一樣,我不知道是否有更優的解決方案,這很困擾我,同時也影響了 case 的成功率及執行速度

現在我在最佳化我自己的框架,但是思路很混亂,我不知道這樣做是對是錯,網上包括 GitHub 中的框架都很簡單,我找不到太多和我類似的情況的問題

相關文章