您好,登錄后才能下訂單哦!
單元測試:是指對軟件中的最小可測試單元進行檢查和驗證。(單一模塊、一個過程、一個函數(shù)等)
單元測試包含計劃階段、設(shè)計階段、實現(xiàn)階段和執(zhí)行階段。起始于詳細設(shè)計,主要是各模塊的源代碼進行測試,直到單元階段結(jié)束后終止。此時主要是PHP單元測試。
單元測試的目標是隔離程序部件并證明這些單個部件是正確的。一個單元測試提供了代碼片斷需要滿足的嚴密的書面規(guī)約。
1、在Linux中下載PHPUnit wget https://phar.phpunit.de/phpunit.phar
2、添加執(zhí)行權(quán)限 chmod +x phpunit.phar
3、更改路徑mv phpunit.phar /usr/local/bin/phpunit
4、查看phpunit版本 phpunit --version
1、如有詳細設(shè)計文檔,先仔細閱讀詳細設(shè)計文檔;針對需要測試的PHP代碼先進行靜態(tài)走讀(查看是否正規(guī)編寫、查看是否有邏輯錯誤、查看是否有未實現(xiàn)的功能等。)
2、編寫測試腳本(以xxx.php為例)
1)首先是調(diào)用xxx配置文件以及調(diào)用PHPunit
有些是這樣的: /**************測試加載******************/ const CONFIG_ENV = 'office'; // include_once __DIR__."/../../sdk/Autoload.php"; // include_once "ApiHelper.php"; include('/data/wuheyou_php/trunk/sdk/Autoload.php'); ImportModule('home');
2)然后測試模塊加載類
3)最后編寫測試用例(根據(jù)php代碼,分析等,傳入正確參數(shù)、錯誤參數(shù)、缺失參數(shù)、多余參數(shù)、路徑覆蓋、條件判斷等)
訪問私有函數(shù) public function testuserTechDonateResource(){ print("資源爭奪戰(zhàn)個人科技貢獻"); for ($i=0; $i<=20; $i++){ //資源爭奪戰(zhàn) 8基礎(chǔ)戰(zhàn)力,9幸運倍率,10守城加成,11寬度 $boss = new GangTech(144540,136); $method = new ReflectionMethod('GangTech','userTechDonateResource'); $method->setAccessible(true); $tech_id = 9; $type = 3;//資源爭奪戰(zhàn) $result = $method->invoke($boss,$tech_id,$type); var_dump($result); $this->assertArraySubset(["result"=>"true"],array("result"=>"true","code"=>0,"msg"=>"成功","data"=>array("next_score"=>60,"star"=>3))); } }
例子:1 public function testPublishGuessodds(){ echo "odds為負數(shù)!\n"; $guess = new GameGuess(); $uid = 186; $guessdesc = "這是我的猜猜猜22222"; //$options = array(array('option_name'=>'我是誰', 'odds'=>1.6),array('option_name'=>'我是誰2', 'odds'=>1.5));//傳入多組 $options[] = array('option_name'=>'是是是是是', 'odds'=>-1.6);//傳入單組 $aborttime = '1449049541'; $result = $guess->publishGuess($uid,$guessdesc,$options,$aborttime); // var_dump($result); $this->assertEquals('賠率設(shè)置不合法',$result->msg); } 例子2: public function testbestlist(){ print ("\n 城市轉(zhuǎn)轉(zhuǎn)轉(zhuǎn)押注情況列表\n"); $list = new GameCitytrun(); $data = array('uid' =>183 , 'gtypeid' =>20 ); $result = $list->betList($data); var_dump($result); $this->assertTrue(true); } 例子3: public function testdoSpin(){ print ("搖獎生成隨機數(shù),作為×××的布局\n"); $DSp = new GameBetTiger(); $method = new ReflectionMethod('GameBetTiger','doSpin'); $method->setAccessible(true); $res_num = array(); $this->res_num = array( "1" => Array ( "11" => 4, "21" => 2, "31" => 5 ), "2" => Array ( "12" => 5, "22" => 2, "32" => 7 ), "3" => Array ( "13" => 4, "23" => 2, "33" => 4 ), "4" => Array ( "14" => 2, "24" => 2, "34" => 9 ), "5" => Array ( "15" => 2, "25" => 5, "35" => 8 ) ); $result = $method->invoke($DSp); var_dump($this->res_num);
3、執(zhí)行對比返回結(jié)果 phpunitxxx.php
1) 正確數(shù)據(jù)發(fā)送請求時,查看返回數(shù)據(jù)是否正確、是否會報錯、數(shù)據(jù)庫中是否正常插入數(shù)據(jù)、關(guān)閉相關(guān)數(shù)據(jù)庫是否能正常工作等。
2)錯誤數(shù)據(jù)發(fā)送請求時,查看返回數(shù)據(jù)是否有異常處理、是否有報錯、數(shù)據(jù)是否有異常、等。
3)發(fā)現(xiàn)BUG,在提交BUG指向相關(guān)開發(fā)并督促修復bug,只至關(guān)閉BUG。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。