懸賞イベントに勝つことは勝利の確率の正しさを検証するための手動テストの多くは、手動プロセスをチェックする勝利の確率、その後の治療に加えて、明らかに望ましいことではないと、ランダムイベントで協力して開発することができ、勝利をテストするためにインターフェースを使用します設計要件を満たしています。
1.アイデア:
(1)優勝のインタフェースを提供するために開発し、(このインターフェイスを取得ここでは詳細な理解を開発する必要がある)、それぞれランダムには、以下の4つの結果を返します。
0--描かれていないことを意味
1-- 1抽選を表し、
2--表現描かれた2賞
3--表現描かれた3賞
(2)ループのために、繰り返しのインターフェースを要求し、TestNGのフレームに設けられ、実行時間を短縮するために、複数のマルチスレッド処理、同時に動作方法の複数を実行する方法を運ぶ使用し、大量のデータをシミュレートしますイベントを受賞。
(3)イベントのすべての種類を獲得する獲得確率、データ処理のためのイベントを獲得(2)へ。
2.コード
次のようにサンプルコードLotteryTestCase.javaを使用します。
パッケージcom.krplus.api.autotest.testcase。 輸入org.apache.http.HttpEntity。 輸入org.apache.http.client.methods.CloseableHttpResponse。 輸入org.apache.http.client.methods.HttpGet; 輸入org.apache.http.impl.client.CloseableHttpClient。 輸入org.apache.http.impl.client.HttpClients。 輸入org.apache.http.util.EntityUtils。 輸入org.testng.annotations.Test; / ** * 2016年4月18日にwyyによって作成されます。 * / パブリック クラスLotteryTestCase { @Test(invocationCount = 10、threadPoolSize = 5 ) //invocationCount ----方法10の各実行発現するように何回実行するこの方法、示し // マルチスレッドの数がオン、および実行時間に関連する方法は、5つのスレッドを開くために、ここで示さ表す----- threadPoolSizeをすべての2つのスレッドが同じメソッドを共有し、複数の方法は、同時に時間ランニングコスト節約を同時に行う// /を、この設定は、一般的に本明細書で使用するための単一の実行サイクルとして、以下の方法で使用され、したがって、ここで設定されていません、非常に効果的に無視することができる 公共 ボイド)testLottery(スロー例外{ int型 = 0失敗、 INT = 0まず、 int型 SECOND = 0 ; int型 THIRD = 0 ; フロート = 0 perfail ; フロート perfirst = 0 ; フロート = 0 persecond ; フロート perthird = 0; のInt M = 100; // get要求インターフェースの数を設定 // ゲットインタフェース勝利を使用してデータを取得するためのリサイクル方法を、得られた当選タイプのデータ のためには、(int型 I = 0; iがmを<; I ++は){ CloseableHttpClientのHttpClient = HttpClients。 createDefault(); HTTPGET GET = 新新 HTTPGET(「HTTP:// **********」) // 最初の異常な結果があるかどうかを確認するために、ブラウザ内の単一の実行へのインタフェースを受賞 // HTTPGET新しい新しいHTTPGET = GET( "HTTP:// **********"); // 二等賞インタフェースは レスポンス= CloseableHttpResponse ; httpClient.execute(GET) 試し { エンティティHttpEntity){= Response.getEntity(); 文字列結果 = EntityUtils.toString(エンティティ); INT RES = Integer.parseInt(結果); // 文字列型を獲得のタイプは、intに変換され、 IF(RES == 0 ){ 失敗失敗1 + =。; // perfail =(フロート)が失敗/ M; // それがために外側のループ内に配置しなければならないので、各時間に対して一度実行されるループにここで生じ、故障の確率を獲得取得 } 他 IF(RES 1 == ){ まず =最初+ 1 ; } そう IF(RES == 2 = SECOND + 1。 SECOND ; } そうでなければ{ THIRD = THIRD + 1 ; } } 最後に{ response.close(); } } perfail =(フロート)が失敗/ M; // 故障の当選確率を取得 perfirst =(フロート)最初/ M; persecond = (フロート)SECOND / M; perthird =(フロート)THIRD / M; のSystem.out.println( "当選番号------- --------"); のSystem.out.println( +「勝利数が失敗」失敗) のSystem.out.println(「回数の最初の賞」+ ファースト) のSystem.out.println(「第二賞番号が"+である)、SECOND; のSystem.out.println( "の数が第三の賞"+ THIRD); のSystem.out.println( "当選確率------- -------- " ); のSystem.out.println( "勝利の故障確率は"+ perfail) のSystem.out.println( "の最初の賞の確率"+ perfirst) のSystem.out.println( "第二賞「+の確率persecond) のSystem.out.println(」第三の入賞確率は、「+である)perthird。 } }
3.結果
testNG.xml実施形態のための経路に配置され、実行することができます。次のように要約参照し、要求インタフェース1000は、各メソッドの実行要求100、実行方法10においては、各方法の結果は、次のとおり
【TestNGの】ランニング:
D:\ krplus-APIテスト\テストケース\テストケース宝くじ\ \ tesNG.XML
------- --------ウィニング周波数と
勝利16に障害の数
最初の賞を数が2で
9回の第二賞
番号73で3位に
------- --------当選確率
障害を獲得する確率は0.16であった
最初の賞の確率0.02
の確率は0.09秒であった賞
0.73の入賞確率で
と比較して、設計と確率の後に!
練習の過程で問題の可能性が見つかり、このインタフェースのテストのインタフェースすることができます見つけました。
1.まず賞金、でも1000年実行している場合は、受賞者の数は、開発は、コードを書き換えるによる完成されていない、その後ので、0であります
2.スロー実行時例外、以下のように、問題を有することが判明し、単一のインタフェースを実行します。
しかし、それはまだ非常に便利であるO(∩_∩)サハラ〜Oではありません!
もちろん、ラッフルの後ろに知っている特定の分析の必要性の特定の状況では、さえデザインのようになります〜
さらに加えて、マルチスレッドを使用するtesNG良い例を提供し、参照 http://blog.csdn.net/manchester117/article/details/7867940