qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          開(kāi)發(fā)者的Java測(cè)試用例淺析

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

          4.運(yùn)行一組測(cè)試用例
            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);
            }
            運(yùn)行6個(gè),5個(gè)沒(méi)有通過(guò),一目了然。
            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 {
          }
            對(duì)于重復(fù)出現(xiàn)在各個(gè)單元測(cè)試中的運(yùn)行環(huán)境,可以集中加以管理,可以在繼承TestCase之后,重新定義setUp()與tearDown()方法,將數(shù)個(gè)單元測(cè)試所需要的運(yùn)行環(huán)境在setUp()中創(chuàng)建,并在tearDown()中銷毀。
            Junit提供的種種斷言
            JUnit提供了一些輔助函數(shù),用于幫助你確定某個(gè)被測(cè)試函數(shù)是否工作正常。通常而言,我們把所有這些函數(shù)統(tǒng)稱為斷言。斷言是單元測(cè)試最基本的組成部分。
            方法:
            assertEquals-期望值與實(shí)際值是否相等
            assertFalse-布爾值判斷
            assertTrue-布爾值判斷
            assertNull-對(duì)象空判斷
            assertNotNull-對(duì)象不為空判斷
            assertSame-對(duì)象同一實(shí)例判斷
            assertNotSame-檢查兩個(gè)對(duì)象是否不為同一實(shí)例
            fail-使測(cè)試立即失敗
            Junit和異常
            1.從測(cè)試代碼拋出的可預(yù)測(cè)異常。
          2.由于某個(gè)模塊(或代碼)發(fā)生嚴(yán)重錯(cuò)誤,而拋出的不可預(yù)測(cè)異常。
            這兩點(diǎn)的異常是我們比較關(guān)心的。下面展示一種情況:對(duì)于方法中每個(gè)被期望的異常,都應(yīng)寫(xiě)一個(gè)專門(mén)的測(cè)試來(lái)確認(rèn)該方法在應(yīng)該拋出異常的時(shí)候確實(shí)會(huì)拋出異常。圖展示的是拋出異常才通過(guò),不拋出異常,case不通過(guò)。
            如圖
            異常情況如下:
            對(duì)于處于出乎意料的異常,我們最好簡(jiǎn)單的改變我們的測(cè)試方法的聲明讓它能拋出可能的異常。JUnit框架可以捕獲任何異常,并且把它報(bào)告為一個(gè)錯(cuò)誤,這些都不需要你的參與。
            回顧一下如何使用Junit
            JUnit的使用非常簡(jiǎn)單,共有3步:
            第一步、編寫(xiě)測(cè)試類,使其繼承TestCase;
            第二步、編寫(xiě)測(cè)試方法,使用testXXX的方式來(lái)命名測(cè)試方法;
            第三步、編寫(xiě)斷言。
            如果測(cè)試方法有公用的變量等需要初始化和銷毀,則可以使用setUp,tearDown方法。

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

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

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 红河县| 民乐县| 尼勒克县| 定州市| 阿城市| 芮城县| 宽城| 察雅县| 广宁县| 衢州市| 老河口市| 疏附县| 二手房| 黄山市| 镇原县| 榆社县| 安陆市| 洮南市| 峡江县| 东莞市| 雅安市| 汝城县| 甘肃省| 泸定县| 鹤峰县| 志丹县| 龙陵县| 英山县| 牙克石市| 新河县| 阿图什市| 济宁市| 新昌县| 沧州市| 黄梅县| 曲水县| 寿阳县| 宝山区| 林芝县| 海城市| 南乐县|