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

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

[[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開発者の皆さん、こちらをお読みください: 主流のモバイルディープラーニングフレームワークの包括的なレビュー

PCと比較すると、モバイルデバイスは携帯性に優れており、普及率も高くなっています。近年、モバイルデバ...

メールを受け取りましたか? GPT-3.5-Turbo-Instructがリリースされ、マルチモーダル大型モデルGobiも公開されました

今月初め、OpenAIは初の開発者会議「OpenAI DevDay」を2か月後に開催することを公式発...

米国政府が警告: ​​ChatGPT は重大なセキュリティリスクをもたらす

最近、米国連邦政府は、ユーザーはChatGPTのサイバーセキュリティリスク、特にフィッシングやマルウ...

...

GPT-4は人間が92点取れる質問に対して15点しか取れない。テストがアップグレードされると、すべての大きなモデルが露呈する。

GPT-4は誕生以来、さまざまな試験(ベンチマーク)で高得点を獲得する「優秀な生徒」でした。しかし...

...

もう感情を隠せない?歩く姿勢からAIがわかる!

歩き方は人それぞれ違います。歩き方は、その時々の気分など、あなたに関する秘密を明らかにします。たとえ...

...

推薦システムの主なアルゴリズムの概要とYoutubeのディープラーニング推薦アルゴリズムの例

協調フィルタリング協調フィルタリング (CF) とそのバリエーションは、最も一般的に使用される推奨ア...

ビジネスに適したRPAソフトウェアの選び方

[[407899]] [51CTO.com クイック翻訳]研究によると、企業の従業員がより生産的な仕...

ファーウェイ、次世代スマート製品戦略と新+AIシリーズ製品を発表

[中国、上海、2019年9月18日] ファーウェイはHUAWEI CONNECT 2019で、Eng...

李碩:AIは産業知能の波を促進する

2020年12月29日、2020年産業インターネットイノベーション大会(第4回)が盛大に開幕しました...

人工知能を使って人間の労働を監督すると、技術的でない困難に直面する

リモートワークの標準化により、クラウド監視ソフトウェア市場が生まれました。最近、Enaible とい...

シティグループは5年以内に1万人の雇用を人工知能で置き換える計画

[[233047]]フィナンシャル・タイムズによると、シティグループは5年以内に投資銀行部門の技術・...