本文要點

  對話接口的測試需要用系統(tǒng)的方法,因為它們不是一個單獨的一層或單獨的系統(tǒng),而是將交互組件和服務拼接在一起

  測試應該準備好接受自然的非線性和語言的細微差別

  在處理對話接口時,得依靠您的 API 測試技能,它們是大量的 API!

  對話是靈活的,因此系統(tǒng)需要從某個地方獲得適應性。這些接口主要由 AI/ML 組件支持,所以要在系統(tǒng)中找出 AI 組件

  測試對話接口更多的是關于用戶體驗和系統(tǒng)對用戶的適應性,而不是關于遵從一組嚴格的需求

  去年的圣誕購物排行榜上,智能音箱、智能助手和其他類似的東西占據(jù)了首位。它們有什么共同點? 它們都是基于語音的計算接口,隨著它們的出現(xiàn),可能會出現(xiàn)一波新的應用程序 (稱之為技能、例程和操作)。所有這些都需要使用適當?shù)姆椒ㄟM行測試,以適應它們的特殊性和上下文。由于技術一直在發(fā)展,有一些需要調整 (測試策略、測試方法、驗證標準),而有一些可以重用 (例如 API 測試方法和工具),最后但并非最不重要的是,有一些需要學習新東西 (例如測試人工智能模型和組件)。

  這些年來對話接口是如何發(fā)展起來的

  對話接口并不是什么新鮮事物,至少我是這么認為的。如果我要正式定義它們,它們表示基于自然語言的任何形式的計算機用戶接口 (無論是書面的還是口頭的)。至少可以說,人們早在幾十年前就已經(jīng)設想了這樣的接口,比如回想一下 HAL 9000,它是 1968 年的一部電影中設想出來的。對我來說,這是最早的對話接口的例子之一,它是個語音助手。

  電影很好很贊,但是我們都知道很多時候電影是以一種一廂情愿的方式呈現(xiàn)事物,像 HAL 9000 這樣的接口也是如此。對話接口的情況也是如此,為了成功,需要盡可能減少交互的摩擦力。換句話說,對話接口要求系統(tǒng)變得具有相當?shù)倪m普性,并且足夠強大,以支持“翻譯”工作。

  多年來,計算系統(tǒng)變得越來越小,同時也提高了它們的處理能力,同時連接得越來越多。這使得我們可以在口袋里或家里或辦公室的某個地方擁有足夠強大的計算元素,它們能小到不會打擾我們。我很確定這對任何讀者來說都不是什么新鮮事,因為我們都經(jīng)歷過物聯(lián)網(wǎng)對話或“連接著什么”的場景。這些也表明,有著相同的驅動力催生出對話接口,并且很多時候它們相互支持和補充。

  近年來,隨著越來越多的人擁有功能日益強大的手機,從而為對話接口真正走到臺前提供了完美的環(huán)境。人工智能的進步也是一個強有力的支撐,可靠的語音識別和處理正需要它。

  近年來,對話接口開始成為現(xiàn)實 (不僅僅是一個電影道具),然后變得越來越精致。擁有一個日益連接的世界也很有幫助,因為在大多數(shù)情況下,對話接口為智能“事物”和設備提供了與我們交互的入口點。

  測試對話接口的主要挑戰(zhàn)

  挑戰(zhàn)? 有很多,而且出自不同的角度。

  編程及其測試是在清晰和明確的邏輯前提下逐步發(fā)展的。在這種情況下,輸入值是明確的。與此同時,自然語言則要含糊得多,而且在語法和語義上要靈活得多。這就是測試對話接口最重要的挑戰(zhàn)之一。當測試這樣的接口時,輸入是自然語言,我們?nèi)祟惡芟矚g有多種表達方式,于是就有了同義詞和我們的表情。在這種情況下,測試從純邏輯轉換為了更接近模糊邏輯和概率云的東西。

  由于對話接口的目的是為了提供一種自然的交互,因此對它的測試還需要對人類社會和交互方式有大量的同理心和非常深入的理解。在這個領域,我將把文化方面歸入進來,包括講話的副語言方面 (即所有發(fā)生在語音信息之外的交流,以語音調制和級別編碼)。這些元素提供了額外的復雜性,很多時候做這份測試工作的人需要考慮這些方面。我認為,公平地說,測試對話接口也可以看作是調優(yōu),以便通過圖靈測試。

  測試這些接口時面臨的另一個挑戰(zhàn)是系統(tǒng)的分布式體系結構。大多數(shù)情況下,具有這種接口的系統(tǒng)是分布式服務的集合,通過 API 調用將它們粘合在一起。這并不是什么新鮮事物,但是它可以很快就變得很復雜,同時它可以轉移測試工作的重點,最終成了測試其他系統(tǒng)及其交互,而不是最初的預期。

  輸入的一致性也是一個挑戰(zhàn)。為了最小化可變性,我們需要確保輸入盡可能可重復,而聲音很容易就會有變化,基于這一事實就有了這一挑戰(zhàn)。

  在挑戰(zhàn)列表最后一項但同樣很重要的,我認為是性能,因為這可能很難確定。接口的性能由什么決定?它混合了易用性、靈活性、延遲和可伸縮性等因素,這里只提到了性能方面的部分因素,這些因素會影響用戶對整個對話接口及其目的的感知。

  我們?nèi)绾螒獙@些挑戰(zhàn)

  首先,我認為重要的是要走出舒適區(qū),接受不確定性和復雜性。這意味著在我們習慣于使用固定的和定義良好的值的情況下,使用置信區(qū)間進行操作。這是必要的,因為單詞和短語可以有多種含義,而且?guī)缀跻恢倍伎梢杂枚喾N方式建模并表達相同的意思 (對話接口的基本構建塊)。

  其次,在我自己的例子中,是制定一個測試策略,它包括一個清晰的遠景和任務聲明,以及一個不斷擴展的構建塊和依賴關系地圖。這使得測試人員不會忘記他們的目標,結果花了大量的時間測試系統(tǒng)中不是很重要的部分,或者甚至不在他們的控制之下的部分。制定一個測試策略,可以幫助我更好地理解所測試的是什么以及我所處理的系統(tǒng)類型。它們是相關的,因為基于靜態(tài)規(guī)則的接口與基于 AI/ML 模型的接口的處理方式不同,比如那些使用自然語言處理服務或情感分析作為控制變量的接口。

  獲得技術上的幫助,并追求內(nèi)置于被測系統(tǒng)的可測試性,也有很大的幫助。對我來說,這意味著包括擁有大量的檢查點和日志記錄點,以及可編程訪問的非耦合接口。正如我在我的演講中提到的,當涉及到測試對話接口時,API 測試工具和方法有很大的用處。這意味著像 Postman、Swagger 和大量的腳本編寫可以幫助確??芍貜偷臏y試和探索整個系統(tǒng)的良好可視性。說到這里,我想到了使用 Postman 集合以一種易于與整個團隊共享的方式記錄交互場景,然后通過 Python 腳本以輸入和序列的不同方式執(zhí)行這些集合。

  前面我提到了模糊性這一方面,解決這個挑戰(zhàn)的一個方法是關注轉換,而不是狀態(tài)。任何接口的目標都是引導用戶通過一個流程,達到一個目標。在這個視圖中,流中的單個狀態(tài) (或停止) 不如不同狀態(tài)之間的轉換重要。我很快就了解到,在測試聊天機器人和語音助手接口時,確保正在發(fā)生轉換比覆蓋狀態(tài)更重要。這來自于個人經(jīng)驗,我遇到過一個場景,作為一名用戶被卡在一個死胡同里,不得不離開應用程序,因為我的輸入不匹配該應用所期望的任何輸入值 (同時應用程序也沒有提供任何指導信息,告訴我預期輸入應該是什么)。在這樣的場景中,我意識到,當使用對話接口時,用戶體驗得益于有從一種狀態(tài)切換到另一種狀態(tài)的選擇權。

  我們學到了什么

  測試是有趣事情,需要持續(xù)地學習!這是我得到的第一個教訓,隨著我對越來越多不同類型的系統(tǒng)進行測試,多年來這一認識不斷得到加強。更具體地說,與測試對話接口相關,我了解到工具應該適應上下文,要探索許多方面的技術,而通用系統(tǒng)化思維是一個很有用的研究領域。

  在測試對話接口時,我得到的一個教訓是,總是要問自己:“我現(xiàn)在測試的這個組件是在團隊的控制之下,還是向其他服務提供者提供免費測試?”這一點很重要,因為我意識到,我投入了大量時間來測試對話接口的我們無法控制的某些方面。

  我早期得到的另一個教訓是不要被人工智能或機器學習組件嚇倒。我尊重它們,并理解在它們的背后,有一些可以作為黑盒子來處理的模型,它們具有一定程度的決定論。這來自于對臨界值 (考慮屬于或不屬于分類域的值的閾值) 的理解,每個人工智能或機器學習支持的組件都有它,而跨邊界操作決定了它們的行為。從測試的角度來看,這意味著為決策點的每一邊制定等價分區(qū),并從每個分區(qū)測試盡可能多的值。例如,當我在打招呼的時候,我通常會在積極和消極兩個方面嘗試至少十個選項,同時,對于每個意圖,我都會嘗試想出盡可能多的同義詞和相同意義的短語。通過這種方法,我試圖涵蓋人工智能或機器學習預期輸入的可變性方面。

  測試對話接口所需的技能以及如何開發(fā)這些技能

  我認為以 API 測試技能集作為起點是一個不錯的選擇。在我看來,這行得通,因為從技術角度來看,可以將對話接口類比為精心設計的 API 調用編排。

  同理心是另一個重要的因素,因為自然語言是一種更為親密的交互方式 (與圖形用戶界面相比),而將自己置于目標用戶位置,以及用戶周圍重要代理 (例如面向兒童的應用程序的父母) 的位置,需要有相當程度的同理心。同時,作為一名測試人員,還應該查看指定的路徑,以確保應用程序不僅對用戶是友好的,對在整個生命周期中運行和支持它的人員 (例如支持代理、后臺運維人員) 都是友好的。這一點也很重要,因為如果從 API 測試技能集開始,那么在該上下文中,很多時候用戶都是系統(tǒng)或開發(fā)人員,而對話接口大部分時間都是針對不太懂技術的用戶的。

  你還需要掌握建模技能,以便可以創(chuàng)建意圖、轉換和相關觸發(fā)器的映射,這些映射將一起定義對話接口流。

  我真的希望在閱讀這篇文章之后,您會對對話接口產(chǎn)生更加濃厚的興趣。意識到事情總是在變化是件好事,我相信測試人員已經(jīng)為這樣的應用程序做好了準備。如果我要挑選這篇文章的重點,那就是它們對同理心和靈活性的需要,以及即使在這種新環(huán)境中 API 測試工具仍然非常有用的好消息。