我的軟件測試之旅:(8)困難——沒有現成的測試工具
新的測試工作面臨的第一個調整就是無法使用熟悉的工具,之前的工具是根據產品的操作系統平臺以及人機接口進行了封裝的,而新的Linux系統顯然還不在他們的關注范圍內。于是我得另尋方法,方法當然也簡單,因為被測對象也就是我們所開發的東西,就是在Linux下運行的應用程序,其中有些核心模塊(Kernel Module),只要通過Shell腳本使用相關的命令就可以完成測試了。
Shell腳本只能夠做到一個測試用例,寫一個Shell腳本,于是有大量的重復,測試自動化上已經有豐富經驗的我自然難以接受,不過暫時也無能為力,畢竟我還不具備單獨開發出一個測試自動化框架的能力。只能夠在單個Shell腳本中去執行多個測試用例,在腳本內抽取出一些公用代碼,做成函數,最大的缺陷就在于測試的顆粒度不夠清晰,以及測試用例之間的耦合度太高。
在Linux系統下進行測試,了解一些基本命令是必然的,比如查進程清單、輸出重定向之類的命令。由于沒有現成的函數可以使用,要能夠處理應用程序或核心模塊的輸出,進行自動化的測試結果收集和分析也需要了解一些文本操作的高級命令,例如awk和sed等,最好還要懂得怎么使用正則表達式,才有可能從瀚如煙海的日志輸出中快速地識別出所要尋找的信息。
一點點的編程能力也是需要的,有時候開發的功能就是為系統其他應用程序和模塊提供服務,測試的對象就是它們提供出來的API(Application Programming Interface,應用程序編程接口),就只能夠自己寫一些測試用小程序,在程序里面調用這些API,并通過輸出一些日志信息來進行測試。
所幸的是,后來測試自動化小組又從芬蘭引入了一套新的框架,也是口碑非常好,我后來也非常的喜歡,愛不釋手。這套框架叫做robotframework(www.robotframework.org),目前已經開源。它提供了Telnet的庫,可以通過Telnet協議和我們的被測設備交互,向被測設備寫入命令,以及獲得輸出,從而完成測試。框架本身的測試用例的格式也很簡單,當時主要支持Excel的CSV格式和HTML表格格式,我偏好其中的表格格式。表格格式的意思是,在一個HTML文件中(或者叫頁面上),有四個表格,每個表格分別具有不同的含義,框架本身會區別對待其中的信息,加以處理。根據其表格的內容和格式,填入文本化語言,而不是腳本語言或是編程語言的函數調用,就是文本化的語言,寫好保存,這就是一個測試用例,也是一個測試腳本了。文本化的語句需要有對應的庫函數才可以真正產生作用,例如“Get Page Title”就得有類似于相應的getpagetitle()庫函數,庫可以用Java或者Python語言實現。
相關鏈接: