自動化測試一直是一個比較熱門的話題,我不是談怎樣去做自動化的框架或具體的自動化技術(shù)的細(xì)節(jié),其實自己在這方面也只是個外行,主要談一下自動化測試在國際化測試中應(yīng)用的一些注意點。我所謂的自動化指的是基于GUI回放機制的功能自動化。

  以我個人在自動化方面的經(jīng)驗,指望自動化工具去幫你發(fā)現(xiàn)測試遺漏的問題基本不可能,自動化需要測試的測試點基本上是從手工測試的用例中挑選的,在自動化測試中的檢查點在手工測試用例中肯定都有,如果你的目的是靠自動化去發(fā)現(xiàn)問題,建議放棄這個打算。目前自動化測試應(yīng)用基本上都是在做回歸測試或者BAT(Build Acceptance Test)測試。

  當(dāng)維護一個已經(jīng)比較成熟的產(chǎn)品時,如果經(jīng)常需要對當(dāng)前產(chǎn)品做一些小改動,測試人員往往關(guān)注的是改動的功能點測試,但是沒有改動的部分不會有問題嗎?沒有經(jīng)過測試誰也不敢保證。如果每次改動都是很小的一部分,而其他功能的核心部分都需要重新測試一遍,測試人員的壓力會相當(dāng)大,而且這樣重復(fù)的工作也會導(dǎo)致測試人員工作的積極性下降,如果對于產(chǎn)品的核心功能中絕大多數(shù)可以自動化的測試點進行自動化,測試人員在做測試時只重點關(guān)注改動的部分和各個功能之間有關(guān)聯(lián)的部分,這樣測試人員的精力將更集中,也可以花更多的時間去考慮改動對關(guān)聯(lián)功能的影響,整個測試效率會大大提高,而且可以保證產(chǎn)品的核心功能沒有問題。

  另一種使用自動化的場景是BAT測試,我們在測試過程中經(jīng)常會選擇一些非常重要的測試用例作為BAT的case,如果這些case全部pass,我們才會進行下面的測試,如果這些Case中有一個或多個fail了,我們會要求開發(fā)人員重新出build,這些case的選擇其實和維護產(chǎn)品過程中回歸測試的核心功能測試case選擇差不多。這樣出現(xiàn)了一個問題,我們測試人員拿到的build可能過不了BAT測試,而且有時候是連著幾個build過不了BAT測試,這樣會使測試人員產(chǎn)生抱怨,也影響大家工作的積極性,如果有可能的話,將這些BAT里面的Case做成自動化的Case,這樣新build來的時候,自動化工具可以幫你判斷這個build是否有問題。如果沒有問題,測試人員才進行正式的測試。

  其實國際化的測試如果想去做自動化測試,也和上面兩種情況類似,而且通常國際化需要自動化的case都是基于英文對應(yīng)的自動化case進行修改或復(fù)用。我們現(xiàn)在是假設(shè)已經(jīng)有了一套可以在英文上正常運行的腳本,怎么讓他們能在本地化的操作系統(tǒng)上運行,以自動化測試工具QTP為例,首先,原來的自動化腳本是在英文操作系統(tǒng)上面運行的,你需要讓腳本能在本地化的操作系統(tǒng)上面運行,其次,如果要支持本地化字符的輸入輸出,你要將每一個和輸入有關(guān)的地方都寫在腳本里,比如輸入框,下拉框的選擇等,因為一般做BAT腳本時,輸入框如果有默認(rèn)值,一般會使用默認(rèn)值,下拉框也是用默認(rèn)值。如果你要測試輸入本地化字符,用默認(rèn)值肯定是不行的。

  我們以第一個點為例,要保證腳本能在各種本地化操作系統(tǒng)上運行,這個其實和手工測試差不多,你要考慮哪些因素可能會影響腳本在本地化操作系統(tǒng)上運行,比如一般情況下軟件默認(rèn)會安裝到C:Program Files,但是德語等語言不是這個目錄,那么你的腳本需要修改,當(dāng)安裝軟件時腳本要考慮不同的操作系統(tǒng)使用不同的默認(rèn)安裝路徑。還有,對于messagebox等,在英文下顯示為yes,no, 在中文會顯示為是(Y),否(N),還有一些其他類似的標(biāo)準(zhǔn)控件,他們都是實現(xiàn)了MUI的,在不同的操作系統(tǒng)下他們的text屬性不一樣。如果你的對像識別屬性中包含了text屬性,腳本在本地化操作系統(tǒng)上運行識別不了針對這些標(biāo)準(zhǔn)控件的操作,因為找不到對象,在QTP中,針對每一個需要測試的本地化的操作系統(tǒng)都必須有自己的object repository,你可以在英文的object repository基礎(chǔ)上,使用update from application功能,直接去更新對象的屬性可以了。以上兩個點是我在用QTP做國際化的自動化測試中感覺需要注意的地方。并不是所有的國際化測試點都適合用自動化來做的,比如UI上面的check,如果你去寫腳本去check,腳本的check點會很多,維護也不好維護,成本太高,一般可以采用讓QTP運行時將跑過的所有界面都抓圖下來,然后人工檢查的方式,你只要在options-->run里面設(shè)置Save still image captures to results 為always可以了。這樣通過運行時自動抓的圖可以發(fā)現(xiàn)一些UI方面的問題。

  其實在實際過程中也遇到過一些其他問題,有些可能是QTP自己對國際化支持的問題,比如一個輸入框,腳本中有給其輸入值的語句,在英文操作系統(tǒng)下跑沒有問題,但是在日文操作系統(tǒng)下運行有問題,通過回放腳本,你可以發(fā)現(xiàn)運行時有輸入的動作,但是沒有回車事件,這種情況需要針對問題出現(xiàn)的問題進行特殊處理,這些實際上又都回到了自動化腳本的寫法問題上,不詳細(xì)寫了。至于其他的自動化測試工具如何來做國際化的測試,可能和用QTP有些細(xì)節(jié)的不同。但是我想核心的東西應(yīng)該是一樣的。

注:本文出自lj1981727的51Testing軟件測試博客:http://www.51testing.com/?27176