| 什么軟件生存周期 一個(gè)軟件從開(kāi)始計劃起,到廢棄不用止,稱(chēng)為軟件生存周期。一般來(lái)說(shuō),軟件生存周包括計劃、開(kāi)發(fā)、運行三個(gè)時(shí)期,每一時(shí)期又可分為若干更小的階段。計劃時(shí)期 的主要任務(wù)是分析用戶(hù)要求,分析新系統的主要目標以及開(kāi)發(fā)該系統的可行性。開(kāi)發(fā)時(shí)期要完成設計和實(shí)現兩大任務(wù)具體。具體分為需求分析、概要設計、詳細設 計、編碼、測試。其中編碼和測試是軟件開(kāi)發(fā)期的最后兩個(gè)階段。運行時(shí)期是軟件生存周期的最后一個(gè)時(shí)期,軟件人員在這一時(shí)期的工作,主要是做好軟件維護。
統計表明,開(kāi)發(fā)較大規模的軟件,有40%以上的精力是耗費在測試上的,即使富有經(jīng)驗的程序員,也難免在編碼中發(fā)生錯誤,何況,有寫(xiě)錯誤在設計甚至分析階段 早已埋下禍根,無(wú)論是早期潛伏下來(lái)的錯誤或編碼中新引入的錯誤,若不及時(shí)排除,輕者降低軟件的可靠性,重者導致整個(gè)系統的失敗。為防患于未然,強調軟件測 試的重要性是必要的。 好的測試工程師 1、溝通能力
一名理想的測試者必須能夠同測試涉及到的所有人進(jìn)行溝通,具有與技術(shù)(開(kāi)發(fā)者) 和非技術(shù)人員(客戶(hù),管理人員)的交流能力。既要可以和用戶(hù)談得來(lái),又能同開(kāi)發(fā)人員說(shuō)得上話(huà),不幸的是這兩類(lèi)人沒(méi)有共同語(yǔ)言。和用戶(hù)談話(huà)的重點(diǎn)必須放在系 統可以正確地處理什么和不可以處理什么上。而和開(kāi)發(fā)者談相同的信息時(shí),就必須將這些活重新組織以另一種方式表達出來(lái),測試小組的成員必須能夠同等地同用戶(hù) 和開(kāi)發(fā)者溝通。
2、技術(shù)能力
就總體言,開(kāi)發(fā)人員對那些不懂技術(shù)的人持 一種輕視的態(tài)度。一旦測試小組的某個(gè)成員作出了一個(gè)錯誤的斷定,那么他們的可信度就會(huì )立刻被傳揚了出去。一個(gè)測試者必須既明白被測軟件系統的概念又要會(huì )使 用工程中的那些工具。要做到這一點(diǎn)需要有幾年以上的編程經(jīng)驗,前期的開(kāi)發(fā)經(jīng)驗可以幫助對軟件開(kāi)發(fā)過(guò)程有較深入的理解,從開(kāi)發(fā)人員的角度正確的評價(jià)測試者, 簡(jiǎn)化自動(dòng)測試工具編程的學(xué)習曲線(xiàn)。
3、自信心
開(kāi)發(fā)者指責測試者出了錯是常有的事,測試者必須對自己的觀(guān)點(diǎn)有足夠的自信心。如果容許別人對自己指東指西,就不能完成什么更多的事情了。
4、外交能力
當你告訴某人他出了錯時(shí),就必須使用一些外交方法。機智老練和外交手法有助于維護與開(kāi)發(fā)人員的協(xié)作關(guān)系,測試者在告訴開(kāi)發(fā)者他的軟件有錯誤時(shí),也同樣需 要一定的外交手腕。如果采取的方法過(guò)于強硬,對測試者來(lái)說(shuō),在以后和開(kāi)發(fā)部門(mén)的合作方面就相當于"贏(yíng)了戰爭卻輸了戰役"。
5、幽默感
在遇到狡辯的情況下,一個(gè)幽默的批評將是很有幫助的。
6、很強的記憶力
一個(gè)理想的測試者應該有能力將以前曾經(jīng)遇到過(guò)的類(lèi)似的錯誤從記憶深處挖掘出來(lái),這一能力在測試過(guò)程中的價(jià)值是無(wú)法衡量的。因為許多新出現的問(wèn)題和我們已經(jīng)發(fā)現的問(wèn)題相差無(wú)幾。
7、懷疑精神
可以預料,開(kāi)發(fā)者會(huì )盡他們最大的努力將所有的錯誤解釋過(guò)去。測式者必須聽(tīng)每個(gè)人的說(shuō)明,但他必須保持懷疑直到他自己看過(guò)以后。
8、自我督促
干測試工作很容易使你變得懶散。只有那些具有自我督促能力的人才能夠使自己每天正常地工作。
9、洞察力
一個(gè)好的測試工程師具有"測試是為了破壞"的觀(guān)點(diǎn),捕獲用戶(hù)觀(guān)點(diǎn)的能力,強烈的質(zhì)量追求,對細節的關(guān)注能力。應用的高風(fēng)險區的判斷能力以便將有限的測試針對重點(diǎn)環(huán)節。 軟件測試工程師成為IT就業(yè)新熱點(diǎn) 日前,招聘網(wǎng)站——中華英才網(wǎng)發(fā)布了最新一期的IT職場(chǎng)人氣排行榜。根據統計,IT人才仍是企業(yè)需求量最大的人群,其中軟件測試工程師、高級程序員、產(chǎn)品 項目經(jīng)理高級職位進(jìn)入“三甲”,成為IT就業(yè)市場(chǎng)最新風(fēng)向標。作為軟件開(kāi)發(fā)流程中的重要一環(huán),軟件測試崗位漸漸“浮出水面”,并憑借其龐大的人才需求和廣 闊的職場(chǎng)發(fā)展前景日漸成為IT職場(chǎng)就業(yè)的大熱門(mén)。 近年來(lái),軟件產(chǎn)品的質(zhì)量控制與質(zhì)量管理越來(lái)越受到重視,并逐漸成為企業(yè)生存與發(fā)展的核心。在許多IT企業(yè)中,軟 件測試并非只擔當“挑錯”的角色,其重要性不亞于軟件的開(kāi)發(fā)環(huán)節。越來(lái)越多的IT企業(yè)已逐漸意識到測試環(huán)節在軟件產(chǎn)品研發(fā)中的重要性。此類(lèi)軟件質(zhì)量控制工 作均需要擁有嫻熟技術(shù)的專(zhuān)業(yè)軟件測試人才來(lái)協(xié)作完成,軟件測試工程師作為一個(gè)重頭角色正成為IT企業(yè)招聘的熱點(diǎn)。 隨著(zhù)測試重要性的日趨凸顯,我國軟件測試人才正處于一個(gè)“雙高”地位,即地位高、待遇高,職場(chǎng)前景非常廣闊,因而,近兩年來(lái),軟件測試工程師也成為了IT就業(yè)最新的亮點(diǎn)。 由于我國企業(yè)對于軟件測試自動(dòng)化技術(shù)在整個(gè)軟件行業(yè)中的重要作用認識較晚,因此,這方面的專(zhuān)業(yè)技術(shù)人員在國內還是鳳 毛麟角,人才供需之間存在著(zhù)巨大的缺口。有關(guān)數據顯示,我國目前軟件從業(yè)人才缺口高達40萬(wàn)人。即使按照軟件開(kāi)發(fā)工程師與測試工程師11的崗位比例計 算,我國對于軟件測試工程師的需求便有數十萬(wàn)之眾。業(yè)內專(zhuān)家預計,在未來(lái)5到10年中,我國社會(huì )對軟件測試人才的需求數字還將繼續增大。 筆者了解到,日前在國展舉辦的一次招聘會(huì )上,多家企業(yè)紛紛打出各類(lèi)高薪招聘軟件測試人員的海報,出人意料的是收到的簡(jiǎn)歷尚不足招聘崗位數的50%,而合格的竟不足30%。有行業(yè)專(zhuān)家表示,軟件測試人才“供遠小于求”的現實(shí)問(wèn)題正影響著(zhù)我國軟件業(yè)的健康發(fā)展。 一方面,企業(yè)對軟件測試人才有大量需求,但苦于招不到合適的人;而另一方面,很多應聘者卻因為缺乏相關(guān)技能而被用人 單位拒之門(mén)外,軟件測試人才職場(chǎng)正面臨著(zhù)“有人沒(méi)活干,有活沒(méi)人干”的尷尬局面。對此,業(yè)內專(zhuān)家表示,軟件測試行業(yè)已顯現出實(shí)際需求與人力資源之間的尖銳 矛盾。設立軟件測試人才的職業(yè)培訓體系應是解決IT職場(chǎng)“結構性失業(yè)”的一條捷徑。 專(zhuān)家表示,軟件測試是一項需具備較強專(zhuān)業(yè)技術(shù)的工作。在具體工作過(guò)程中,測試工程師要利用測試工具按照測試方案和流 程對產(chǎn)品進(jìn)行性能測試,甚至根據需要編寫(xiě)不同的測試工具、設計和維護測試系統,對測試方案可能出現的問(wèn)題進(jìn)行分析和評估,以確保軟件產(chǎn)品的質(zhì)量。一名合格 的軟件測試工程師必須要經(jīng)過(guò)嚴格的系統化職業(yè)教育培訓,作為產(chǎn)品正式出廠(chǎng)前的把關(guān)人,沒(méi)有專(zhuān)業(yè)的技術(shù)水準、沒(méi)有高度的工作責任心和自信心是根本無(wú)法勝任 的。 目前,國內少數具有遠見(jiàn)的IT培訓機構已經(jīng)充分認識到了測試工程師的供需矛盾,開(kāi)始針對軟件測試行業(yè)人才需求啟動(dòng)系 統化專(zhuān)項培訓,為IT行業(yè)求職者提供了一個(gè)進(jìn)入軟件測試行業(yè)的途徑。據了解,這些課程科學(xué)、系統以提升就業(yè)競爭力為目標,根據軟件測試崗位工作的實(shí)際要求 設計而成,以實(shí)際應用場(chǎng)景為核心,配以實(shí)際測試項目和測試工作流程,注重學(xué)習的系統性、教學(xué)的漸進(jìn)性及學(xué)員的參與性,使學(xué)員能夠用最少的時(shí)間掌握測試工作 中最實(shí)用的必備職業(yè)技能,具備測試崗位需求的工作經(jīng)驗和綜合素質(zhì),從而具備較強的競爭力。 有關(guān)專(zhuān)家表示,隨著(zhù)各類(lèi)軟件測試培訓課程體系的推出,我國軟件企業(yè)人才結構將日趨合理,軟件測試業(yè)的人才供需矛盾也將得到逐步緩解,這無(wú)疑有利于我國軟件行業(yè)整體品質(zhì)的進(jìn)一步提升。 軟件本地化測試 本地化的主要工作就是翻譯產(chǎn)品的用戶(hù)界面( UI ),有時(shí)也更改某些初始設置以使產(chǎn)品適合于另一個(gè)地區。本地化測試檢查針對特定目標區域的產(chǎn)品本地化質(zhì)量。此測試基于國際化測試的結果,后者驗證對特定區 域性或區域設置的功能性支持。本地化測試只能在產(chǎn)品的本地化版本上進(jìn)行。 本地化測試過(guò)程中的測試工作集中在: 另外,本地化測試還應包括: 用戶(hù)界面和語(yǔ)言的本地化測試應包括的項有: 當交付本地化產(chǎn)品時(shí),確保包含本地化文檔(手冊、聯(lián)機幫助、上下文幫助等)。要檢查的項包括: 軟件測試理論 1.什么是軟件測試 無(wú)論怎樣強調軟件測試的重要性和它對軟件可靠性的影響都不過(guò)分。在開(kāi)發(fā)大型軟件系統的漫長(cháng)過(guò)程中,面對著(zhù)極其錯綜復雜的問(wèn)題,人的主觀(guān)認識不可能完全符合 客觀(guān)現實(shí),與工程密切相關(guān)的各類(lèi)人員之間的通信和配合也不可能完美無(wú)缺,因此,在軟件生命周期的每個(gè)階段都不可避免地會(huì )產(chǎn)生差錯。我們力求在每個(gè)階段結束 之前通過(guò)嚴格的技術(shù)審查,盡可能早地發(fā)現并糾正差錯;但是,經(jīng)驗表明審查并不能發(fā)現所有差錯,此外在編碼過(guò)程中還不可避免地會(huì )引入新的錯誤。如果在軟件投 入生產(chǎn)性運行之前,沒(méi)有發(fā)現并糾正軟件中的大部分差錯,則這些差錯遲早會(huì )在生產(chǎn)過(guò)程中暴露出來(lái),那時(shí)不僅改正這些錯誤的代價(jià)更高,而且往往會(huì )造成很惡劣的 后果。測試的目的就是在軟件投入生產(chǎn)性運行之前,盡可能多地發(fā)現軟件中的錯誤。目前軟件測試仍然是保證軟件質(zhì)量的關(guān)鍵步驟,它是對軟件規格說(shuō)明、設計和編 碼的最后復審。軟件測試在軟件生命周期中橫跨兩個(gè)階段。通常在編寫(xiě)出每個(gè)模塊之后就對它做必要的測試(稱(chēng)為單元測試),模塊的編寫(xiě)者和測試者是同一個(gè)人, 編碼和單元測試屬于軟件生命周期的同一個(gè)階段。在這個(gè)階段結束之后,對軟件系統還應該進(jìn)行各種綜合測試,這是軟件生命周期中的另一個(gè)獨立的階段,通常由專(zhuān) 門(mén)的測試人員承擔這項工作。 大量統計資料表明,軟件測試的工作量往往占軟件開(kāi)發(fā)總工作量的40%以上,在極端情況,測試那種關(guān)系人的生命安全的軟件所花費的成本,可能相當 于軟件工程其他開(kāi)發(fā)步驟總成本的三倍到五倍。因此,必須高度重視軟件測試工作,絕不要以為寫(xiě)出程序之后軟件開(kāi)發(fā)工作就接近完成了,實(shí)際上,大約還有同樣多 的開(kāi)發(fā)工作量需要完成。僅就測試而言,它的目標是發(fā)現軟件中的錯誤,但是,發(fā)現錯誤并不是我們的最終日的。軟件工程的根本目標是開(kāi)發(fā)出高質(zhì)量的完全符合用 戶(hù)需要的軟件。 2.軟件測試的目標 下面這些規則也可以看作是測試的目標或定義: (1)測試是為了發(fā)現程序中的錯誤而執行程序的過(guò)程; (2)好的測試方案是極可能發(fā)現迄今為止尚未發(fā)現的錯誤的測試方案; (3)成功的測試是發(fā)現了至今為止尚未發(fā)現的錯誤的測試。 從上述規則可以看出,測試的正確定義是“為了發(fā)現程序中的錯誤而執行程序的過(guò)程”。這和某些人通常想象的“測試是為了表明程序是正確的”,“成 功的測試是沒(méi)有發(fā)現錯誤的測試”等等是完全相反的。正確認識測試的目標是十分重要的,測試目標決定了測試方案的設計。如果為了表明程序是正確的而進(jìn)行測 試,就會(huì )設計一些不易暴露錯誤的測試方案;相反,如果測試是為了發(fā)現程序中的錯誤,就會(huì )力求設計出最能暴露錯誤的測試方案。 由于測試的目標是 暴露程序中的錯誤,從心理學(xué)角度看,由程序的編寫(xiě)者自己進(jìn)行測試是不恰當的。因此,在綜合測試階段通常由其他人員組成測試小組來(lái)完成測試工作。此外,應該 認識到測試決不能證明程序是正確的。即使經(jīng)過(guò)了最嚴格的測試之后,仍然可能還有沒(méi)被發(fā)現的錯誤潛藏在程序中。測試只能查找出程序中的錯誤,不能證明程序中 沒(méi)有錯誤。 軟件測試術(shù)語(yǔ)表 acceptance testing: Formal testing conducted to enable a user, customer, or other authorized entity to determine whether to accept a system or component. 接收測試:用來(lái)使一個(gè)用戶(hù)、客戶(hù)或者其它的權威機構決定是否接收一個(gè)系統或者組件的測試。 actual outcome: The behaviour actually produced when the object is tested under specified conditions.實(shí)際輸出:被測對象在特定條件下實(shí)際產(chǎn)生的行為。 ad hoc testing: Testing carried out using no recognised test case design technique. 探索式測試:不使用可識別的測試用例設計技術(shù)所進(jìn)行的測試。 alpha testing: Simulated or actual operational testing at an in-house site not otherwise involved with the software developers. α測試:在軟件開(kāi)發(fā)人員缺席的情況下內部做的模擬的或者實(shí)際的操作性測試。 arc testing: A test case design technique for a component in which test cases are designed to execute branch outcomes. 分支測試:一種針對組件的測試用例設計技術(shù),通過(guò)分支覆蓋來(lái)進(jìn)行測試用例設計。 Backus-Naur form: A meta language used to formally describe the syntax of a language. Backus-Naur 形式:一種用來(lái)從形式上描述一種語(yǔ)言的語(yǔ)法的元語(yǔ)言。 basic block: A sequence of one or more consecutive, executable statements containing no branches. 基本塊:一個(gè)由不包含任何分支的一個(gè)或者多個(gè)連續的、可執行的指令組成的序列。 basis test set: A set of test cases derived from the code logic which ensure that \% branch coverage is achieved. 基本測試集:基于代碼的邏輯結構且保證一定的分支覆蓋率的測試用例的集合。 bebugging: The process of intentionally adding known faults to those already in a computer program for the purpose of monitoring the rate of detection and removal, and estimating the number of faults remaining in the program. 錯誤撒播:通過(guò)在計算機程序中人為的引入已知的錯誤來(lái)監測發(fā)現和消除錯誤的比率、估計程序中剩余的錯誤數的方法。 behavior: The combination of input values and preconditions and the required response for a function of a system. The full specification of a function would normally comprise one or more behaviors. 行為:系統中一個(gè)功能的輸入值、前提條件和必要的響應的集合。一個(gè)功能的完整說(shuō)明需要包含一個(gè)或多個(gè)行為。 beta testing: Operational testing at a site not otherwise involved with the software developers. β測試:在軟件開(kāi)發(fā)人員缺席的情況下做的操作性測試。 big-bang testing: Integration testing where no incremental testing takes place prior to all the system‘s components being combined to form the system. 非漸增式測試:在單獨測試所有構成系統的組件之前不進(jìn)行任何額外測試的集成測試。 black box testing: Test case selection that is based on an analysis of the specification of the component without reference to its internal workings. 黑盒測試:不涉及組件的內部工作情況而只根據組件規格說(shuō)明來(lái)選擇測試用例的測試方法。 bottom-up testing: An approach to integration testing where the lowest level components are tested first, then used to facilitate the testing of higher level components. The process is repeated until the component at the top of the hierarchy is tested. 自底向上的測試:集成測試時(shí)先測試最低層的組件,然后用最低層的組件來(lái)幫助測試更高層組件的一種方法。這個(gè)過(guò)程一直重復進(jìn)行直到最高層的組件被測試到。 boundary value: An input value or output value which is on the boundary between equivalence classes, or an incremental distance either side of the boundary. 邊界值:位于兩個(gè)等價(jià)類(lèi)之間的輸入或輸出值,或者邊界附近的值。 boundary value analysis: A test case design technique for a component in which test cases are designed which include representatives of boundary values. 邊界值分析:為被測組件設計包含典型邊界值的測試用例的一種測試用例設計方法。 boundary value coverage: The percentage of boundary values of the component‘s equivalence classes which have been exercised by a test case suite. 邊界值覆蓋:被一組測試用例覆蓋到的被測組件等價(jià)類(lèi)的邊界值占所有邊界值的百分比。 全球化測試 全球化測試的目的是檢測應用程序設計中可能阻礙全球化的潛在問(wèn)題。它確保代碼可以處理所有國際支持而不會(huì )破壞功能,導致數據丟失或顯示問(wèn)題。全球化測試使用每種可能的國際輸入類(lèi)型,針對任何區域性或區域設置檢查產(chǎn)品的功能是否正常。 正常的產(chǎn)品功能假定該組件性能穩定,能按照設計規范運行(不考慮國際環(huán)境設置或區域性/區域設置),并且數據的表示方式正確。 下列內容必須是全球化測試計劃的一部分: 決定每個(gè)組件的優(yōu)先級 若要使全球化測試更有效,請為所有測試的組件分配測試優(yōu)先級。應具有高優(yōu)先級的組件為: -
支持 ANSI(美國國家標準學(xué)會(huì ))格式的文本數據 -
大量處理字符串的組件(例如,具有許多編輯控件 (Edit Control) 的組件) -
使用文件進(jìn)行數據存儲或數據交換的組件(例如,Windows 圖元文件、安全配置工具和基于 Web 的工具) -
過(guò)去存在許多全球化問(wèn)題的組件 選擇測試平臺 那么,應為國際測試平臺使用哪一種操作系統 (OS) 呢?第一個(gè)選擇應是安裝了語(yǔ)言組的 Windows 2000 的本地版本。例如,如果使用 Windows 2000 的美國版本,請安裝東亞語(yǔ)言組。這種組合對選擇的語(yǔ)言提供了完整的國際支持,而沒(méi)有對測試者的語(yǔ)言技能提出要求。 即使是面向更廣泛的操作系統,Windows 2000 也應是主要的測試平臺。早期的操作系統在本地設置和本機支持方面,沒(méi)有為最廣泛的語(yǔ)言和區域性或區域設置提供同樣的靈活性。 還可以使用不同于 Windows 2000 的本地版本的其他平臺: -
MUI(多語(yǔ)言用戶(hù)界面)Windows 2000 — 當代碼實(shí)現多語(yǔ)言 UI 而且必須調整到 OS 的 UI 設置時(shí)特別有用。這種方法是安裝 OS 的多個(gè)本地化版本的更容易實(shí)現的替代方法。為了進(jìn)一步增強多語(yǔ)言支持,Microsoft 提供了一個(gè)單獨的 Windows 2000 多語(yǔ)言版,它提供 Windows 用戶(hù)界面的多達 24 種本地化語(yǔ)言版本。有關(guān)更多信息,請參見(jiàn)多語(yǔ)言用戶(hù)界面 (MUI)。 -
目標 OS 的本地化版本 — 德語(yǔ)或日語(yǔ)是好的選擇。記住,如果不熟悉操作系統的 UI 語(yǔ)言,使用它們可能比較困難。此方法并不比前面的解決方案有明顯的優(yōu)勢。 通過(guò)測試發(fā)現的大多數全球化問(wèn)題都發(fā)生在這兩種情況下:即東亞語(yǔ)言支持處于活動(dòng)狀態(tài)時(shí),或者 OEM 代碼頁(yè)不同于給定區域性或區域設置的 ANSI 代碼頁(yè)時(shí)。例如,可以在 Windows 2000 的美國版本中選擇下列區域性/區域設置來(lái)測試潛在的全球化問(wèn)題: 如果安裝所有語(yǔ)言組,輪換使用區域性或區域設置,并按如下所述運行“全球化”測試,則可以獲得最全面的覆蓋范圍。 創(chuàng )建測試環(huán)境 為執行全球化測試,必須安裝多個(gè)語(yǔ)言組并確保區域性或區域設置不是您的本地區域性或區域設置。如上所述,在日語(yǔ)環(huán)境、德語(yǔ)環(huán)境以及兩者的組合環(huán)境中執行測試案例可以覆蓋大多數全球化問(wèn)題。 [NextPae] 基本上,使用日語(yǔ)和德語(yǔ)環(huán)境創(chuàng )建世界通用的測試環(huán)境的步驟為: -
在 Windows 2000 本地版本上,如果沒(méi)有安裝日語(yǔ)(或任何其他東亞地區語(yǔ)言)和德語(yǔ)支持(默認情況下,Windows 2000 的美國版本安裝德語(yǔ)支持),請安裝它們。 -
將測試機器上的區域性或區域設置設置為與本地區域性或區域設置不同的區域性或區域設置(日語(yǔ)或德語(yǔ))。 -
用 Windows 2000 系統的本地版本的混合環(huán)境建立一個(gè)分布式網(wǎng)絡(luò ),將某些系統設置為日語(yǔ)區域性或區域設置,將其他系統設置為德語(yǔ)區域性或區域設置。 將日語(yǔ)作為系統默認區域性或區域設置進(jìn)行測試,可驗證 ANSI(非 Unicode)組件中的雙字節字符集 (DBCS) 處理。將德語(yǔ)作為系統默認區域性或區域設置進(jìn)行測試,可確保再需要進(jìn)行文本轉換時(shí)能夠正確處理 ANSI 和 OEM 代碼頁(yè)。建立分布式混合網(wǎng)絡(luò )環(huán)境可以驗證數據是否可以在不同的區域性或區域設置之間成功傳遞。 執行測試 在為全球化測試設置好環(huán)境后,當運行常規測試案例時(shí),必須特別注意潛在的全球化問(wèn)題: -
將重點(diǎn)更多地放在直接或間接處理字符串輸入/輸出的測試案例上。 -
測試數據必須包含來(lái)自東亞語(yǔ)言、德語(yǔ)、復雜腳本字符和英語(yǔ)(可選)的混合字符;其中復雜腳本字符指阿拉伯 語(yǔ)、希伯來(lái)語(yǔ)、泰語(yǔ)。某些情況下有限制,比如接受只匹配區域性或區域設置的字符時(shí)。如果不熟悉準備測試數據所用的語(yǔ)言,則手動(dòng)輸入所有這些測試數據可能很 困難。一個(gè)簡(jiǎn)單的 Unicode 文本生成器在此步驟中可能非常有用。 識別問(wèn)題 最嚴重的全球化問(wèn)題是丟失功能,包括立即丟失功能(區域性/區域設置更改時(shí))和以后訪(fǎng)問(wèn)輸入數據(非美國字符輸入)時(shí)丟失功能。 某些功能問(wèn)題和顯示問(wèn)題一樣是可以檢測到的: -
出現問(wèn)號 (?) 而不是顯示文本表示問(wèn)題出在 Unicode 到 ANSI 的轉換中。 -
如果出現隨機高位 ANSI 字符(如 ?、?、‰、? 和 ?)而不是可讀的文本,則表示問(wèn)題出在使用錯誤代碼頁(yè)的 ANSI 代碼中。 -
如果出現方框、豎條或鼻音化符號(默認的標志符號)[□、|、~],則表示所選字體無(wú)法顯示某些字符。 在要求變形、布局或腳本知識的顯示或打印結果中找出問(wèn)題可能很困難。這種測試是語(yǔ)言特定的,在沒(méi)有語(yǔ)言專(zhuān)門(mén)知識的情況下通常無(wú)法執行。另一方面,測試可能僅限于代碼檢查。如果使用標準文本處理機制形成并顯示輸出文本,則可以認為這方面是安全的。 潛在問(wèn)題的另一個(gè)方面是未能遵循由當前區域性或區域設置定義的本地約定的代碼。確保應用程序根據計算機的當前區域設置顯示區分區域性或區域設置的數據(例如,數字、日期、時(shí)間、貨幣和日歷)。 “控制面板”中的“區域選項”并未包括所有區域性或區域設置特定的功能。例如,在那里看不到當前的排序順序。因此,在開(kāi)始測試前制定一個(gè)包括與區域性或區域設置有關(guān)的所有功能方面的測試計劃很重要。
一本適合測試初學(xué)者閱讀的中文譯著(zhù) 由于看好軟件測試的行業(yè)發(fā)展前景,越來(lái)越多的人士加入到軟件測試的大軍中來(lái)。但是由于很多人都是剛剛畢業(yè)或者從其 它非測試公司或崗位轉來(lái)的,他們對軟件測試的要求和知識技能了解和掌握的很有限,而各公司對測試工程師的招聘大都要求熟悉軟件測試的理論和實(shí)踐經(jīng)驗,這就 造成了初涉測試行業(yè)的新人在求職過(guò)程和實(shí)際測試工作中暴露測試專(zhuān)業(yè)知識不足的問(wèn)題。因此,他們迫切需要在較短的時(shí)間內學(xué)習和掌握軟件測試的基本知識。
無(wú)疑,閱讀關(guān)于測試的書(shū)籍是較快的學(xué)習方法。但是,現在出版的很多關(guān)于測試的書(shū)籍,并不適合測試入門(mén)者的實(shí)際需求,這些書(shū)籍要么是關(guān)于測試理論的長(cháng)篇大 論,要么是針對某一個(gè)很狹窄的領(lǐng)域進(jìn)行討論。另外,國內目前市場(chǎng)上出版的關(guān)于測試的書(shū)籍質(zhì)量良莠不齊,甚至很多翻譯的書(shū)籍內容錯誤連篇,還不如直接閱讀英 文原著(zhù)更好。實(shí)際上,測試初學(xué)者最需要的是對測試進(jìn)行深入淺出的介紹和結合測試實(shí)踐的測試入門(mén)書(shū)籍。
筆者經(jīng)常到書(shū)店瀏覽國內關(guān)于 軟件測試的新書(shū),也先后買(mǎi)過(guò)和閱讀了不少測試書(shū)籍,對于書(shū)籍的優(yōu)劣感觸頗深。我有時(shí)為發(fā)現一本好書(shū)而“愛(ài)不釋手”,陶醉于閱讀的興趣中,但有時(shí)也為不小心 買(mǎi)到了粗制濫造的書(shū)籍感到煩惱,閱讀這些內容不好的書(shū)籍簡(jiǎn)直是一種“煎熬”,純粹浪費時(shí)間,甚至造成誤導。從目前看來(lái),國內這兩年的確出版了不少?lài)鴥茸髡?創(chuàng )作的測試專(zhuān)著(zhù),但是更多的是翻譯國外的英文書(shū)籍。在以往測試工作中,經(jīng)常有一些朋友(特別是是剛剛參加測試工作的新人)詢(xún)問(wèn)和要求我推薦一些適合他們閱 讀的測試入門(mén)書(shū)籍。
經(jīng)過(guò)比較,我推薦書(shū)名為《軟件測試》的譯著(zhù)。本書(shū)作者為美國的Ron Patton,譯者是周予濱、姚靜等。由機械工業(yè)出版社2003年8月第一次出版,書(shū)號是ISBN 7-111-09925-7。1000mm x 1400mm B5.9印張,348千字,共271頁(yè),定價(jià)25元人民幣。
這本書(shū)不僅書(shū)名和封面設計樸實(shí)無(wú)華,更重要的是書(shū)中內 容比較適合測試入門(mén)者。與同類(lèi)書(shū)籍相比,本書(shū)非常淺顯易懂。另外本書(shū)內容全面,包括軟件測試的概述、軟件開(kāi)發(fā)過(guò)程簡(jiǎn)介、基本和高級的軟件測試技術(shù)、測試工 具與測試自動(dòng)化、測試計劃、報告軟件缺陷、測試職業(yè)發(fā)展等。雖然內容繁多,但是全書(shū)只有271頁(yè),利用有限的篇幅對這些測試只是進(jìn)行了高度概括。作者憑借 豐富的實(shí)踐經(jīng)驗從滿(mǎn)足測試初學(xué)者需求的角度,將這些繁雜的內容使用最簡(jiǎn)捷的淺顯表述,將復雜問(wèn)題層層剖析、流暢講解,呈現給讀者的是作者的獨到見(jiàn)解,為初 學(xué)者組織量身定做的實(shí)用內容,這是一本作者用心寫(xiě)作的書(shū)籍。 軟件測試是有計劃、有組織和有系統的軟件質(zhì)量保證活動(dòng),而不是隨意地、松散地、雜亂地實(shí)施過(guò)程。軟件測試已經(jīng)成為一門(mén)單獨的學(xué)科,包含很多方面的內容, 而作為測試初學(xué)者,面對如此豐富的測試知識,經(jīng)常感到不知從何學(xué)起,不知道最快的學(xué)習方式是什么。本書(shū)對此由淺入深的將需要學(xué)習的測試內容分為六個(gè)部分, 每一部分包含幾章分別介紹。這六個(gè)部分分別是:軟件測試綜述、測試基礎、測試技術(shù)、加強測試、使用測試文檔和軟件測試展望。在每一章里,作者給出了不少實(shí) 際測試例子,配合很多圖形,將每個(gè)問(wèn)題的描述、測試技術(shù)和實(shí)踐經(jīng)驗一一闡述。不僅如此,每一章還包含針對本章內容的“小測驗”,并且在書(shū)末給出了完整的參 考答案。
對于近年來(lái)備受關(guān)注的國際化和本地化軟件測試,本書(shū)也專(zhuān)門(mén)列出“外國語(yǔ)言測試”一章進(jìn)行闡述,其中講述了翻譯問(wèn)題、本地 化問(wèn)題、配置和兼容性問(wèn)題。此外本書(shū)還包含了網(wǎng)站測試、文檔測試、配置測試等章節,也包括黑盒測試和白盒測試的方法,將測試過(guò)程中常用的測試對象的類(lèi)型逐 個(gè)簡(jiǎn)明介紹。
本書(shū)不僅討論軟件測試的技術(shù),而且對于軟件測試管理和個(gè)人軟件測試職業(yè)發(fā)展進(jìn)行了論述,在本書(shū)的最后一章“軟件測試員職業(yè)指導”中,列出了提高測試技術(shù)的途徑和可用資源,給測試初學(xué)者指明了測試職業(yè)的努力方向和發(fā)展前途。
另外,本書(shū)只所以被筆者看好,一個(gè)重要的原因還在于本書(shū)的翻譯水平較高,比較通順、準確和富有文采??吹贸鲎g者具有豐富的科技文檔翻譯經(jīng)驗,某些譯文可以用“精彩、傳神”來(lái)形容。
但是,稍顯遺憾的是本書(shū)中有不少關(guān)于軟件測試的術(shù)語(yǔ)的翻譯不太準確,與軟件測試領(lǐng)域的專(zhuān)業(yè)說(shuō)法很不一致,有可能為測試初學(xué)者今后工作帶來(lái)一些困惑,猜測譯 者可能缺乏足夠的軟件測試實(shí)踐經(jīng)歷。比較有代表性的是以下幾個(gè)詞的翻譯:“QA”,書(shū)中翻譯成“質(zhì)量評判”,應該是“質(zhì)量保證”?!?/font>Project Manager”,書(shū)中翻譯成“項目管理員”,應該是“項目經(jīng)理”?!?/font>Regression testing”,書(shū)中翻譯成“回復測試”,應該是“回歸測試”。另外,本書(shū)也存在一些打字錯誤,例如,第24頁(yè),原文“軟件終歸要分布的”,應該是“軟 件終歸要發(fā)布的”。第145頁(yè),原文“網(wǎng)頁(yè)不受如何一臺計算機的限制”,應該是“網(wǎng)頁(yè)不受任何一臺計算機的限制”。第201頁(yè),原文“編寫(xiě)用于輸入輸入的 實(shí)際數值和預期結果”,應該是“編寫(xiě)用于輸入輸出的實(shí)際數值和預期結果”。希望再版時(shí),可以將這些錯誤改正,最好請熟悉軟件測試的人員對全書(shū)內容進(jìn)行審 閱,以保證軟件測試術(shù)語(yǔ)的翻譯準確性。
俗話(huà)說(shuō)“瑕不掩瑜”,對于測試初學(xué)者,本書(shū)屬于物有所值,值得推薦。當然,除了閱讀好的測試書(shū)籍外,重要的是有機會(huì )參與完整的測試項目,總結實(shí)踐經(jīng)驗,并且虛心交流。當然,這都是題外話(huà),在此不再多言。 Alpha和Beta測試簡(jiǎn)介 大型通用軟件,在正式發(fā)布前,通常需要執行Alpha和Beta測試,目的是從實(shí)際終端用戶(hù)的使用角度,對軟件的功能和性能進(jìn)行測試,以發(fā)現可能只有最終用戶(hù)才能發(fā)現的錯誤。 Alpha測試是由一個(gè)用戶(hù)在開(kāi)發(fā)環(huán)境下進(jìn)行的測試,也可以是公司內部的用戶(hù)在 模擬實(shí)際操作環(huán)境下進(jìn)行的受控測試,Alpha測試不能由程序員或測試員完成。Alpha測試發(fā)現的錯誤,可以在測試現場(chǎng)立刻反饋給開(kāi)發(fā)人員,由開(kāi)發(fā)人員 及時(shí)分析和處理。目的是評價(jià)軟件產(chǎn)品的功能、可使用性、可靠性、性能和支持。尤其注重產(chǎn)品的界面和特色。Alpha測試可以從軟件產(chǎn)品編碼結束之后開(kāi)始, 或在模塊(子系統)測試完成后開(kāi)始,也可以在確認測試過(guò)程中產(chǎn)品達到一定的穩定和可靠程度之后再開(kāi)始。有關(guān)的手冊(草稿)等應該在Alpha測試前準備 好。 Beta測試是軟件的多個(gè)用戶(hù)在一個(gè)或多個(gè)用戶(hù)的實(shí)際使用環(huán)境下進(jìn)行的測試。開(kāi) 發(fā)者通常不在測試現場(chǎng),Beta測試不能由程序員或測試員完成。因而,Beta測試是在開(kāi)發(fā)者無(wú)法控制的環(huán)境下進(jìn)行的軟件現場(chǎng)應用。在Beta測試中,由 用戶(hù)記下遇到的所有問(wèn)題,包括真實(shí)的以及主管認定的,定期向開(kāi)發(fā)者報告,開(kāi)發(fā)者在綜合用戶(hù)的報告后,做出修改,最后將軟件產(chǎn)品交付給全體用戶(hù)使用。 Beta測試著(zhù)重于產(chǎn)品的支持性,包括文檔、客戶(hù)培訓和支持產(chǎn)品的生產(chǎn)能力。只有當Alpha測試達到一定的可靠程度后,才能開(kāi)始Beta測試。由于 Beta測試的主要目標是測試可支持性,所以Beta測試應該盡可能由主持產(chǎn)品發(fā)行的人員來(lái)管理。 由于Alpha和Beta測試的組織難度大,測試費用高,測試的隨機性強、測試 周期跨度較長(cháng),測試質(zhì)量和測試效率難于保證,所以,很多專(zhuān)業(yè)軟件可能不再進(jìn)行Beta測試。隨著(zhù)測試技術(shù)的提高,以及專(zhuān)業(yè)測試服務(wù)機構的大量涌現,很多軟 件的Beta測試外包給這些專(zhuān)業(yè)測試機構進(jìn)行測試。 國際化軟件測試概論 國際化軟件測試包括軟件國際化測試和軟件本地化能力測試。軟件的國際化測試是重要的測試階段,必須在本地化測試之前進(jìn)行測試。國際化軟件的測試目的是判斷軟件的國際化設計程度,確定軟件是否支持可能的區域,是否可以容易的本地化。 一、國際化軟件測試的重要性 軟件項目團隊的所有成員都應該認識并且高度重視國際化測試的重要性。 首先,任何不良的國際化設計的軟件錯誤,將存在于所有本地化的語(yǔ)言版本,都需要修改源語(yǔ)言程序的代碼才能修復該類(lèi)錯誤,這將增加軟件的本地化成本。 其次,良好國際化設計的軟件將需要最小程度的本地化測試。因為良好的區域語(yǔ)言支持已經(jīng)集成在軟件的國際化設計中,需要翻譯的資源已經(jīng)從程序代碼中分離出來(lái),可以很容易的翻譯資源文件中需要本地化的內容,而且不會(huì )破壞程序的功能。 二、國際化軟件測試的原則 為了提高國際化測試的質(zhì)量,需要遵循下面的原則: -
一旦程序的代碼足夠穩定,盡早進(jìn)行測試。 -
按照組件和功能特征的優(yōu)先級從高到低的順序進(jìn)行測試 -
重點(diǎn)放在處理多語(yǔ)言字符串的直接或間接的輸入/輸出(I/O) -
國際化功能測試與本地化能力測試并行進(jìn)行。 -
使用偽本地化和偽鏡像技術(shù)進(jìn)行本地化能力測試。 三、軟件國際化測試的方法 軟件的國際化測試主要測試軟件的國際化功能特征,需要測試國際化軟件的通用功能、文本處理功能和區域支持功能。 采用下面的方法進(jìn)行國際化測試: 1、測試通用功能 2、測試文本處理功能 -
使用不同區域的輸入法編輯器交互式文本輸入。 -
多語(yǔ)言文本的剪貼板操作。 -
用戶(hù)界面的文本處理。 -
雙字節字符集的輸入和輸出。 -
多字節字符集文本的緩沖區大小的處理。 3、測試區域特征功能 四、軟件本地化能力測試的方法 本地化能力測試的目的是驗證被測軟件的用戶(hù)界面不用修改代碼,就能夠容易地被翻譯成任何目標語(yǔ)言。 為了快速有效的測試軟件的本地化能力,常用以下的測試方法: 1、測試偽本地化版本 偽本地化版本測試可以不用實(shí)際本地化,就能夠發(fā)現在本地化過(guò)程中的用戶(hù)界面的翻譯錯誤。鏡像技術(shù)也是偽本地化版本測試的常用技術(shù),發(fā)現一些本地化過(guò)程中的控件布局方面的錯誤。 2、檢查程序的代碼 在檢查程序的代碼時(shí),確保代碼滿(mǎn)足下列要求: -
所有資源都獨立于代碼,并且以標準的資源格式編寫(xiě)。 -
不用指針算法來(lái)計算字符串長(cháng)度、訪(fǎng)問(wèn)字符串元素。 -
不是通過(guò)剝離或串聯(lián),在運行時(shí)構建字符串。 -
沒(méi)有假設字符串緩沖區的固定長(cháng)度。 -
不在圖標和位圖內包含需要本地化的文本。 -
不存在對驅動(dòng)器和文件名或者注冊鍵的假設。 3、檢查用戶(hù)界面和文檔 確保用戶(hù)界面和文檔中所用的術(shù)語(yǔ)清晰、一致、明確。當用戶(hù)界面和文檔提到相同的特性,是用的術(shù)語(yǔ)不一致,或者當文檔使用了太多的技術(shù)行話(huà)時(shí),會(huì )使本地化過(guò)程增減很大難度。如果本地化能力依賴(lài)于偽本地化,更應該注重檢查文檔的內容。 4、選擇實(shí)際的本地化版本進(jìn)行測試 雖然針對偽本地化版本的測試能夠發(fā)現很多本地化能力方面的問(wèn)題,但是仍然不能代替對實(shí)際的本地化版本進(jìn)行本地化能力的測試。在選擇合適的本地化版本時(shí),通??紤]以下方面: -
選擇熟悉的可以迅速創(chuàng )建和測試的本地化語(yǔ)言版本。 -
選擇特別容易暴露本地化問(wèn)題的語(yǔ)言版本。 -
選擇非常重要的目標市場(chǎng)的語(yǔ)言版本 |