機能テストケース自動生成アルゴリズム ペアワイズ

機能テストケース自動生成アルゴリズム ペアワイズ

[[433685]]

ペアワイズアルゴリズムとは何ですか?

次のテストシナリオの場合:

  • ブラウザ: M、O、P
  • オペレーティング プラットフォーム: W(Windows)、L(Linux)、i(iOS)
  • 言語: C (中国語)、E (英語)

機能テストケースを設計するにはどうすればいいですか?

数学的統計分析によると、欠陥の 73% (単一要因の場合は 35%、二重要因の場合は 38%) は、単一要因または 2 つの要因の相互作用によって発生します。欠陥の 19% は 3 つの要因の相互作用によって発生しました。つまり、ほとんどのバグは 2 つの条件の組み合わせによって発生します。

ペアワイズアルゴリズムは、1927 年にアメリカの心理統計学者 LL サーストンによって初めて提案されました。ペアワイズ アルゴリズムは、ペアワイズの組み合わせに基づいてコスト効率の高いユースケースをフィルター処理します。考え方は、ユースケースのグループの双方向の組み合わせの結果が他の組み合わせに表示される場合は、そのユースケースのグループを削除してユースケースを合理化するというものです。

上記のテスト シナリオでは、直積によって 18 個のテスト ケースを設計できます。

  1. 1、MWC
  2. 2. M W E
  3. 3. M L C
  4. 4. M L E
  5. 5. ミック
  6. 6. M I E
  7. 7. OWC
  8. 8. 私たちは
  9. 9. OL C
  10. 10. オレ
  11. 11、OIC
  12. 12. ああ
  13. 13. PWC
  14. 14. PWE
  15. 15、PLC
  16. 16. P L E
  17. 17、P I C
  18. 18. パイ

18 番目のユースケース PIE の場合、ペアワイズの組み合わせは PI、PE、IE です。PI は 17 日目に、PE は 16 日目に、IE は 12 日目に出現するため、18 番目のユースケースは除外できます。このアルゴリズムに従ってフィルタリングを続けると、最終的に 9 つのユースケースが残ります。

  1. 1、MWC
  2. 4. M L E
  3. 6. M I E
  4. 7. 私たちは
  5. 9. OLC
  6. 11、OIC
  7. 14. PWE
  8. 15、PLC
  9. 17、P I C

テストケースの数が 50% 削減されました。次元が増えるほど、その効果は顕著になります。次元が 10 の場合、テストケースは 4*4*4*4*3*3*3*2*2*2=55296 個、ペアワイズでは 24 個となり、これは元のテストケース サイズの 0.04% に相当します。

Python実装

ソースコードはアップロードされています: https://github.com/dongfanger/python-tools/blob/main/pairwise.py

  1. #!/usr/bin/python
  2. # エンコーディング=utf-8
  3.  
  4. 「」 「
  5. @著者: ドン
  6. @日付: 2021/11/03 20:34
  7. @説明:
  8. 「」 「
  9.  
  10. インポートコピー
  11. itertoolsをインポートする
  12. sysからstdoutをインポート
  13.  
  14. loguruからインポートロガー
  15.  
  16.  
  17. def parewise(オプション):
  18. ペアワイズアルゴリズム  
  19. cp = [] # デカルト積
  20. s = [] # 2つを2つに分割
  21. eval( 'itertools.product' + str(tuple( option ))内のxについて):
  22. cp.append(x)
  23. s.append([i for i in itertools.combinations(x, 2)])
  24. logger.info( '直積: %s' % len(cp))
  25. 行を削除する = []
  26. バー(0)
  27. s2 = コピー.ディープコピー(s)
  28. for i in range(len(s): # テストケースの各行に一致します
  29. (i % 100) == 0またはi == len(s) - 1 の場合:
  30. バー( int (100 * i / (len(s) - 1)))
  31. t = 0
  32. for j in range(len(s[i])): # ユースケースの各行を2つに分割して、他の行に現れるかどうかを確認します。
  33. フラグ = False  
  34. for i2 in [x for x in range(len(s2)) if s2[x] != s[i]]: # 同じ列を探す
  35. s[i][j] == s2[i2][j]の場合:
  36. t = t + 1
  37. フラグ = True  
  38. 壊す
  39. フラグがない場合: # 同じ列が見つからないため、残りの列を検索する必要はありません
  40. 壊す
  41. t == len(s[i])の場合:
  42. del_row.append(i)
  43. s2.削除(s[i])
  44. res = [cp[i] irange(len(cp))内にある場合、iがそうでない場合  del_row]
  45. logger.info( 'フィルタリング後: %s' % len(res))
  46. 戻り
  47.  
  48.  
  49. 定義バー(i):
  50. 進捗バー  
  51. c =整数(i / 10)
  52. jd = '\r %2d%% [%s%s]'  
  53. a = '■' * c
  54. b = '□' * (10 - c)
  55. メッセージ = jd % (i, a, b)
  56. stdout.write(メッセージ)
  57. stdout.flush()
  58.  
  59.  
  60. __name__ == '__main__'の場合:
  61. pl = [[ 'M' 'O' 'P' ], [ 'W' 'L' 'I' ], [ 'C' 'E' ]]
  62. a = ペアワイズ(pl)
  63. 印刷()
  64. ai場合:
  65. 印刷(i)

出力:

  1. 100% [■■■■■■■■■■]
  2. ( 'M' 'W' 'E' )
  3. ( 'M' 'L' 'E' )
  4. 'M' 'I' 'C'
  5. '借りいる'
  6. ( 'O' 'L' 'E' )
  7. 「お」 「い」 「は」
  8. ( 'P' 'W' 'C' )
  9. ( 'P' 'L' 'C' )
  10. ( 'P' 'I' 'E' )
  11. 2021-11-07 11:38:56.850 | 情報 | __main__:parewise:24 - デカルト積:18
  12. 2021-11-07 11:38:56.850 | 情報 | __main__:parewise:45 - フィルター済み:9

参考文献:

https://blog.csdn.net/ztf312/article/details/78792906

https://www.cnblogs.com/df888/p/11747616.html

<<:  機械学習による分類とその応用を理解するための図

>>:  地球外文明は人間ではなく、人工知能かもしれません!なぜ科学者はこう言うのでしょうか?

ブログ    
ブログ    
ブログ    

推薦する

TOP50 人工知能のケーススタディ: AI は単なる誇大宣伝ではなく、努力によって実現される

AIは自慢するだけでなく、実践を通じて達成されます。コンセプトがどんなに優れていても、結果が重要です...

2021年、ドローン配送は高速であるだけでなく、安定している必要がある

中国国家郵政局が2020年10月に郵便業界標準「ドローン速達サービス仕様」について通知したことを覚え...

...

...

ビル・ゲイツがダボス会議でAIについて語る: プログラマーはAIを使って生産性を50%向上させた

ダボスで開催された世界経済フォーラムで、マイクロソフトの元社長兼CEOのビル・ゲイツ氏が、ヤフー・フ...

大規模グラフニューラルネットワークの応用と最新のパラダイムの探究

1. 大規模グラフメモリ/計算問題を解決するための3つのパラダイム2年前に作成したチュートリアルでは...

GPT-5 が誕生しました。50,000 個の H100 が必要です。世界のH100総需要は43万個、Nvidia GPUは品薄の嵐に

「誰がどれだけの H100 を受け取るのか、そしていつ H100 を受け取るのかは、シリコンバレーで...

...

ちょうど今、人工知能に関する大きなニュースが発表されました

中国における人工知能熱の高まりは、テクノロジーとビジネスによって推進されているだけでなく、政府の推進...

私の国は自動運転とスマート輸送のパイロットプロジェクトを実施します

運輸省によると、運輸省はこのほど「自動運転とインテリジェント船舶の試験運用を組織することに関する通知...

人工知能が下水道を清掃、清掃員はようやく休憩できる

2016年以来、人工知能は研究室から出て正式に人々の生活に入りました。これは人工知能技術の発展におけ...

...

人工知能の登場により、将来的にこれらの 6 つの職業は失業する可能性があります。あなたは準備ができていますか?

科学技術の発展とビッグデータの登場により、人工知能は私たちの生活にますます近づいてきました。しかし、...

海外の詐欺師はAIを使ってテイラー・スウィフトの声を合成し、「無料のキッチン用品」の広告を偽造して詐欺行為を行った。

ニューヨーク・タイムズ紙は現地時間1月10日、ここ数週間、フェイスブックなどのプラットフォームに、ア...

LLM評価にArthur Benchを使用する方法を学ぶ

こんにちは、皆さん。私は Luga です。今日は、人工知能 (AI) エコシステムに関連するテクノロ...