應(yīng)對移動機器人軟件自動化測試的挑戰(zhàn)
探索自動化移動家庭機器人的復雜性,重點關(guān)注設(shè)置的獨特挑戰(zhàn),克服約束以確保順暢的開箱體驗。
在我之前的文章中,我解釋了如何使用April Tag技術(shù)自動化E2E家庭機器人。在家庭機器人或任何機器人的自動化中存在一個巨大的挑戰(zhàn)。如何設(shè)置設(shè)備?在設(shè)備、手機和移動應(yīng)用程序的世界中,設(shè)備通過USB連接到主機設(shè)備,設(shè)備將始終連接到電源。現(xiàn)在,測試機器人引入了一個獨特的挑戰(zhàn),即當機器人移動時如何進行測試。它無法物理有線連接到主機設(shè)備。我們?nèi)绾悟炞C開箱體驗?不用擔心,我將在本文中解釋這個問題。
復雜性和挑戰(zhàn)
正如我向你簡要介紹過機器人自動化測試中設(shè)置階段的各種挑戰(zhàn),讓我更深入地研究一下更多的挑戰(zhàn)。
機器人在移動,無法物理有線連接到主機設(shè)備。對于某些組件級別的測試可能是可能的,但對于E2E測試來說是不可能的。
開箱體驗是指設(shè)備未連接到wifi。當設(shè)備全新時,主機設(shè)備如何與設(shè)備交互?這是日常機器人測試中非常常見的情況。
在發(fā)生任何錯誤或異常時恢復機器人。自動化測試的主要目標是發(fā)現(xiàn)機器人的潛在軟件和硬件問題。如果出現(xiàn)問題,我們?nèi)绾螆蟾婧突謴驮O(shè)備?
機器人將耗盡電池,我們需要可靠的電源來為機器人的電池供電。
將相同的設(shè)置擴展到多個實驗室和家庭環(huán)境。這非常關(guān)鍵,因為我們不能僅在一個環(huán)境中簽署或測試機器人。
讓我們按照時間順序來解決這些問題。
使用樹莓派預(yù)設(shè)機器人
解決這個問題是最重要的??紤]一下機器人位于某個位置的測試自動化實驗室中。有一臺主機設(shè)備連接到公司內(nèi)部網(wǎng)絡(luò),用于發(fā)送和接收命令、訪問各種源代碼、內(nèi)部工具和基礎(chǔ)設(shè)施。我們將連接一個樹莓派到設(shè)備上,并在樹莓派上運行一個REST服務(wù),以與主機設(shè)備和設(shè)備進行通信。下面是一個圖示表示該設(shè)置。
使用樹莓派預(yù)設(shè)機器人
解決開箱體驗用例
現(xiàn)在我們看到如何借助樹莓派預(yù)先設(shè)置測試環(huán)境?,F(xiàn)在,讓我們看看如何解決設(shè)備未連接到wifi的開箱體驗問題。
這就是樹莓派上的RESTful服務(wù)的作用。RESTful服務(wù)應(yīng)該包含以下某些端點:
- 刷寫設(shè)備
- 完成OOBE
- 設(shè)置wifi等
- 獲取DUT IP地址
現(xiàn)在,對于我們來說,通過無線連接到設(shè)備變得簡單,設(shè)備完全為我們的測試做好了準備。
在發(fā)生任何錯誤或異常時恢復機器人
這是一個非常常見的情況。不要被這類問題所壓倒或沮喪。這時候,我們必須使用設(shè)備的低級組件將設(shè)備驅(qū)動回到其原始位置。例如,正如我在之前的文章中提到的各種軟件堆棧,我們需要訪問平臺或移動性層來將機器人驅(qū)動回到其原始位置。這是最棘手和最具挑戰(zhàn)性的事情,因此使用其他技術(shù),如April Tag或其他外部系統(tǒng)來將設(shè)備驅(qū)動回來。這使我想到了下一個問題,即將設(shè)備放回充電座為下一次測試運行做準備。
擴展到多個測試環(huán)境
使用低級命令,將設(shè)備放回充電座更加可靠。使用頂層的移動或?qū)Ш矫钆c使用平臺或移動性層驅(qū)動相比,故障率更高而效率更低。
擴展設(shè)置到多個測試環(huán)境的提示:
- 保持設(shè)置簡單。不要過于復雜或過度工程化解決方案。
- 具有可部署的樹莓派映像,以便可以輕松加載任何新的樹莓派。
- 將測試代碼放在遠程存儲庫中。將它們移到本地無法擴展。
最后,機器人自動化不是簡單的事情,需要大量的設(shè)計工作,并且需要考慮市場上的其他選項。沒有一種解決方案適合所有情況。我建議在采用最終解決方案之前進行概念驗證。
備選方案
由于我們正試圖解決的問題的性質(zhì)和復雜性,容易想到的一個問題是,“是否有其他替代方案?”簡短的答案是肯定的。我們可以有效地使用模擬器/仿真器進行測試,以覆蓋我們所描述的大部分用例,但是真實設(shè)備測試是無法替代的。