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

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

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

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

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

ブログ    
ブログ    
ブログ    

推薦する

...

数人のアメリカ人作家が共同で書簡を書き、AIが著作権のあるコンテンツを使って作品を生み出す場合、著者に補償を与えるよう求めた。

アクションネットワークによると、7月19日、約8,000人の作家がニューヨーク作家組合宛ての公開書簡...

...

第2世代のビッグデータの偏りを打破するには、アルゴリズムの公平性が必要

ビッグデータのシナリオでは、ますます多くのトランザクションがアルゴリズムを通じて完了します。インター...

...

AIが生産性と賃金に与える影響

人工知能は、日常的なタスクを自動化することで生産性を向上させる機会を提供します。この記事では、人工知...

なぜほとんどの経営幹部は自社がAI導入の準備ができていないと考えているのか

この分野の専門家は、AI技術が従業員に大きな変化をもたらし、企業のビジネスのやり方を変えていると述べ...

これほどリアルな効果を生み出すために、原作者を何人食べなければならなかったのですか?文生図はビジュアル「盗作」の疑い

少し前、ニューヨーク・タイムズ紙は、OpenAI が自社のコンテンツを人工知能開発のために違法に使用...

医療提供者はなぜインテリジェントオートメーションに投資する必要があるのでしょうか?

インテリジェント オートメーション (IA) は、人工知能とオートメーションを組み合わせたものです。...

2018年は人類の墓掘り元年となるのか?人工知能のせいではない

2018年が近づいてきました。2018年のテーマを大胆に予想すると、間違いなく人工知能が人気のテーマ...

血みどろの惨劇を突破できるのは誰か?自動運転プレイヤーが腕前を披露!

自動運転は爆発的な成長を遂げている最先端分野です。水平的な視点で見ると、BATを含むインターネット大...

AI時代が到来。プロの写真家は淘汰されるのか?

テクノロジー業界では、AI の進化により、プロの写真家を含む多くの仕事が置き換えられるだろうという意...

マスク氏の非嫡出双子が初めて暴露される!ニューラリンクの女性幹部に付き添われ、AIの終焉を憂いながら赤ちゃんを散歩させていた

マスク氏の非嫡出双子が初めて世間に公開される!最近、「スティーブ・ジョブズ」の著者であり伝記作家でも...

...

2024年には、AI PCが目を見張るほど登場するでしょう。企業や消費者はどのように選択すべきでしょうか?

先日開催されたCES 2024カンファレンスでは、AI PC(人工知能コンピュータ)のコンセプトや製...