一直以來,“對多個瀏覽器進行測試” 像是一條難以解開的咒語,因為需要對大量瀏覽器進行測試。對所有瀏覽器進行測試(尤其是目前)幾乎是不可能的。但是這比您想象中的要容易很多。本文將介紹各種實現跨瀏覽器測試的技術,既包括比較全面的技術,也包括便捷但不嚴謹的技術。您必須要面對的一個問題就是,需要根據自己的資源進行選擇。 什么?除了 IE 還有這么多瀏覽器? 21 世紀早期的開發(fā)人員可能只需要對 Internet Explorer 進行測試,但是這些日子已經一去不復返了。如今,IE 占據了大約 80% 的瀏覽器訪問量。這個數字非常龐大,但并不具有絕對優(yōu)勢 — 當然,沒有公司會將 20% 的用戶群拱手與人。 您也不要妄想您的用戶使用的瀏覽器特性可以反映大部分 Internet 用戶的習慣。根據國家和興趣的不同,使用瀏覽器和操作系統(tǒng)的的習慣也不盡相同。很多站點都針對特定的用戶群,這些站點的用戶很可能使用的是非 Windows 操作系統(tǒng)和 Internet Explorer 以外的瀏覽器。例如,訪問 developerWorks 站點的訪客中,60% 的人使用 Internet Explorer,而 35% 的人使用 Firefox。特別是 Web 開發(fā)專區(qū),使用 Firefox 的人數多達 51%,而只有 41% 的訪客使用 Internet Explorer。 幸運的是,一些工具和技巧可以使跨瀏覽器測試變得稍微簡單一些 — 并且開銷也更低。在本文中,您將了解各種可用于測試的策略;根據您的需求和資源,您可以找到最適合自己的策略。我將首先介紹一些比較全面的測試技術,如果資源和時間的限制使您無法實現所需的測試,本文還將介紹一些替代方法。 瀏覽器的小花招 跨多個瀏覽器和操作系統(tǒng)進行測試,最顯而易見、最全面(當然成本也最高)的方法就是對多個瀏覽器和操作系統(tǒng)進行實際測試。從很多方面講,瀏覽器是測試過程中最簡單的部分,因為大多數主流瀏覽器都是免費的。盡管如此,請記住,您將進行測試的不僅僅是幾種不同的瀏覽器,還包括同一 瀏覽器的各種版本。作為開發(fā)人員,您通常都會在自己的計算機中使用最新最好的瀏覽器版本 — 這也是出現 “對多個瀏覽器進行測試” 這一咒語的原因之一 — 但是,快速查看一下站點的瀏覽器統(tǒng)計信息,您就會發(fā)現,并不是所有用戶都像您一樣。 目前,同時運行同一種瀏覽器的多個版本比較困難,因為大多數瀏覽器的安裝過程都覆蓋了以前的所有版本。還好,有一些解決方法。對于 Firefox,可以將每個瀏覽器的可執(zhí)行文件保存為不同的名字,然后確保首次啟動各個版本時啟用配置文件管理程序,這樣就不會共享這些配置文件。圖 1 展示了同時運行的兩個 Firefox 瀏覽器版本 — 最新的 2.0.0.10 發(fā)行版和比較陳舊的 0.7 版本。
對于 Internet Explorer,這個過程要稍微復雜一些。Windows 實際上 不希望您這樣做;為了應對它的 “抵制”,您需要對注冊表設置進行一些調整。一家小型軟件公司 TredoSoft 發(fā)布了一款可以安裝多個 IE 版本的免費工具,以及能夠正確調整注冊表鍵和 DDL 的指令,該公司因此而獲得了廣泛關注;請查看 參考資料 中的鏈接(其中還包含我即將介紹到的其他工具和擴展的鏈接,但是我以及 developerWorks 不會對這些鏈接進行擔保)。 當然,在設置并運行所有這些瀏覽器之前,需要知道從哪里獲得它們!比如,Microsoft? 不會在其網站上提供 Internet Explorer 5 的下載,并且在 Mozilla Foundation 頁面您也不一定能獲得 Firefox 1.0,這些都是老版本。幸運的是,積極的 Web 用戶們?yōu)榕f的可執(zhí)行文件創(chuàng)建了檔案文件。evolt.org 上由自愿者推動的 Web 社區(qū)提供了大量各種風格的舊版瀏覽器,包括 IE、Opera 等等,但是缺少最新的 Mozilla 發(fā)行版;這些可以在諸如 filehippo.com 及類似的文件聚合站點找到,您可以很輕松地找到這些站點。對于 Apple 的 Safari,開發(fā)者喜愛的 Multi-Safari 項目將早期的 Safari 版本進行了打包,因此可以方便地實現并行運行(參加 參考資料 中有關內容的鏈接)。 節(jié)省屏幕空間 處理多個瀏覽器時可能遇到的一個實際問題就是如何避免窗口混亂。雖然,很多時候無法避免,但是您至少可以通過兩種方便的工具來稍微整理一下。IE Tab 是一種 Firefox 插件,允許您在一個 Firefox 選項卡中運行一個 Internet Explorer 實例。這并不是模擬 — 它確實使用了 IE 呈現引擎,這意味著您看到的內容就是您在 Explorer 中實際獲得的內容,但是,這也意味著只能在 Windows 中工作。圖 2 展示了它的實際效果。
RightLynx 是一種針對 Internet Explorer 和 Firefox 的插件,當您右鍵單擊時將彈出一個窗口,顯示當前頁面在 Lynx 中的顯示狀態(tài),因此您不必始終打開活動的終端窗口;一個 Web 服務將在 Lynx 中加載頁面并將結果文本發(fā)送回您的計算機。這些工具都是免費的,并且安裝簡單,您可以在 參考資料 一節(jié)找到相關鏈接。
Lynx:古老而又嶄新的瀏覽器 當我提到 Lynx 時,您可能會大吃一驚。年輕的開發(fā)人員可能已經忘記了這個基于文本的瀏覽器,它最早出現于 90 年代早期,專門針對 UNIX? 命令行(但是也有針對 DOS、Windows 等的版本)。圖 3 展示了使用 Lynx 訪問 Web 開發(fā)專區(qū)的界面。
使用 Lynx 測試站點乍一看似乎毫無意義 — 畢竟,訪問您的站點的任何人都傾向于使用流行的圖形化瀏覽器。然而,Lynx 可以顯示站點的基本架構,因而能夠向最重要的站點訪客 Web 牽引程序和 spider 展示站點的近似外觀,它們能夠為搜索引擎執(zhí)行站點索引,從而提供站點流量。Lynx 工具能夠確保重要的搜索項不會隱藏在 Ajax 小部件之后。 虛擬化和模擬 當然,瀏覽器只是測試的一部分;您也許希望跨多個操作系統(tǒng)進行測試。與可以免費下載到開發(fā)計算機上的瀏覽器相比,操作系統(tǒng)的測試成本自然要高出許多。最全面的測試方法當然是對多個系統(tǒng)進行實際測試,包括 Windows 計算機、Mac、Linux? box 和其他需要進行測試的操作系統(tǒng)的物理版本。這很可能超出一年的 Web 開發(fā)預算,但是,幸運的是,可以使用一些方法將一臺計算機轉化為多個測試平臺。 最簡單的方法就是創(chuàng)建一個雙啟動設置,即將多個操作系統(tǒng)裝在同一臺計算機上,在啟動時可以選擇所加載的系統(tǒng)。一般來講,操作系統(tǒng)都被保存在不同的硬盤分區(qū)中,但是 LiveDistros 被保存在 CD 或 thumb 驅動中,以避免硬盤驅動格式發(fā)生沖突。雙啟動過去一直用于 Linux 和其他開源版本,但是基于 x86 的 Macs 的出現意味著很多計算機現在都能夠雙啟動 Windows 和 OS X。 雙啟動的缺點是在操作系統(tǒng)之間進行切換需要等待很長時間。但是虛擬化則不存在這個問題,實現虛擬化后,可以同時運行多個操作系統(tǒng)。過去只有功能強大的服務器才能實現虛擬化,現在,只要擁有一臺標準版本的桌面 PC,您就可以使用這個工具。如果您打算使用多個操作系統(tǒng)為用戶提供服務,那么需要在測試計算機上實現某種形式的虛擬化。在圖 4 中,我在 Power Mac 中使用了 Virtual PC,同時在兩個操作系統(tǒng)中使用 4 種不同瀏覽器訪問 developerWorks Web 架構專區(qū)。
通過使用多種工具(包括 VMWare 和 Virtual PC),您可以輕松地在所有普通 PC 上運行 Windows 和其他與 x86 兼容的操作系統(tǒng)。其中一個操作系統(tǒng)充當主機,其他系統(tǒng)則在虛擬化應用程序中運行。這樣,不需要重新啟動,您可以在屏幕上相鄰的窗口中,比如 Windows Vista、Windows XP 和最新的 Ubuntu 版本,測試您的應用程序。您仍然需要購買所有不同的操作系統(tǒng),但至少只需要使用相同的硬件。
您可能注意到,我在上面的樣例操作系統(tǒng)中沒有提到 Mac OS X。很不幸,OS X 只能夠在 Mac 硬件上運行,但是可以對 Mac 使用一些虛擬化方法。因此,如果希望使用在單個機器上應用最廣泛的系統(tǒng),可以考慮使用 Intel? Mac 以及針對它的兩種主要的虛擬化產品,VMWare Fusion 或 Parallels Desktop(參見 參考資料 中的鏈接)。通過使用這種設置,您可以測試 OS X、Windows、Linux 以及其他運行在 x86 硬件之上的任何操作系統(tǒng)。當然,這種方法的缺點就是無論硬件還是軟件都不是免費的,甚至還很貴。 移動設備測試 如果您的 Web 站點或應用程序針對的是移動用戶 — 或者您期希能夠為大量移動用戶提供服務 — 無疑,您需要對實際的移動設備進行測試。遺憾的是,與 PC 市場相比,移動設備市場非常零散,因而很難購買和維護非常穩(wěn)定的物理測試設備,并且成本也較高。還好,您也可以通過桌面計算機來模擬移動平臺。 很多特定的移動平臺提供了免費的 SDK,包括可運行在 PC 桌面上的設備模擬程序。例如,您可以下載針對 Google Android 平臺的 SDK(參見 參考資料 中的鏈接)。訪問瀏覽器有些難度 — 您需要在 Eclipse 開發(fā)環(huán)境中安裝 Android 插件,然后啟動其中一個樣例應用程序 — 完成這些操作后,您將可以訪問基于 WebKit 的瀏覽器,WebKit 開源框架是支撐 Safari 和 Nokia S60 智能手機瀏覽器的基礎。圖 5 顯示了運行中的瀏覽器模擬程序。
移動瀏覽器市場也非常零散,但是很多高端智能手機現在可以使用經過修改的桌面瀏覽器 — iPhone 使用 Safari,而 Opera Mobile 可以用于眾多智能手機,因此您可以直接在桌面上完成手機瀏覽器測試,但是,桌面瀏覽器和手機瀏覽器之間的相關性并不理想(iPhoney 是一種使用 Safari 標準桌面版本的 OS X 應用程序,但是至少可以向您呈現站點在受限的 iPhone 屏幕中的顯示效果;參見 參考資料 中的免費下載鏈接)。 當然,很多手機仍然需要通過受限的 WAP 訪問 Web。如果需要測試一個 WAP 站點,可以從網上獲得大量免費的 WAP 模擬程序,在瀏覽器窗口中運行即可。 總之,要通過內部測試獲得廣泛的覆蓋率,移動測試是最困難的部分。但是您還有其他的選擇,我將在下一節(jié)介紹。 外包測試 看到這里,您可能感到有些絕望。也許測試的最后期限就在明天。也許您還不太信服我剛才介紹的這些技術?;蛘吣跁r間或資金方面的預算非常緊張?;蛘撸琁T 部門不希望您在計算機中安裝舊版本的瀏覽器或修改注冊表鍵。這時候,您該如何做?除了最新版的 Firefox 和 IE 外,您是否無法對其他瀏覽器進行測試? 您仍然還有一種選擇:您可以通過托管服務執(zhí)行測試。您需要提供一個 URL,這些服務將顯示該 URL 在各種平臺上的顯示效果。您現在無法從自己的測試計算機中實際訪問某個站點,但是,只需要很低的成本就可以訪問大量平臺 — 有些時候甚至不需要花一分錢。 Browsershots.org 展示了可以從這種服務的免費版本中獲得的好處。圖 6 展示了可以使用的各種選項(移動平臺和 Lynx 不包括在內)。對于選中的每個框,您獲得一個 PNG 文件,它是指定的 URL 在該瀏覽器/操作系統(tǒng)組合的顯示效果的屏幕截圖。這個過程會耗時半個小時或更長時間,因此,需要在后臺運行該過程,以便可以執(zhí)行其他任務,但是這個重要的測試部分是免費的。 圖 6. 對 Browsershots.org 的定制結果 如何應對長期的全面測試 如果預算充足,那么還可以做得更好一些。例如,如果支付一個月的費用,Browsercam.com 可以使您訪問更多的平臺和瀏覽器 — 包括某些移動平臺 — 以及一些動態(tài)頁面,允許您測試 Ajax 應用程序和其他基于 JavaScript 的頁面。諸如 Litmusapp 這樣的服務可以集成到您的測試和開發(fā)流程中,提供版本化支持和方法,向外部客戶機發(fā)布測試結果。 這些服務同樣適用于移動領域,新的移動設備總是層出不窮,遠遠超過大多數人的想像。DotMobi Virtual Developer Lab 就是一種不錯的托管服務,主要針對移動測試;它可以訪問上百種不同移動設備,并且能夠通過多種方法進行操作。這些服務提供的界面與真實設備并不相同,但是大多數情況下都可以滿足您的要求;并且由于它專門針對移動設備,因此可以作為內部測試或桌面服務的補充。 結束語 理想情況下,應該對所有 Web 應用程序進行測試,以確保能夠在訪問它的所有瀏覽器中正確工作。但是,鑒于瀏覽器市場的紛亂復雜以及更加變幻莫測的移動平臺市場的日益崛起,使得 Web 應用程序的測試更加困難。盡管如此,您仍然可以通過一些方法來簡化測試。您可以使用大量工具進行跨平臺 Web 測試。無論是對工作站資源使用一些虛擬化的操作系統(tǒng),或僅僅通過托管服務運行您的應用程序,您都能夠查看應用程序在不同用戶環(huán)境中的性能 — 并且您也應該對用戶負責,確保應用程序能夠在盡量多的環(huán)境中正常工作。 |
|