<sub id="l9qyp"><listing id="l9qyp"></listing></sub>

    <form id="l9qyp"><legend id="l9qyp"></legend></form>
      1. <wbr id="l9qyp"></wbr>
        1. 更多課程 選擇中心

          軟件測試培訓
          達內IT學院

          400-111-8989

          讓軟件測試員告訴你,為什么要給軟件做測試?

          • 發布:Anne90
          • 來源:伯樂在線
          • 時間:2019-02-18 18:44

          今天我們要分享給大家的是為什么要給軟件做測試,這篇文章適合想要學習軟件測試的同學,以及做軟件開發的同學,對于測試的意義你們都應該清楚與了解,并且通過本文你可以知道如何去做軟件測試,預計閱讀完本文需要10分鐘,你準備好了嗎?

          你為什么應該測試你的軟件?你應該如何測試軟件?有些人對這些問題有非常簡單的回答。

          及時享樂型的程序員根本懶得去測試,快樂地活在當下。更嚴肅的程序員會告訴你軟件測試是為了開發出高質量的產品。為了可以開發出高質量的產品,必須始終編寫單元測試和集成測試,并做 QA 測試。忽略這些,你的代碼將會掉入 bug 為患的深淵。

          盡管我更贊同第二種觀點,但我認為這不是一個完美的答案。考慮到不同的軟件項目的差異,一套答案似乎不可能適合每個人。

          移動游戲、醫療設備和在線商店三者各不相同。

          每個組織也不盡同的,初創公司和大型跨國企業所擁有的資源是無法相提并論的,和 NASA 也是完全不一樣的。

          每個項目都會經歷不同的階段,沒有用戶的產品和有成千上萬交易的產品有非常不同的地位

          你需要的不僅僅是一個答案,而是如何去選擇適合你情況和需要的答案。我們首先會考慮適合你的測試方法。然后我們會考慮為什么要測試你的軟件。最后,我們將結合方法和目標,來看一下你可以選擇什么方式去測試你的軟件。

          你可以用什么樣的測試方法?

          首先,我們考慮下可以使用的不同測試方法。下面的代碼是測試嗎?

          def test_add():
          
          assert add(2, 2) == 5

          我會說,是的,那就是一個測試。從函數名上可以看出來。這個測試證明了函數add() 做了什么:對兩個數字做加法,然后將結果返回給我們。

          你一定注意到了,這個測試是錯誤的。幸運的是,我們的開發過程有另一步驟:代碼審查。親愛的讀者,你可以作為一個代碼審查者并告訴我,我的代碼是錯誤的,2加2是4,不是5。

          代碼審查是一種測試方法嗎?如果你試圖驗證你的代碼符合規范,那么這就是一種測試。你大腦中有算術規范(”2 + 2 = 4″),你就會檢查你的代碼是否符合這個規范。

          讓我們把代碼審查和自動化單元測試都做分別作為一種測試方法。盡管他們都是測試,他們也非常不同。他們之間的主要區別是什么?

          測試的一種方法是自動化的,另一種是由人類完成的。

          自動化測試是連續的和可重復的,你可以這么寫:

          def test_add_twice():
          
          for i in range(10000000):
          
          assert add(i, i) == 2 * i

          計算機將會每次運行完全相同的代碼,該代碼將會確保函數 add() 對于這些特定的輸入返回特定的輸出。人在手動驗證一千萬種不同的計算時會遇到一些困難:無聊、分心、錯誤、遲緩。

          另一方面,人類在閱讀這個代碼時,會告訴你這是bug:

          def add(a, b):
          
          return a + b + 1

          計算機所做的事情,無論是好是壞,人類都能明白他的意義。只有人類才知道軟件的意義是什么。

          現在我們可以按照使用的方法來對測試進行分類:人類測試意義,自動化測試確保一致性。

          為什么要測試軟件?

          接下來,讓我們考慮測試目標。

          測試軟件的第一個可能的目標就是確保它符合規范。這個目標是大多數程序員在討論測試時想到的:它涵蓋了單元測試和手工測試,它也包括代碼審查。你的軟件具有某些必須的功能、規范,你想確保它在現在和未來也確實是這樣的。

          一些需求是高層次的:一個在線商店想要顧客可以訂購他們添加到購物車的產品。其他需求是低層次的實現細節,只有程序員感興趣。你可能想要函數 verify_creditcard() 接收信用卡號碼作為字符串,然后如果信用卡是無效的,拋出一個 InvalidCreditCard 異常。

          所有的這些需求都是規范,他可以被寫的非常詳細,也可以是頭腦中的一個概念(如 2 + 2 等于 4 )。無論如何,你測試你的軟件是為了確保它做了它應該做的事。

          然而,有時測試也可以有不同的目標。在 Eric Ries 的書《精益創業》中, 他提到編寫軟件后卻發現沒有人真正想用它的問題。如果沒有人使用你的軟件,花費了大量的時間去測試,確保你的軟件滿足規范就是浪費時間。

          Ries 認為你首先應該搞清楚一個產品是否會成功,通過測試他稱為的“最低可行產品”是否擁有潛在的用戶和客戶。這是一個與眾不同的測試形式:它不是驗證你的軟件是否滿足規范,而是學習你以前不知道的東西。

          軟件測試第二個可能的目標就是為了獲得知識。讓我隨著這個目標看一下另一種測試形式。“A/B測試”就是你使用兩個變量,然后看哪個變量產生更好的結果。或許你正在測試重新設計的網站:你給 90% 的訪客展現你目前的設計,10% 的訪客展現你的新設計,然后看哪種會讓你的產品有更多的用戶注冊。

          注意,你有兩套規范,并且已經實現了他們。測試的要點就是找到哪種規范更好,學習一些新的東西,而不是驗證實現是否符合規范。

          現在我們已經知道為什么你需要做測試:要么驗證你的實現符合規范,要么獲得新的知識。

          應該如何測試軟件?

          結合我們提出的那兩個目標(獲得新知識和滿足規范)和兩種測試方法(手工測試和自動化測試),你會得到四種不同的測試形式,每種都會有更詳細的測試目標。

          對于你特定的需求和情況,你必須選擇一種合適的測試方式。讓我們逐個介紹這四種測試類型,看看每種測試類型應該在什么情況下使用。

          為什么要給軟件做測試

          理解用戶

          用戶會購買你的產品嗎?

          一個設計的改變會帶來有更多的注冊嗎?

          用戶會理解你的軟件是如何工作的嗎?

          這些問題都無法通過對比你的軟件是否滿足規范來得到回答。相反,你需要經驗知識:你需要觀察當你的軟件展現給用戶時,用戶真正做了什么操作。

          相關的測試技術包括:

          可用性測試

          最低可行產品測試(《精益創業》)

          A/B測試

          理解運行時行為

          你的軟件在負載下的表現如何?

          你的軟件有資源競爭嗎?

          當有非法輸入時,你的軟件是否會崩潰?

          這些問題不能總是通過比較你的軟件是否符合規范來回答。一旦你的軟件足夠復雜,你無法完全理解或者預測它的回應。你需要觀察它的實際運行來理解其行為。

          相關的測試技術包括:

          壓力測試和浸泡測試

          從產品日志中收集異常及跟蹤信息

          功能的正確性

          你的軟件是否真正符合規范?

          你的軟件是否做了它應該做的事?

          很容易可以看到,自動化測試可以證明這些,但是請記住檢查2+2等于5的單元測試。在更基本的層面上,軟件可以在技術上滿足規范,但是不能達到規范的目標。只有我們理解規范背后的含義,然后才能確定軟件是否達到了目標。

          相關的測試技術包括:

          手動用戶界面測試(如:QA人員使用您的網站)

          代碼審查

          功能的穩定性

          對于同樣的輸入,你的公開接口(API)是否總能返回相同的結果?

          你的代碼是否提供了它應該提供的保證?

          人類很不擅長測試這些情況。人類非常容易忽略小的變化:如果一個按鈕從“Send Now”改變為“Send ow”,你可能根本就不會注意到。相反,如果你的接口從sendNow() 變為 send_now(),或者返回值的類型有輕微變化,你的軟件就會崩潰。

          這意味著一個公開接口,尤其是其他軟件依賴的接口,為了保證正確性必須要穩定。當你不斷更新你的測試時,為改變頻繁的私有接口或者代碼編寫自動化測試,將會導致非常高的維護成本

          相關的測試技術包括:

          單元測試、集成測試和其他類似的自動化接口測試

          自動化用戶界面測試(如:網站的Selenium測試)

          編譯器檢查和靜態檢查

          選擇如何去測試

          首先,我們最初的目標:基于你的目標,這個模型可以幫助選擇測試形式。

          考慮一個新建立的產品,不確定什么樣的人愿意使用這個產品。自動化測試的重點在于確保代碼符合規范,因此在搞清楚用戶真正的需求之前,編寫自動化測試用例可能是浪費時間。

          精益創業(Lean Startup)是一種可行的替代方法,它的目標是找到什么樣的產品可以滿足用戶的需求,它側重于實驗或者嘗試。這意味著專注理解用戶這個象限。一旦選定了產品,你就可以花費時間在確認“最低可行性”之外的地方,比如投入更多的資源保證軟件功能的正確性和穩定性。

          辨別你是否選擇了錯誤的測試類型

          第二,當你選擇了錯誤的測試類型時,這個模型可以幫你改變航向。比如假設編寫稅收軟件(細節源自一個真實案例),他們為他們的web界面編寫了Selenium測試,與此同時他們的web界面做了重大的改變。

          即使做了測試,他們的程序依然是有bug的,每次改變界面這些測試用例就不能使用了。測試似乎沒有提升質量,但是它浪費了開發者的時間進行維護。他們做錯了什么?

          這個問題就是他們的系統實際上有兩部分:

          稅收引擎相當穩定,稅法每年只改變一次。對于用戶來說稅收引擎中的錯誤是一個主要問題,對于開發者來說不兼容的接口改變是一個問題。這表明需要穩定的功能測試,比如針對稅收計算引擎的單元測試。正確的功能可以通過代碼審和查稅務會計的反饋來保證。

          基于web的用戶界面。UI界面頻繁的變更,這表明穩定的功能測試現在還不是目標。現在的目標是功能的正確性,所以UI界面應該進行手工測試(比如:當程序員寫代碼時進行測試)

          討論測試的基礎

          最后,這個模型提供了一個共享的術語,這個術語可以幫助你在廣泛的意義和不同的目標下討論測試。

          可以不必再對手工測試和單元測試哪個更好進行無休止的爭論,從這個模型中可以非常清楚的展示出他們之間的差異。

          你還可以與公司的其他部門(如市場營銷)討論測試,這會是一個非常不同的測試視角。

          總結

          你為什么要測試你的軟件?要么獲得知識,要么滿足規范。

          你測試軟件的方法有哪些?手工測試或者自動化測試。

          你應該如何測試你的軟件?根據你特定的情況,選擇相關的測試形式,如理解用戶、理解運行時行為、功能的穩定性、功能的一致性。

          感謝您的閱讀,以上就是對為什么要對軟件做測試相關內容的解讀,你了解完原因了嗎?通過本文你了解如何做軟件測試了嗎?更多軟件測試相關的內容盡在達內軟件測試培訓機構官網,敬請關注!

          免責聲明:內容和圖片源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

          預約申請免費試聽課

          填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

          上一篇:軟件測試中的敏捷測試是何物?有何用?
          下一篇:測試新手這里看,達內軟件測試培訓帶你提高測試效率!

          軟件測試必備的數據庫知識有哪些?(終)

          日志在快速定位自動化腳本故障中的重要性研究

          測試慣例是什么?怎么打破測試慣例?

          “用鼠標點點點”的測試,未來還有機會嗎?

          • 掃碼領取資料

            回復關鍵字:視頻資料

            免費領取 達內課程視頻學習資料

          • 視頻學習QQ群

            添加QQ群:1143617948

            免費領取達內課程視頻學習資料

          Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

          選擇城市和中心
          黑龍江省

          吉林省

          河北省

          陜西省

          湖南省

          貴州省

          云南省

          廣西省

          海南省

          奇米影视奇米色777欧美欧美一级高清片在线观看876av电影高清 百度 好搜 搜狗
          <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>