成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

功能測試用例自動生成算法 Pairwise

開發 前端 算法
根據數學統計分析,73%的缺陷(單因子是35%,雙因子是38%)是由單因子或2個因子相互作用產生的。19%的缺陷是由3個因子相互作用產生的。也就是說,大多數的bug都是條件的兩兩組合造成的。

[[433685]]

Pairwise算法是什么

對于以下測試場景:

  • 瀏覽器:M,O,P
  • 操作平臺:W(windows),L(linux),i(ios)
  • 語言:C(chinese),E(english)

該如何設計功能測試用例呢?

根據數學統計分析,73%的缺陷(單因子是35%,雙因子是38%)是由單因子或2個因子相互作用產生的。19%的缺陷是由3個因子相互作用產生的。也就是說,大多數的bug都是條件的兩兩組合造成的。

Pairwise算法是L. L. Thurstone在1927年首先提出來的,他是美國的一位心理統計學家。Pairwise算法基于兩兩組合,過濾出性價比高的用例集。它的思路是:如果某一組用例的兩兩組合結果,在其他組合中均出現,就刪除該組用例,從而精簡用例。

對于上述測試場景,可以通過笛卡爾積設計18條兩兩組合的測試用例:

  1. 1,M W C 
  2. 2,M W E 
  3. 3,M L C 
  4. 4,M L E 
  5. 5,M I C 
  6. 6,M I E 
  7. 7,O W C 
  8. 8,O W E 
  9. 9,O L C 
  10. 10,O L E 
  11. 11,O I C 
  12. 12,O I E 
  13. 13,P W C 
  14. 14,P W E 
  15. 15,P L C 
  16. 16,P L E 
  17. 17,P I C 
  18. 18,P I E 

對于第18條用例P I E來說,兩兩組合是PI ,PE ,IE,PI在17號,PE在16號,IE在12號出現過,所以第18條用例可以過濾掉。按照這個算法繼續過濾,最終剩下9條用例:

  1. 1,M W C 
  2. 4,M L E 
  3. 6,M I E 
  4. 7,O W E 
  5. 9,O L C 
  6. 11,O I C 
  7. 14,P W E 
  8. 15,P L C 
  9. 17,P I C 

用例減少了50%!而且維度越多越明顯,當有10個維度的時候4*4*4*4*3*3*3*2*2*2=55296個測試case,pairwise為24個,是原始測試用例規模的0.04%。

Python實現

源碼已上傳:https://github.com/dongfanger/python-tools/blob/main/pairwise.py

  1. #!/usr/bin/python 
  2. # encoding=utf-8 
  3.  
  4. ""
  5. @Author  :  Don 
  6. @Date    :  2021/11/03 20:34 
  7. @Desc    :   
  8. ""
  9.  
  10. import copy 
  11. import itertools 
  12. from sys import stdout 
  13.  
  14. from loguru import logger 
  15.  
  16.  
  17. def parewise(option): 
  18.     """pairwise算法""" 
  19.     cp = []  # 笛卡爾積 
  20.     s = []  # 兩兩拆分 
  21.     for x in eval('itertools.product' + str(tuple(option))): 
  22.         cp.append(x) 
  23.         s.append([i for i in itertools.combinations(x, 2)]) 
  24.     logger.info('笛卡爾積:%s' % len(cp)) 
  25.     del_row = [] 
  26.     bar(0) 
  27.     s2 = copy.deepcopy(s) 
  28.     for i in range(len(s)):  # 對每行用例進行匹配 
  29.         if (i % 100) == 0 or i == len(s) - 1: 
  30.             bar(int(100 * i / (len(s) - 1))) 
  31.         t = 0 
  32.         for j in range(len(s[i])):  # 對每行用例的兩兩拆分進行判斷,是否出現在其他行 
  33.             flag = False 
  34.             for i2 in [x for x in range(len(s2)) if s2[x] != s[i]]:  # 找同一列 
  35.                 if s[i][j] == s2[i2][j]: 
  36.                     t = t + 1 
  37.                     flag = True 
  38.                     break 
  39.             if not flag:  # 同一列沒找到,不用找剩余列了 
  40.                 break 
  41.         if t == len(s[i]): 
  42.             del_row.append(i) 
  43.             s2.remove(s[i]) 
  44.     res = [cp[i] for i in range(len(cp)) if i not in del_row] 
  45.     logger.info('過濾后:%s' % len(res)) 
  46.     return res 
  47.  
  48.  
  49. def bar(i): 
  50.     """進度條""" 
  51.     c = int(i / 10) 
  52.     jd = '\r %2d%% [%s%s]' 
  53.     a = '■' * c 
  54.     b = '□' * (10 - c) 
  55.     msg = jd % (i, a, b) 
  56.     stdout.write(msg) 
  57.     stdout.flush() 
  58.  
  59.  
  60. if __name__ == '__main__'
  61.     pl = [['M''O''P'], ['W''L''I'], ['C''E']] 
  62.     a = parewise(pl) 
  63.     print() 
  64.     for i in a: 
  65.         print(i) 

輸出結果:

  1. 100% [■■■■■■■■■■] 
  2. ('M''W''E'
  3. ('M''L''E'
  4. ('M''I''C'
  5. ('O''W''E'
  6. ('O''L''E'
  7. ('O''I''C'
  8. ('P''W''C'
  9. ('P''L''C'
  10. ('P''I''E'
  11. 2021-11-07 11:38:56.850 | INFO     | __main__:parewise:24 - 笛卡爾積:18 
  12. 2021-11-07 11:38:56.850 | INFO     | __main__:parewise:45 - 過濾后:9 

參考資料:

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

 

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

 

責任編輯:武曉燕 來源: dongfanger
相關推薦

2025-05-27 01:45:00

DeepSeekPython測試

2011-09-01 10:05:24

PhoneGap應用程序測試

2021-03-04 15:43:29

前端測試工具開發

2011-05-16 15:18:18

測試用例

2011-06-08 17:23:12

測試用例

2021-05-26 08:51:50

漏洞漏洞掃描符號執行

2022-01-14 11:51:00

測試工具自動化

2022-05-10 14:54:13

驗收標準測試用例

2021-12-22 10:19:47

鴻蒙HarmonyOS應用

2011-10-11 09:56:59

PhoneGapSelenium

2011-05-16 15:09:20

測試用例

2011-04-18 10:46:39

接口測試

2011-03-28 14:57:58

不重復隨機數列生成

2011-05-16 14:54:12

測試用例

2022-01-19 17:48:57

測試用例開發

2020-08-25 08:03:59

測試Sharness結構

2011-07-04 18:06:52

測試用例

2023-06-09 15:24:50

UiTest接口鴻蒙

2011-12-23 17:03:29

性能測試用例設計

2022-06-13 09:00:00

Selenium測試Web
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩在线视频精品 | 国产精品自产拍 | 国产乱码久久久久久 | 欧美日韩午夜精品 | 国产成人免费视频 | 日韩国产免费观看 | 国产98色在线 | 日韩 | 中文字字幕一区二区三区四区五区 | 久久综合久久久 | 欧美久久精品 | 国产精品久久久久久亚洲调教 | 日本三级播放 | 网站黄色在线免费观看 | 艹逼网| 天天干天天爽 | 日韩视频在线播放 | 日韩在线视频一区二区三区 | 色婷婷av777 av免费网站在线 | 91久久精品| 国产999精品久久久影片官网 | 久久av网 | 在线免费小视频 | 亚洲免费三区 | 国产精品福利网站 | 一区精品国产欧美在线 | 不用播放器看的av | 91精品国产综合久久久久久漫画 | 激情91| 97精品国产| 亚洲高清在线播放 | 福利社午夜影院 | 黄色成人亚洲 | 国产精品视频一区二区三区不卡 | 亚洲高清在线 | 亚洲高清视频在线观看 | 亚洲一区二区三区四区av | 久久神马| 久久精品亚洲国产 | 久久婷婷麻豆国产91天堂 | 精品国产第一区二区三区 | 一区二区亚洲 |