• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

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

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

    單元測試和事先測試開發

    發布: 2010-6-22 11:09 | 作者: 不詳 | 來源: 領測測試網采編 | 查看: 54次 | 進入軟件測試論壇討論

    領測軟件測試網

      單元測試和事先測試開發 軟件測試

      摘要:Eric Gunnerson 介紹了事先測試開發的思想,并提供了一個實用實例來演示如何在您自己的應用程序中應用它。

      本專欄末尾有我的簡介,如果您讀過的話,就會知道我在擔任程序經理之前曾出任 C# 編譯器的測試組長,而在此之前是 C++ 編譯器的測試組長。這些工作經歷使我對分析和盡量避免軟件錯誤特別感興趣。

      要減少軟件中的錯誤數目,方法之一就是擁有一個專業的測試組,其工作就是盡一切可能使軟件崩潰。不幸的是,如果擁有測試組,那么即使是經驗豐富的開發人員,也會傾向于花費較少的時間來保證代碼的可靠性。

      軟件界有一句俗語:“開發人員不應該測試他們自己的代碼”。這是因為開發人員對自己的代碼了如指掌,他們很清楚如何采用適當的方法對代碼進行測試。盡管這句俗語很有道理,但卻忽略了非常重要的一點 - 如果開發人員不對自己的代碼進行測試,又如何知道代碼能否按照預期的方式運行?

      簡單說來,他們根本無從得知。開發人員編寫那種運行不正;蛑辉谀承┣闆r下運行正常的代碼是一個嚴重的問題。他們通常只測試代碼能否在很少的情況下正常運行,而不是驗證代碼能夠在所有情況下均正常運行。

      發現軟件錯誤

      發現軟件錯誤的情況有很多:

      1、由首次編寫代碼的開發人員發現。

      2、由嘗試運行代碼的開發人員發現。

      3、由組中的其他開發人員或測試人員發現。

      4、作為產品大規模測試的一部分。

      5、由最終用戶發現。

      如果在第一種情況下發現軟件錯誤,則修復錯誤比較容易,成本也很低。情況越靠后,修復軟件錯誤的成本就越高;修復一個由最終用戶發現的軟件錯誤可能要耗費 100 或 1000 倍的成本。更不用說用戶通常因為軟件錯誤導致工作無法繼續,而一直等到下一個版本才能解決問題。

      如果開發人員能夠在編寫代碼期間發現所有的軟件錯誤,那就再好不過了。為此,您必須編寫能在編寫代碼時運行的測試。有一種很不錯的方法,它恰好可以做到這一點。

      事先測試開發

      所謂的事先測試開發是指在編寫代碼前編寫測試。如果所有測試均正常運行,便可以斷定代碼運行正常;添加新功能時,這些測試會繼續驗證您是否破壞了代碼的任何部分。

      此概念于 20 世紀 90 年代初誕生于 Smalltalk 世界,Kent Beck 在當時編寫了 SmalltalkUnit。在過去的幾年中,大部分環境都具備了單元測試工具,其中有一個很出色的適用于 .NET Framework 領域的工具,即 nUnit(英文)。

    延伸閱讀

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

    TAG: 單元 開發


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

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

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>