軟體相容性與軟體相容性測試
(1)什麼是軟體相容性
很多東西都可以和平共處,巧克力和花生就是一個很好的例子,如果你喜歡吃花生巧克力糖的話。但是,我們也知道水和油就不相容。在我們用心建立一個複雜的大 型應用軟體時,開發人員必須要非常努力使所開發的軟體能在預期的各種環境中運行,避免不相容的情況出現。但隨著軟體開發的複雜性,不同的平台,不同的應用 軟體的多樣化,還有不同軟體的實現方法的多樣化,不可預見的情況越來越多,避免軟體不相容的情況也變得越來越困難。
一般來說,相容性指能同時容納多個方面,例如你能和朋友們友好相處,那是相互能相容,如果相互間相處非常默契,就是相容性非常好。同樣道理,在電腦術語 上相容是指幾個硬體之間、幾個軟體之間或是軟硬體之間的相互配合程度。相對於軟體來說,是指某個軟體能穩定地工作在某作業系統/平台之中,就說這個軟體對 這個作業系統/平台是相容的,再就是在多任務作業系統中,幾個同時啟動並執行軟體之間如果能穩定地工作,就說這幾個軟體之間的相容性好,否則就是相容性不好。
另一種情況是軟體共用的資料,幾個軟體之間無需複雜的轉換,即能方便地共用相互間的資料,也稱為相容。因此,軟體相容性是衡量軟體好壞的一個重要指標。從 這個意義上看,軟體相容性不良就是軟體推廣的最大阻礙,例如在微軟曆史上花費人力財力最多的Vista系統,發布了半年之久依然是叫好不叫座,據說原因之 一是軟體相容性最為使用者所詬病。
(2)什麼是軟體相容性測試
隨著軟體逐步被推向市場,被更多的使用者安裝,相容性問題也日益凸現出來了。理論上任何兩個軟體之間都有衝突的可能,因此軟體的相容性就成為了衡量軟體好壞 的一個重要指標。相容性測試是指測試軟體在特定的硬體產台上、不同的應用軟體之間、不同的作業系統平台上、不同的網路等環境中是否能很好地啟動並執行測試。簡 單的說,相容性測試是指測試某新開發的軟體在某一特定環境下與各種軟體的協調性,軟體之間能否很好的運作。例如,會不會有相互不良的影響,還有軟體和硬體 之間能否發揮很好的效率工作,會不會影響或導致系統的崩潰等。
(3)配置測試和相容性測試的區別
在我們進行軟體測試時,經常有兩個很容易混淆的兩個概念,這裡特別列出來分析一下。配置測試是指驗證在不同的硬體設定和軟體配置下,應用程式能否正常工作。配置測試的目的是保證軟體在其相關的硬體上能夠正常運行,而相容性測試主要是測試軟體能否與不同的軟體正確協作。
配置測試的核心內容是使用各種硬體來測試軟體的運行情況,一般包括:一是軟體在不同的主機平台上的運行情況,例如Dell平台和SUN平台;二是軟體在不 同的組件上的運行情況;三是不同的外設和不同的介面下的運行情況;最後還有不同的可選項的運行情況,例如某些可選擇的不同軟硬體和網路環境。
而相容性測試的核心內容:一是測試軟體是否能在不同的作業系統平台上相容,或測試軟體是否能在同一作業系統平台的不同版本上相容;二是軟體本身能否向前或 者向後相容;三是測試軟體能否與其它相關的軟體相容;四是資料相容性測試,主要是指資料能否共用等。所以,配置測試和相容性測試對軟體開發都比較重要,但 它們測試和關注的核心內容是有區別和不同的。
軟體相容性測試的主要內容
(1)作業系統/平台相容性測試
市場上有很多不同的作業系統類型,最常見的有Windows、Unix、Macintosh、Linux等。應用軟體的終端使用者究竟使用哪一種作業系統, 取決於使用者系統的配置。這樣,就可能會發生相容性問題,同一個軟體可能在某些作業系統下能正常運行,但在另外的作業系統下可能會運行失敗。因此,理想的軟 件應該具有平台無關性。
當然,有些軟體只是針對某一系列的作業系統平台來開發的,不存在跨平台的需求。但同一作業系統也有多個版本,例如Windows系統也有不同的系列版本 號,如Windows 2000 /XP/Vista等,他們之間可能也有許多不同的組件屬性。因此,有些軟體可能需要在不同作業系統平台上重新編譯才可運行,有些軟體需要重新開發或改動 較大才能在不同平台運行。因此,在軟體發布之前,需要在各種作業系統下對應用軟體進行相容性測試。
(2)應用軟體之間相容性測試
主要考察兩項內容:一是軟體運行需要哪些應用軟體支援。二是判斷與其他常用軟體一起使用,是否會造成其他軟體運行錯誤或本身不能正確實現其功能。
(3)不同瀏覽器之間的相容性測試
現在好多應用軟體都應用B/S結構,它們的用戶端都使用瀏覽器。因此,瀏覽器是Web用戶端最核心的構件,但來自不同廠商的瀏覽器對Java、 JavaScript、 ActiveX、 plug-ins或HTML規格都有不同的支援。例如,ActiveX是Microsoft的產品,是為Internet Explorer而設計的,JavaScript是Netscape的產品,Java是Sun的產品等。另外,架構和階層風格在不同的瀏覽器中也有不 同的顯示,甚至根本不顯示。不同的瀏覽器對安全性和Java的設定也不一樣。所以,測試不同廠商、不同版本的瀏覽器對某些構件和設定的適應性,也是軟體兼 容性測試的重點之一。
(4)不同類型的資料庫相容性測試
現在很多軟體尤其是ERP、CRM等軟體都需要資料庫系統的支援,對此類軟體應考慮對不同資料庫平台的支援能力,如從BD2平台替換到MSSQL平台時, 軟體是否可直接掛接,或者提供相關的轉換工具。還有新舊資料轉換的是否存在問題,軟體是否提供新舊資料轉換的功能。例如,當軟體升級後可能會定義新的資料 格式或檔案格式,這就涉及到對原有格式的支援及更新,原有使用者記錄在新格式下是否依然可用等。另外,還需要測試轉換過程中資料的完整性與正確性。
(5)軟硬體配合的相容性測試
考察軟體對運行硬體環境有無特殊說明,有些軟體可能在不同的硬體環境中,出現不同的運行結果或是根本就不能執行。
軟體相容性測試規劃的幾個建議
有過軟體相容性測試經驗的人都瞭解,相容性測試或許無法做到完全的品質保證,但相容性測試是必不可少的步驟之一。因此,對軟體開發來說,忽視軟體相容性測 試,必將會導致使用者在使用時給相容性故障拖死的機率也越高。所以,如何在有限的成本和資源考慮下,針對此軟體產品規划出適當的相容性測試,是所有相容性測 試技術人員關注的重點。
(1)評估軟體應用環境,有針對性的制定測試計劃
投資和規劃一個有效相容性測試相信會讓不少軟體廠商傷透腦筋,要做多少裝置投資,要投入多少人力,要測試多少相容性測試完全會影響到軟體產品的最終成 本。軟體廠商想要專心和投資在研發上,又想要節省成本的做好相容性測試,只有評估軟體應用環境,有針對性的制定相容性測試計劃,才能兼顧成本和產品的相容 性品質品質。
(2)在多種平台/應用環境上測試
自行安裝多種平台和類比應用環境進行測試,但缺點是難以覆蓋所有平台。一個軟體產品的開發成功,不僅僅是編寫完為使用者提供服務功能的程式而已,更重要的 是能在使用者環境中可靠的運行。因此,軟體程式編寫工作的完成,其實只是完成了開發工作單位中的一半,對軟體進行類比使用者環境進行相容性測試其重要性不亞於對程 序本身的開發。
(3)考慮進行β測試
大型通用軟體在正式發布前,通常都需要執行Alpha和Beta測試,目的是從實際使用者的使用角度對軟體的功能和效能進行測試,以發現可能只有終端使用者才能發現的錯誤。
α測試(alpha測試)是在測試團隊內部進行,測試的方法也較多,黑盒、白盒、壓力、應力等等。β測試(beta測試)是指給指定使用者公開測試,例如可 以有選擇地請一些終端使用者實際使用,將發現的問題反饋回來再進行修改。在Beta測試中,發放多個拷貝給測試使用者並讓他們填寫測試報告,由使用者記下遇到的 所有問題,定期向開發人員報告,開發人員在綜合使用者的報告後做出修改。
β測試是許多軟體測試最後上市前大規模的綜合測試的常用方式之一。這種做法可以覆蓋多種軟硬體平台,雖然非常耗時和費錢,但因為Beta測試的可以測試軟體的可支援性和相容性。所以,Beta測試不失為一種有效相容性測試方法。