1、業務分析:微信
兩種支付方式:1.銀聯刷卡支付(線下支付)、2.微信掃碼支付(線上支付),按照公司目前的交易訂單來源,銀聯刷卡支付:微信掃碼支付=3:2,因此在執行性能測試的時候,須要按照3:2的比例來測試,也就是說10條訂單,6條是刷卡支付,4條是掃碼支付。函數
2、if控制器元件:工具
在jmeter工具執行性能測試時,能夠用if控制器元件來實現,在條件中,添加上判斷代碼,判斷代碼是針對if控制器之下的每個可運行測試元件單獨評估的,要求全部的請求都要發到該控制器下,判斷語句才能生效,若是是同級的元件,是沒有做用的。性能
3、條件代碼設計: 測試
1.用__counter該函數能夠統計執行的次數。在測試的時候,我用了1個用戶,執行1秒鐘。成功請求57次:
spa
2.那麼業務要求3:2,57條總的數據,既要求34條數據是銀聯刷卡、23條是掃碼支付的。不少網上的代碼條件都是${__counter(true,)}%2==1||${__counter(true,)}%3==0,這個比例不對的,以下詳細解析:線程
1. 2. 3. 4. 5. 6. 7. 8. 9. 10 設計
知足條件的是1.3.5.6.7.9 餘4個知足3:2 3d
11. 12. 13. 14. 15. 16. 17. 18. 19. 20 blog
知足條件的是11.12.13.15.17.18.19 餘3個不知足3:2
21. 22. 23. 24. 25. 26. 27. 28. 29. 30
知足條件的是21.23.24.25.27.28.29.30 餘2不知足3:2
31. 32. 33. 34. 35. 36. 37. 38. 39. 40
知足條件的是31.33.35.36.37.39 餘4個知足3:2
41. 42. 43. 44. 45. 46. 47. 48. 49. 50
知足條件的是41.42.43.45.37.48.49 餘3個不知足3:2
51. 52. 53. 54. 55. 56. 57. 58. 59. 60
知足條件的是51.53.54.55.57.48.59.60 餘2不知足3:2
經過上面的數據,咱們發現該條件不知足業務的3:2需求。因此網上提供的是錯誤的。我本身寫了一個知足條件的,以下:
${__counter(true,)}%2==1||${__counter(true,)}%10==0
1. 2. 3. 4. 5. 6. 7. 8. 9. 10
知足條件的是1.3.5.7.9 .10 餘4個知足3:2
11. 12. 13. 14. 15. 16. 17. 18. 19. 20
知足條件的是11.13.15.17.19.20 餘4個知足3:2
21. 22. 23. 24. 25. 26. 27. 28. 29. 30
知足條件的是21.23.25.27.29.30 餘4個知足3:2
後面的數據都不用舉例了,這個條件是都能知足的。比例是3的條件已經寫好了,那麼很容易,咱們也能夠得出2的條件:
${__counter(true,)}%2==0&&${__counter(true,)}%10!==0
1. 2. 3. 4. 5. 6. 7. 8. 9. 10
知足條件的是2.4.6.8 餘6個知足3:2
11. 12. 13. 14. 15. 16. 17. 18. 19. 20
知足條件的是12.14.16.18 餘6個知足3:2
21. 22. 23. 24. 25. 26. 27. 28. 29. 30
知足條件的是22.24.26.28 餘6個知足3:2
4、執行測試:
場景、腳本以下:
場景設置的是10VU,運行10S,執行結果總的業務量比例是3:2,TPS得比例也是3:2,以下所示:
這裏只介紹if條件的使用,整個腳本的運行,看本身的需求,我這裏都是接口的測試,前面的文章有介紹,建議在測試的時候,使用的是同一腳本,個人2個腳本都是同樣的,腳本以下:
5、業務測試結果:
個人業務最終實現的結果以下3線下if控制器表明的是銀聯刷卡,2線上if控制器表明的是掃碼支付,測試的數據是3:2。請求都放到同一個線程組中,業務請求放到if控制器下。在沒有瓶頸的狀況下,該公式都是正確的,若是是有瓶頸,那麼公式測試出來的結果不必定知足。