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