qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          開發(fā)者的Java測試用例淺析

          前段時間,在項目組里做了一點java測試用例,雖然沒有全自動化,也完成了半自動化的測試。比如:針對接口的測試,提供服務的測試等,都不需要啟動服務,也不需要接口準備好。我們只需要知道輸入輸出,便可以進行testcase的編寫,這樣很方便。我們這邊這次完成的針對某一塊業(yè)務。
            看一下一部分的完成情況
            這次的主要目的還是來講TestCase
            那什么是TestCase?
            是為了系統地測試一個功能而由測試工程師寫下的文檔或腳本;
            Junit測試是程序員測試,即白盒測試(個人理解);
            具體到junit.framework. TestCase這個抽象類
            其實網上有很多關于這方面的帖子,博客之類的,大家也可以找找,學習學習。畢竟我這里的理解還是很膚淺的
            那第二點,為什么需要編寫測試用例?
            通俗易懂一點:寫的目的就是為了記錄,并加以完善,因為測試一個功能往往不是走一遍就OK的,需要反復的改,反復的測,直到功能可以提交給客戶。
            深度提煉一點:
            1) 測試用例被認為是要交付給顧客的產品的一部分。測試用例在這里充當了提高可信度的作用。典型的是UAT(可接受)級別。
            2) 測試用例只作為內部使用。典型的是系統級別的測試。在這里測試效率是目的。在代碼尚未完成時,我們基于設計編寫測試用例,以便一旦代碼準備好了,我們就可以很快地測試產品。
            具體的參考:http://www.51testing.com/html/41/n-44641.html
            深入的也不多說,網上這種東西很多。
            正題:
            使用JUnit時,主要都是通過繼承TestCase類別來撰寫測試用例,使用testXXX()名稱來撰寫單元測試
            用JUnit寫測試真正所需要的就三件事:
            1.  一個import語句引入所有junit.framework.*下的類。
            2.  一個extends語句讓你的類從TestCase繼承。
            3.  一個調用super(string)的構造函數。
            下面可以看一下TestCase的文檔介紹里的Example
            1.構建一個測試類
            public class MathTest extends TestCase {
            protected double fValue1;
            protected double fValue2;
            protected void setUp() {
            fValue1= 2.0;
            fValue2= 3.0;
            }
            }
            2.一個Test方法以及斷言使用
            public void testAdd() {
            double result= fValue1 + fValue2;
            assertTrue(result == 5.0);
            }
            3.運行單個方法的使用
            TestCase test= new MathTest("add") {
            public void runTest() {
            testAdd();
            }
            };
            test.run();
            或者
            TestCase test= new MathTest("testAdd");
            test.run();

          4.運行一組測試用例
            public static Test suite() {
            suite.addTest(new MathTest("testAdd"));
            suite.addTest(new MathTest("testDividByZero"));
            return suite;
            }
            還有下面這種方式
            public static Test suite() {
            TestSuite suite = new TestSuite("Running all tests.");
            /*10000*/
            suite.addTestSuite(TestAgentApi.class);
            /*10001*/
            suite.addTestSuite(TestAgentUxxApi.class);
            }
            運行6個,5個沒有通過,一目了然。
            setUp和tearDown
          /**
          * Sets up the fixture, for example, open a network connection.
          * This method is called before a test is executed.
          */
          protected void setUp() throws Exception {
          }
          /**
          * Tears down the fixture, for example, close a network connection.
          * This method is called after a test is executed.
          */
          protected void tearDown() throws Exception {
          }
            對于重復出現在各個單元測試中的運行環(huán)境,可以集中加以管理,可以在繼承TestCase之后,重新定義setUp()與tearDown()方法,將數個單元測試所需要的運行環(huán)境在setUp()中創(chuàng)建,并在tearDown()中銷毀。
            Junit提供的種種斷言
            JUnit提供了一些輔助函數,用于幫助你確定某個被測試函數是否工作正常。通常而言,我們把所有這些函數統稱為斷言。斷言是單元測試最基本的組成部分。
            方法:
            assertEquals-期望值與實際值是否相等
            assertFalse-布爾值判斷
            assertTrue-布爾值判斷
            assertNull-對象空判斷
            assertNotNull-對象不為空判斷
            assertSame-對象同一實例判斷
            assertNotSame-檢查兩個對象是否不為同一實例
            fail-使測試立即失敗
            Junit和異常
            1.從測試代碼拋出的可預測異常。
          2.由于某個模塊(或代碼)發(fā)生嚴重錯誤,而拋出的不可預測異常。
            這兩點的異常是我們比較關心的。下面展示一種情況:對于方法中每個被期望的異常,都應寫一個專門的測試來確認該方法在應該拋出異常的時候確實會拋出異常。圖展示的是拋出異常才通過,不拋出異常,case不通過。
            如圖
            異常情況如下:
            對于處于出乎意料的異常,我們最好簡單的改變我們的測試方法的聲明讓它能拋出可能的異常。JUnit框架可以捕獲任何異常,并且把它報告為一個錯誤,這些都不需要你的參與。
            回顧一下如何使用Junit
            JUnit的使用非常簡單,共有3步:
            第一步、編寫測試類,使其繼承TestCase;
            第二步、編寫測試方法,使用testXXX的方式來命名測試方法;
            第三步、編寫斷言。
            如果測試方法有公用的變量等需要初始化和銷毀,則可以使用setUp,tearDown方法。

          posted on 2014-12-22 23:25 順其自然EVO 閱讀(533) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年12月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 克拉玛依市| 东乌| 定西市| 淮北市| 安国市| 日土县| 平度市| 阆中市| 油尖旺区| 沂源县| 岢岚县| 巴中市| 图片| 达拉特旗| 枝江市| 广平县| 铁力市| 西乌珠穆沁旗| 宜宾县| 黎川县| 余江县| 阿鲁科尔沁旗| 嵊州市| 利辛县| 肇州县| 兴义市| 南阳市| 壶关县| 凤冈县| 安丘市| 贡觉县| 邹城市| 布尔津县| 嘉鱼县| 故城县| 泰州市| 西昌市| 阿克| 磐石市| 禹城市| 西华县|