法曉宇 王潔
(1.中國電子科技集團(tuán)公司第28研究所 江蘇南京 210007;2.江蘇省教師培訓(xùn)中心 江蘇南京 210013)
對于軟件研發(fā)企業(yè)而言,軟件編寫完成之后必須進(jìn)行一系列測試,發(fā)現(xiàn)軟件中的漏洞并及時改進(jìn),有效提高軟件的質(zhì)量。當(dāng)然,市場中并沒有完美無缺的軟件,軟件的測試過程更重要的還是給用戶提供更好體驗。通常,在軟件測試過程中,為了得到全面的測試結(jié)果,往往選用多個平臺進(jìn)行軟件測試工作,在平臺選擇過程中,應(yīng)當(dāng)按照軟件本身的特點進(jìn)行精準(zhǔn)選擇。
軟件測試這門學(xué)科是隨著計算機行業(yè)的發(fā)展而發(fā)展的,早期的軟件由于當(dāng)時的計算機性能所限,其結(jié)構(gòu)較為簡單,功能也較為單一,通常并不需要進(jìn)行軟件測試工作,但現(xiàn)代的計算機軟件功能復(fù)雜,占用空間也更多,自身也難免存在一些影響軟件運行的因素,這些因素往往會影響用戶的使用體驗,因此,必須對軟件進(jìn)行測試,其目的是,檢驗軟件是否滿足實際需要,或至少弄清楚實際結(jié)果與預(yù)期結(jié)果的差距[1]。軟件測試的意義主要是盡可能避免軟件出現(xiàn)漏洞或運行錯誤,如果軟件的漏洞和運行錯誤較少,那么用戶的使用體驗顯然會更好,由此可見,軟件測試工作是整個軟件開發(fā)過程中的重要環(huán)節(jié)。
計算機軟件的多平臺測試過程中需要遵循實用性原則和科學(xué)性原則兩點。一方面,各種計算機軟件的具體數(shù)據(jù)都大有不同,開發(fā)類型往往也各不相同,如果直接進(jìn)行測試,往往過程復(fù)雜,因此,需要遵循實用性原則來進(jìn)行軟件測試工作,在測試過程中要適當(dāng)簡化流程和降低測試難度,盡量提高測試方法的使用價值,盡快完成有效測試以確保軟件開發(fā)工作高效完成;另一方面,測試過程也要堅持科學(xué)性原則,在測試前明確多平臺測試的具體職能所在,確保測試有效,同時測試人員在測試工作中也務(wù)必嚴(yán)謹(jǐn)工作,確保測試工作準(zhǔn)確完成[2-3]。
計算機軟件在多平臺下的測試流程主要分為以下幾個步驟:(1)根據(jù)實際情況,對測試方案進(jìn)行設(shè)計規(guī)劃,如測試運行需求和動態(tài)發(fā)展就采用黑盒測試方法,如進(jìn)行結(jié)構(gòu)性測試則采用白盒測試方法;(2)根據(jù)現(xiàn)有測試方法搭建測試模型,在搭建模型中,需要注意考慮計算機系統(tǒng)的兼容性問題;(3)根據(jù)測試軟件類型的不同,對每種測試方法進(jìn)行分配;(4)在實際測試過程中搜集相關(guān)信息,重點搜集運行錯誤的信息,以此來提供修改依據(jù),在完成修復(fù)后,立刻進(jìn)行二次測試,確保整個測試工作完整,進(jìn)而提高軟件開發(fā)合理性和實用性[4]。
軟件測試的要點是,保證軟件系統(tǒng)和測試平臺的工作狀態(tài)一致,這就需要測試人員合理協(xié)調(diào)測試流程,確保整體效果符合預(yù)期。眾所周知,各種軟件的開發(fā)習(xí)慣和操作界面往往都大相徑庭,這是影響多平臺測試效率的一個重要因素,因此在實際操作過程中,要注重采取通用的測試平臺來進(jìn)行測試,通過測試來發(fā)現(xiàn)軟件的各種缺陷和錯誤,進(jìn)而為后期的軟件修復(fù)工作提供參考[5]。
合理地選擇測試平臺是測試結(jié)果準(zhǔn)確的有力保障,因此在選擇測試平臺時務(wù)必慎之又慎。如今的軟件測試平臺可分為專業(yè)型和全面型兩大類。專業(yè)型測試平臺更側(cè)重于測試軟件的某一功能,優(yōu)點是可以針對性測試軟件并及時發(fā)現(xiàn)軟件中的問題,缺點是如果軟件功能較多,就必須花費大量時間進(jìn)行測試工作;而全面型測試平臺側(cè)重于統(tǒng)一測試軟件的所有功能,優(yōu)點是一定程度上可以提高軟件測試效率,缺點是軟件測試結(jié)果的準(zhǔn)確性相對較低。因此在實際測試過程中,測試人員必須根據(jù)軟件的實際特點來選擇測試平臺,確保測試的效率和質(zhì)量[6]。
人的因素始終是一切工作的關(guān)鍵因素,因此測試人員的工作對于計算機軟件的測試結(jié)果至關(guān)重要。測試人員的工作大致分為以下幾個步驟:(1)在測試項目立項后,進(jìn)行需求評審,開發(fā)人員、測試人員和評審人員三方根據(jù)自己的經(jīng)驗和專長來討論需求,軟件開發(fā)人員從技術(shù)實現(xiàn)角度進(jìn)行討論,測試人員從用戶角度進(jìn)行討論,各方通過討論來提出自己的意見建議,力求意見一致,在會議結(jié)束后,安排好項目進(jìn)度;(2)確定測試方案后,編寫全面的測試用例,做好測試用例的評審工作,以進(jìn)行測試的前期準(zhǔn)備,如測試前期準(zhǔn)備出現(xiàn)異常情況就應(yīng)當(dāng)及時通知另外兩方暫停工作;(3)通過各種工具和平臺來進(jìn)行具體測試工作,評估影響范圍和漏洞的級別,并及時與相關(guān)開發(fā)人員進(jìn)行溝通,隨時跟進(jìn)這些問題;(4)在軟件測試工作完成后,認(rèn)真記錄好相應(yīng)資料,并將資料歸檔。
多平臺的計算機軟件測試雖然效果顯著,但對于人力物力財力的消耗也是顯而易見的。為了降低成本,集成自動化測試領(lǐng)域得到了一定的研究和發(fā)展,這項技術(shù)可以模擬出多平臺測試的效果,目前已得到設(shè)計與實現(xiàn)的自動化測試平臺是Web自動化測試平臺,該平臺主要分為統(tǒng)一的腳本開發(fā)框架設(shè)計和自動化調(diào)度設(shè)計兩個模塊,使用Selenium自動化框架來搭建一個自動化測試平臺,來實現(xiàn)其測試的功能[7]。
整體來看,集成自動化軟件測試平臺具有六個重要模塊:
(1)分布式集群管理模塊,用來對多臺自動化測試的設(shè)備進(jìn)行集群管理,根據(jù)實際工作需要,采用消息隊列的方式來分發(fā)各設(shè)備的任務(wù),并收集這些任務(wù)的執(zhí)行結(jié)果,如發(fā)現(xiàn)執(zhí)行過程異常,則刷新一次設(shè)備狀態(tài)列表,將出現(xiàn)異常的設(shè)備及時清理出可用列表;
(2)任務(wù)調(diào)度和執(zhí)行設(shè)計模塊,用于滿足多用戶對平臺的使用需要,同時在邏輯上實現(xiàn)良好的多用戶隔離,使各個用戶之間的工作互不干擾,該模塊可以實現(xiàn)統(tǒng)一的任務(wù)調(diào)度管理,這項技術(shù)是通過可靠的節(jié)點集群、合理網(wǎng)絡(luò)規(guī)劃、監(jiān)控集群節(jié)點并對其進(jìn)行動態(tài)增減這3種方式來實現(xiàn)的;
(3)日志和運行監(jiān)控設(shè)計模塊:進(jìn)行自動截圖和錄屏功能,在任務(wù)執(zhí)行中一旦出錯就可以自動保存出錯狀態(tài),為工作人員解決問題提供參考依據(jù);
(4)郵件通知模塊,該模塊是平臺與用戶通信的重要途徑,可以隨時告知用戶的任務(wù)執(zhí)行結(jié)果或執(zhí)行異常情況,這一模塊的設(shè)計重點在于對發(fā)送人員和收件人進(jìn)行分組定義,一般來說,人員的分組配置需要提供發(fā)件人的郵箱和密碼,而由于企業(yè)內(nèi)部通信需要數(shù)字證書簽名確認(rèn),因此發(fā)件人申請郵箱時可不使用數(shù)字證書簽名;
(5)測試結(jié)果管理模塊:采用TestNG框架,并以html文檔的格式來展示測試結(jié)果,同時,為了方便用戶直接查看結(jié)果報告,在郵件通知中會給出結(jié)果報告的地址路徑。
(6)定時任務(wù)和計劃任務(wù)模塊:靈活調(diào)度任務(wù)安排,從而做到對測試平臺的充分利用,減少任務(wù)等待時間。
而對于數(shù)據(jù)庫設(shè)計而言,在設(shè)計前需要綜合各方面因素,結(jié)合實際情況來選擇數(shù)據(jù)庫,對于數(shù)據(jù)庫結(jié)構(gòu)層次的設(shè)計要確保清晰合理,否則不僅會造成結(jié)構(gòu)復(fù)雜和效率低下等問題,還容易導(dǎo)致后期的升級和維護(hù)工作難度加大。
集成自動化測試平臺是依托于統(tǒng)一腳本開發(fā)框架實現(xiàn)的,框架中包括頁面對象模塊、公共方法模塊、測試腳本模塊和測試工具類模塊。在平臺運行前,需要對其進(jìn)行測試,其測試用例應(yīng)當(dāng)事先在TestNG.xml當(dāng)中進(jìn)行配置,再通過TesgNg注解標(biāo)識來進(jìn)行相應(yīng)的測試[8]。
任務(wù)調(diào)度模塊的實現(xiàn)首先需要進(jìn)行設(shè)備狀態(tài)列表的設(shè)計工作,列表應(yīng)當(dāng)顯示設(shè)備的IP地址、設(shè)備名稱、工作狀態(tài)等基本信息,同時,列表應(yīng)當(dāng)具有可編輯性,能夠手動添加或刪除列表中的設(shè)備,在添加設(shè)備時應(yīng)填寫相關(guān)信息,這些信息可通過消息隊列與服務(wù)器進(jìn)行通信。其次是日志和異常管理功能,該功能的實現(xiàn),需要對TestNG所生成的html格式文本進(jìn)行解析來獲取數(shù)據(jù),然后將這些數(shù)據(jù)存儲到數(shù)據(jù)庫當(dāng)中并展現(xiàn),從而實現(xiàn)測試工作的統(tǒng)一管理,所提取分析的數(shù)據(jù)應(yīng)當(dāng)包括項目名稱、測試類型、腳本路徑、測試結(jié)果、開始和結(jié)束時間等,方便后期對測試結(jié)果進(jìn)行分析和排查。最后是測試結(jié)果的管理功能,這項功能根據(jù)日志中所提取分析的數(shù)據(jù),確認(rèn)測試結(jié)果是否成功,并將這些結(jié)果以郵件方式發(fā)給用戶。
集成自動化軟件測試平臺實現(xiàn)的最后一個步驟就是在實際條件下或高度仿真環(huán)境下對平臺進(jìn)行集成測試和驗證測試,驗證平臺是否符合實際需求,測試過程中,主要測試內(nèi)容是平臺統(tǒng)一腳本開發(fā)框架功能和平臺任務(wù)調(diào)度模塊功能,除此之外,測試人員通常也會對非功能需求方面進(jìn)行測試工作。
在這個信息化時代,軟件是人們?nèi)粘9ぷ魃町?dāng)中所不可或缺的,因此軟件的測試工作也就成了必不可少的一項工作,以往的軟件測試平臺已不能滿足現(xiàn)階段軟件測試工作的實際需要,必須合理利用多平臺下的計算機軟件測試方法來進(jìn)行軟件測試工作。當(dāng)然,軟件測試工作是一項復(fù)雜工作,需要測試人員根據(jù)實際情況選擇針對性的方案,不僅如此,軟件測試人員還應(yīng)當(dāng)在現(xiàn)有技術(shù)的基礎(chǔ)上,積極探索和創(chuàng)新,不斷提升自己的綜合水平,為軟件測試效率和質(zhì)量的提升貢獻(xiàn)力量,進(jìn)而促進(jìn)軟件行業(yè)繼續(xù)高速發(fā)展。