在自動化測試中,函數庫起到很大作用。在QC的自動化項目中,適當的編目函數庫,將項目無關的函數放在公共的函數庫中,將項目有關的函數放在項目根目錄下。我們此次項目編寫了大量的自定義函數,主要有兩類:一類是起到簡化主腳本代碼的作用,使測試腳本看起來更加簡潔,例如InitCom,FreeCom 函數等(用于進行串口的初始化);一類是起到檢查點的作用,例如CheckDb,Check_Object_SelectedText函數等(檢查點函數)。我們這次的自動化測試項目,很少去用工具自帶的檢查點。QTP本身包含一些檢查點,但是有局限性,有些需要直錄產生的圖片的支持,有些需要對象庫的支持,不利于手工編碼,也很不簡潔。通過直接調用檢查點函數,就能很方便的檢查軟件功能的期望效果,不依賴對象庫,也不依賴圖片。
代碼的配置管理沒有做,這是缺陷,直接后果是對于測試代碼形成的版本歷史無法追溯。這跟公司使用的CVS有關。事實上使用QC+QTP的架構后,我們的版本控制依賴QC所支持的配管工具,其中微軟的VSS和開源的Subversion是比較著名的2個,但是這些都不能和CVS兼容。
2.3 無法識別的對象
項目中比較棘手的是遇到對象無法識別,或者識別程度不夠好。對象無法識別表示計算機對該對象一無所知,也就無法正常的操作對象或者獲取該對象的運行時屬性,涉及到該對象的功能就無法驗證它的期望值。對象無法識別有兩種原因造成,一種是測試工具本身的插件就不支持識別該對象,另一種是由于將要識別的對象放在容器里邊而這種容器本身不能識別。舉例來說:測試工具能夠識別VB中的Label控件,但是當Label控件放置在PictureBox中,就無法識別了。原因:QTP的VB插件不能識別PictureBox,因為它這個插件本身就不支持該對象;PictureBox是個容器,將Label放在其中就有了嵌套關系,工具就不能直接定位和識別到Label了。對于類似PictureBox這樣的對象,一般沒有辦法正常的識別,所幸的是自動化測試的檢查點一般不會對容器做檢查;對于放置在容器中的原來可以識別的對象,可以采用遍歷函數來對整個Form進行遍歷,找到名稱和開發名稱相同的,然后再返回所需要的屬性值。
對象識別程度不夠好,一般指該對象的所有屬性值不能唯一定義這個對象。測試工具針對這種缺陷提供了一個解決方案,就是在對象描述中有一個描述位置的屬性 Ordinal Identifiers。這個屬性值確定了相似對象在窗體中出現的順序,從而能夠讓測試工具唯一識別。但是當某個類似對象脫離界面時,窗體中的所有類似對象就會重新排序,用之前的對象描述識別的是一個其他的類似對象。這種缺陷導致測試運行與界面的相關性提高,但目前沒有更好的解決方法。在VS系列軟件中,左側菜單欄就存在這種缺陷。
文章來源于領測軟件測試網 http://www.kjueaiud.com/