<ruby id="rxdll"></ruby><strike id="rxdll"></strike>

    <rp id="rxdll"></rp>
      <del id="rxdll"><meter id="rxdll"></meter></del>
      <pre id="rxdll"><font id="rxdll"></font></pre>
        <pre id="rxdll"></pre>
      <p id="rxdll"><thead id="rxdll"></thead></p><dl id="rxdll"><progress id="rxdll"><form id="rxdll"></form></progress></dl>

      <ol id="rxdll"><thead id="rxdll"><track id="rxdll"></track></thead></ol>
      <i id="rxdll"><dfn id="rxdll"></dfn></i>
      <font id="rxdll"><meter id="rxdll"></meter></font>

        <mark id="rxdll"><dfn id="rxdll"></dfn></mark>
        • 軟件測試技術
        • 軟件測試博客
        • 軟件測試視頻
        • 開源軟件測試技術
        • 軟件測試論壇
        • 軟件測試沙龍
        • 軟件測試資料下載
        • 軟件測試雜志
        • 軟件測試人才招聘
          暫時沒有公告

        字號: | 推薦給好友 上一篇 | 下一篇

        軟件測試淺悟妄語

        發布: 2009-5-06 09:45 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 7次 | 進入軟件測試論壇討論

        領測軟件測試網

        上文提到,靜者為測。讓我們想想軟件都在什么時候是“靜”的。
          我們看一個自然的流程:Build下載à下載完成à安裝à安裝完成à開啟à使用à關閉à卸載。哪些是靜?哪些是動?讓我們一一剖析。
        1.         下載 :     全部屬性處在動態而不可測中。
        2.         完成:      靜態。此時可測量軟件的大小、Hash驗證碼等。
        3.         安裝:      全部屬性處在動態而不可測中。
        4.         完成:      靜態。此時可測量軟件各文件大小,目錄,COM注冊情況,注冊表情況等屬性。
        5.         開啟:      動態。全部屬性處在動態而不可測中。
        6.         使用:      半動態。哈!怎么是半動態呢?因為這時候軟件已經從硬盤Load進內存了,在內存中是相對靜態的。你可以觀察內存占用是否穩定、有否泄漏。這就叫“靜中有動,動中有靜”,這才是咱們中國人的哲學。
        7.         關閉:      靜態。檢查運行后的生成物(如聊天記錄、Log文件、temp文檔)是應該存在還是被刪除。
        8.         卸載:      靜態。檢查有沒有遺留物,硬盤、注冊表,都找找看。
         
          看,這樣理順下來,是不是寫Case就輕松多了?如果要是按照Test Plan的架構來寫Case,這些Case應該分布在至少是“內存檢驗”“注冊表檢驗”“安裝測試”“文件完整性測試”……等等分支里?傊,在軟件處在相對靜態的時候,你能深入想出軟件的多少屬性,那么就能寫多少Case。進而,你能想出多少直接和間接影響軟件這些屬性的環境因素,就又有多少Case出現……然而,我們的思考能力是有限的,我們幾乎不可能把軟件的所有屬性都想到,我們也不可能把所有可能影響軟件靜態屬性的環境因素都找出來——即使是使用各種靜態測試工具,比如內存跟蹤工具等——也不可以完全做到。因此,有了我開篇的妄語。
         
        對軟件的“試”
         
          上文說過,“試”是動態的。對軟件的動態測試比較復雜,一是要時刻提醒自己要識別一些相對靜止的屬性,把對它們的觀測提出來,二是動態測試要分析的東西也比較多——但并不是沒有章法。
          軟件動態測試之“道”,只有兩個字,那就是——宇宙。
          古往今來謂之“宇”,它強調一個時序關系。我們在動態測試的時候,特別要注意軟件操作的時序,因為每一步的操作都在直接和間接地影響著后面的操作。
          上下四方謂之“宙”,它強調一個空間關系。如果我們把軟件看作一個系統,那么“宙”就是這個系統的環境。
          舉個簡單例子,我們觀察上面的測試流程中的第3步“安裝”:
          它的“宇”就是前兩步和后幾步,如果“宇”中的第2步出了問題——下載的時候文件出了問題,那么安裝肯定要失敗的。
          它的“宙”中有一項是硬盤空間,如果硬盤空間不足,那么安裝也是要失敗的。
          所以,我們在做軟件的動態測試時,要把測試中的“宇”和“宙”想周全。
          那么,怎樣才能把“宇”和“宙”想周全呢?
        軟件測試的生命之圖
         
          如果把軟件從啟動到關閉看作是一次生命的話,那么軟件的生命會是一張非常美麗的生命之圖——這張圖的起點是軟件的Start,然后每一步你都有一個或者若干選擇,從而讓用戶可以有多個達到下一步的通路,這些通路有的是可逆的,有的是單行的,有些是可跳過的……總之,我們最后會達到軟件生命的另一端——關閉。
          雖然這是一個“圖”數據結構,但是對每個通路的遍歷卻是一條線(我是說線性的步驟),其中包含一些可以回溯的步驟。而每條線又是由有限個線段構成的。
        每條線段由兩個端點和一條連線構成。兩個端點,一個是起點(我稱它為“起點場景”),一個是終點(我稱它為“終點場景”),中間的連線是從起點到終點的“動作”。(目前CSDN沒法上傳圖片,過幾天我補上圖)
          那么有個問題:這條小線段有幾種走法?OK,讓我們來分析一下——
        1.         起點à正確操作à終點。(基線測試)
        2.         起點à錯誤操作à終點。
        3.         起點à正確操作à終點à正確操作à起點。
        4.         起點à錯誤操作à終點à正確操作à起點。
        5.         起點à正確操作à終點à錯誤操作à起點。
        6.         起點à錯誤操作à終點à錯誤操作à起點。
        7.         起點à部分正確操作à放棄à起點。
        8.         起點à部分錯誤操作à放棄à起點。
          別忘記還有“宇”的問題,操作的上一步、下一步組合起來會如何?如果這一線段之前的“宇”都是正確的,那么這樣的測試是常規的。如果此前的“宇”已經在某步出了問題(我稱之為“錯誤傳遞”)那這對軟件的質量就是考驗了:我認為,凡是能在“宇”中傳遞下來的數據,都是正確的;如果有錯誤被在“宇”中傳遞,那么這就是軟件的缺陷。有了這一點,情況似乎簡單多了——我們只需要檢查這幾項就足夠了:
        1.         起點狀態的正確性。
        2.         操作輸入的正確性(小到簡單的鼠標點擊,大到多項數據的組合輸入,邊界檢驗,默認值等)。
        3.         終點的正確性(如果有錯誤,軟件是否通過報錯而阻止錯誤在“宇”向下中傳遞)。
        4.         可返回性。
        5.         返回操作的輸入。
        6.         返回起點后狀態正確性的檢查。


        文章來源于領測軟件測試網 http://www.k11sc111.com/

        22/2<12

        關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
        版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
        北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
        技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

        軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

        国产女主播精品_国产片婬乱18一级毛片视频_国产午夜激无码av毛片不卡_国产精品欧美久久久天天影院
          <ruby id="rxdll"></ruby><strike id="rxdll"></strike>

          <rp id="rxdll"></rp>
            <del id="rxdll"><meter id="rxdll"></meter></del>
            <pre id="rxdll"><font id="rxdll"></font></pre>
              <pre id="rxdll"></pre>
            <p id="rxdll"><thead id="rxdll"></thead></p><dl id="rxdll"><progress id="rxdll"><form id="rxdll"></form></progress></dl>

            <ol id="rxdll"><thead id="rxdll"><track id="rxdll"></track></thead></ol>
            <i id="rxdll"><dfn id="rxdll"></dfn></i>
            <font id="rxdll"><meter id="rxdll"></meter></font>

              <mark id="rxdll"><dfn id="rxdll"></dfn></mark>