楊 晨
(上汽通用五菱汽車股份有限公司技術中心, 廣西 柳州 545007)
軟件種類和數(shù)量的增多,帶來的不僅是開發(fā)難度的加大,同時也給測試人員帶來了不小的挑戰(zhàn)。許多中小型公司的軟件測試力量十分薄弱,軟件測試人員的人才儲備遠遠不足。現(xiàn)在的軟件越來越追求高質量和創(chuàng)新,如何在短時間內開發(fā)出高質量的軟件顯得尤為重要,而軟件測試在整個軟件的開發(fā)過程中起著舉足輕重的作用,始終貫穿著開發(fā)的整個周期。同時,隨著軟件的底層算法日漸復雜,軟件架構也越來越豐富多樣,僅靠傳統(tǒng)的測試技術已經很難適應最新的需求了,再加上市場需要軟件產品快速研發(fā)并投入到市場中去,這往往會導致測試結果的遺漏,測試效率也比較低。因此,采用新型的軟件測試技術,并且提高自動化測試的比重,才能確保高效地完成軟件測試的項目,促進軟件產品的快速研發(fā)和上市。
在軟件產品的開發(fā)過程中,功能的設計會以用戶的需求和對該產品的規(guī)劃為基礎,還要考慮到產品的安全性和可靠性,但由于開發(fā)人員的技術參差不齊,可能會導致開發(fā)過程中出現(xiàn)一些紕漏,此時,軟件測試的重要性就顯現(xiàn)了出來。軟件測試能夠協(xié)助軟件開發(fā)人員,在開發(fā)的過程中找出項目的缺陷,包含功能上的缺陷、代碼的bug 以及實際運行和期待運行狀況的差別等,并能夠在一定時間內對項目開展全面的測試,排除問題故障,確保軟件能平穩(wěn)且高效地運行[1]。
首先是數(shù)量的增加。對軟件測試人員而言,算法、架構趨于復雜,傳統(tǒng)的軟件測試技術難以再適應新的需求,在測試方面容易造成漏測,誤測等不良的結果。其次,自動化軟件測試在整個項目的軟件測試中所占地比重仍然較小,大多數(shù)的測試還依賴人工的測試。受到人員和時間的限制,有些開展軟件測試的相關人員,在測試之前對于該軟件產品沒有充分且深入地了解,導致他們在測試過程中有很多疏忽,體現(xiàn)在測試用例的編寫上,欠缺考慮,不能全面覆蓋所要測試的功能需求,給產品的質量安全性埋下隱患。
與人工測試相比,自動化軟件測試能較大程度地提高了軟件測試的整體效率。但很多企業(yè)往往采取人工結合自動化的方式去開展測試相關的工作,而不是讓自動化測試全面取代人工測試,這也側面反映出了自動化測試雖然有很大的優(yōu)勢,但也不是萬能的。自動化測試的另一個優(yōu)勢是它能夠降低軟件測試的風險,避免一些人為因素致使的測試問題的發(fā)生。當自動化測試擔當測試的主體時,人工就能更加專注地去設計測試案例并分析結果,分工明確會讓一些原本很復雜的測試項目變得簡單很多,尤其是進行回歸測試消耗的時間成本下降,也能大大提高工作效率[2]。
所謂功能驅動測試,就是將原本一個獨立的項目分為多個獨立的子模塊,這些子模塊都能各自作為測試的載體,是可以獨立于其他模塊的測試用例,供測試人員進行單個模塊的測試,其中的數(shù)據(jù)和函數(shù)都與原來的項目所包含的一致。通過這種功能的劃分,能夠使測試人員維護起來十分方便,提高工作效率[3]。
關鍵字驅動和其他軟件測試方法比較起來,更加注重邏輯層面,整個測試過程相對而言是比較抽象的;對測試腳本做抽象化處理,是為了有利于測試人員更注重邏輯,不需要關注代碼本身,一方面降低了測試難度,另一方面使整個測試過程變得易于更改。該方法將關鍵字與數(shù)據(jù)建立聯(lián)系,但在測試過程中會將測試所需的腳本同數(shù)據(jù)分離開,一些實現(xiàn)的具體場景和細節(jié)也和相關的描述產生了分隔,導致整個過程顯得比較抽象[4]。
數(shù)據(jù)驅動測試技術將被測數(shù)據(jù)和測試的腳本分隔開;被測數(shù)據(jù)可以采取多種方式存儲起來,例如列表、期望值和輸入值分別記錄到列表中,在每次被讀入數(shù)據(jù)的時候不容易發(fā)生遺漏;同時,測試的腳本由于和數(shù)據(jù)分隔開了,且它本身是帶有一些存儲著數(shù)據(jù)信息的標記的,因此,腳本是可以獨立進行測試的,不與其他信息沖突。很顯然,這種數(shù)據(jù)和腳本分隔的測試方式,能夠確保測試的穩(wěn)定性,由于分成了幾個模塊,也便于測試人員進行維護,更容易激發(fā)創(chuàng)新,創(chuàng)造出新型的測試方式。相應地,該方式也有一定的缺陷,體現(xiàn)在軟件的兼容性的差異,導致了同一個測試腳本用于不同的軟件上時,需要針對性地做出一定的改動,也就增加了整體的成本。
該測試技術是在數(shù)據(jù)驅動技術的基礎上衍生而來的,通過一定的優(yōu)化,它實現(xiàn)了在進行測試的過程中,依靠對響鈴的指令驅動系統(tǒng),來完成測試;它與數(shù)據(jù)驅動的差異在于,指令驅動的存放數(shù)據(jù)的列表不再存放數(shù)據(jù),而是存放了指令,這一改進,在某種程度上,可以有效地提升測試的效率。
錄制回放的方式借鑒了腳本的寫法,其原理是寫出具有錄制和回放功能的腳本,然后能使腳本模仿軟件的功能,再現(xiàn)出軟件的用戶在進行操作使用時的功能狀況;由于它不需要太多的編程上的技巧,它的整體架構的穩(wěn)定性一般較差,而且功能的復用性差,不易轉移和重復利用;這種方式已經逐漸被時代淘汰了,僅在早期會被企業(yè)用于商用的測試。
獨立腳本測試分為兩種,一種是線性腳本,也叫非結構化腳本,這種腳本的難度較低,因為其本身可以應用不同的編程語言,且編寫好后可以同被測系統(tǒng)交互,方便快捷,但缺點也很明顯,系統(tǒng)和腳本“綁定”的后果便是軟件系統(tǒng)自身的波動和一些變化,會使腳本同樣受到影響,大大增加了測試人員的維護成本。由于其維護成本較高,僅適合用于一些中小型測試項目。另一種是結構化的腳本,對測試人員而言難度較高,因為它囊括了很多結構化的內容,例如循環(huán)、調用的函數(shù),其邏輯性也比線性腳本要強很多,測試的穩(wěn)定性和效率也較高。
1)自動化軟件測試的相關工具包含了測試管理工具、功能測試工具、負載壓力測試工具、白盒測試工具和測試輔助工具等。
2)適用條件:軟件功能及需求具備較好的穩(wěn)定性;自動化測試的意義就體現(xiàn)在對同類型的功能進行自動化的測試,假如需求經常變動,不僅會使自動化顯得沒有太大的意義,還會讓一些除了基本功能外的其他功能漏測;自動化不僅體現(xiàn)在一輪測試中,而且當測試的腳本被重復利用時,才能減少成本;適合長期的項目,短期項目不能滿足時間需求,從設計測試用例到編寫測試腳本等,都需要一定長的時間成本。
以Linux 自動化測試的一部分開源軟件為重,該測試方法屬于關鍵字驅動方法;GUI 測試主要是以圖形的界面為主,對這些對象進行軟件窗口、界面圖標、軟件菜單和指示設備等的測試。
CLI 的測試模式主要是以命令協(xié)議、命令外殼和命令集構成,其測試原理主要是通過用戶的操作來作為驅動終端,然后經過終端向用戶端發(fā)送命令,通過遠程通信協(xié)議的溝通后,服務器終端就會開始運作,然后通過終端對服務器終端外殼的驅動,利用命令集來實現(xiàn)對用戶命令的解析。在進行該測試的時候,應該選擇更科學合理的測試框架,然后總結,整合。
云服務器、云計算等技術的出現(xiàn)使軟件平臺的架構產生了較大的變化,從本地的,實體的服務器,轉移到了云端的服務器,來進行軟件測試;云服務器有利于資源共享,能夠便于測試人員與開發(fā)人員進行測試結果的資源共享,對測試人員而言充分地利用云平臺上的軟件測試的相關工具和服務,提高測試效率。雖然云端軟件測試技術優(yōu)點很多,但具體實現(xiàn)仍比較困難,與本地測試比起來,還有很多地方需要改進。
軟件測試團隊的建設對于每一個處于發(fā)展中甚至是成熟的公司而言,都扮演著不可或缺的角色;尤其是隨著自動化軟件測試技術的發(fā)展和進步,采用新型的測試技術能夠快速的掌握軟件測試的核心要素,優(yōu)先增大自動化的比重,削弱人工測試的比重,更好地減少人力物力的成本,更為高效地完成軟件測試。在大數(shù)據(jù)、云技術發(fā)展迅速的階段,應該勇于試錯,找到合適的自動化軟件測試方式,不斷優(yōu)化,以確保完成軟件測試項目。