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

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

[[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

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

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

ブログ    

推薦する

将来、ロボットが私たちを支配するようになるのでしょうか?

[[431476]] 「ターミネーター」のように、観た後に私に大きな影響を与える映画はほとんどあり...

Github が絶賛: モザイクテキスト = 無意味、AI があなたの思考をすべて見抜く、オープンソースに

「この写真をフォトショップで加工しましょう!」 「いいですよ、でもこの段落は検閲しないと面倒なことに...

冬季オリンピックの AI: 氷と雪の世界における 5 つの「テクノロジーの花」

2022年2月4日、第24回冬季オリンピックが北京で正式に開幕しました。 2008年の「一つの夢」...

...

モノのインターネット向けのデータストリーミング、AI、機械学習プラットフォームを構築する方法

[[342159]]今日の IoT のユースケースでは、デバイスが生成した大量のデータを分析したり、...

機械学習と脳科学が次の10年間の教育発展をリードする

[51CTO.comよりオリジナル記事] 昨今人気の技術として、産業界における人工知能の応用が徐々に...

3Wイノベーションフェスティバル:先進的な起業家のアイデアが古都西安に流入

最近、西安で3Wイノベーションフェスティバルが開催されました。西安起業・イノベーション週間の代表的な...

Googleが検索エンジンアルゴリズムを調整:HTTPSサイトのランキングが上昇

[[117728]] Googleは公式ブログで、検索エンジンのアルゴリズムを調整し、HTTPS暗号...

生成的敵対ネットワーク (GAN) の未解決の 7 つの謎

いくつかの指標によれば、生成的敵対的ネットワーク (GAN) の研究は過去 2 年間で大きな進歩を遂...

AIがクリエイティブな動画を自動生成: ビッグモデルを活用する方法

著者 | 崔昊レビュー | Chonglouまとめこの記事では、大規模な言語モデルと AI ビデオ生...

スタンフォード大学の非接触型デバイスは、アクチュエータをスリーブに「縫い付ける」ことで、タッチ情報を遠隔で送信できる。

世界的なパンデミックは2年近く続いており、リモートワークで何日も過ごし、他の人との物理的な接触を切望...

アルゴリズムの改善とハードウェアの反復、どちらがより収益性が高いでしょうか? MITの最新の研究結果がこの答えを提供している

コンピューターが登場する前には、アルゴリズムがありました。コンピュータの誕生により、コンピュータの強...

人工知能の今後の発展における3つの大きなトレンド、それぞれが驚きである

人工知能は、知能機械や機械知能とも呼ばれ、人間が作った機械が示す知能を指します。人工知能は、医療、テ...

15人の専門家が予測:AIは2024年にサイバーセキュリティのルールを変える

AI技術の飛躍的な発展に伴い、攻撃者はAIの武器化を加速させ、ソーシャルエンジニアリング技術と組み合...