單元測試:是指對軟件中的最小可測試單元進行檢查和驗證。(單一模塊、一個過程、一個函數(shù)等)
汕城網(wǎng)站建設公司成都創(chuàng)新互聯(lián),汕城網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為汕城上1000家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務好的汕城做網(wǎng)站的公司定做!
單元測試包含計劃階段、設計階段、實現(xiàn)階段和執(zhí)行階段。起始于詳細設計,主要是各模塊的源代碼進行測試,直到單元階段結束后終止。此時主要是PHP單元測試。
單元測試的目標是隔離程序部件并證明這些單個部件是正確的。一個單元測試提供了代碼片斷需要滿足的嚴密的書面規(guī)約。
1、在Linux中下載PHPUnit wgethttps://phar.phpunit.de/phpunit.phar
2、添加執(zhí)行權限 chmod +x phpunit.phar
3、更改路徑mv phpunit.phar /usr/local/bin/phpunit
4、查看phpunit版本 phpunit --version
1、如有詳細設計文檔,先仔細閱讀詳細設計文檔;針對需要測試的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基礎戰(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('賠率設置不合法',$result->msg); } 例子2: public function testbestlist(){ print ("\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í)行對比返回結果 phpunitxxx.php
1) 正確數(shù)據(jù)發(fā)送請求時,查看返回數(shù)據(jù)是否正確、是否會報錯、數(shù)據(jù)庫中是否正常插入數(shù)據(jù)、關閉相關數(shù)據(jù)庫是否能正常工作等。
2)錯誤數(shù)據(jù)發(fā)送請求時,查看返回數(shù)據(jù)是否有異常處理、是否有報錯、數(shù)據(jù)是否有異常、等。
3)發(fā)現(xiàn)BUG,在提交BUG指向相關開發(fā)并督促修復bug,只至關閉BUG。