簡易檢索 / 詳目顯示

研究生: 盧俊年
Lo, Jun-Nian
論文名稱: 網頁前端負載測試與後端負載混合模式之評估研究
An Empirical Study on Web GUI Load Testing and the Hybrid with HTTP Requests
指導教授: 李信杰
Lee, Shin-Jie
學位類別: 碩士
Master
系所名稱: 電機資訊學院 - 資訊工程學系
Department of Computer Science and Information Engineering
論文出版年: 2023
畢業學年度: 111
語文別: 英文
論文頁數: 66
中文關鍵詞: 網頁自動化測試網頁壓力測試整合測試報告
外文關鍵詞: Web automation testing, Web load testing, Integrations testing report
相關次數: 點閱:110下載:15
分享至:
查詢本校圖書館目錄 查詢臺灣博碩士論文知識加值系統 勘誤回報
  • 現今大多數服務都以網頁作為其服務的形式,因此需要對於網頁進行負載測試,以確保使用者有個完善的體驗。
    本篇研究實作了一個可執行前端測試的JMeter plugin,使得可藉由JMeter 完善的測試計畫功能,來執行純前端的壓力測試。然而純前端壓測需要大量的硬體資源,才能製造出對於網頁巨大的流量。因此本篇論文也實作3項實驗分別比較純前端負載測試,純後端負載測試和混合前兩者的混合負載測試。實驗結果顯示百分位數90的案例後端負載測試僅有響應時間1.286秒,但是有個測試案例的前端則顯示TTFB (Time To First Byte) 的時間為3秒之久,這被視為「欠佳」。這顯示了混合負載測試可以用相較前端成本較低的後端來造成網頁的負載,並且發現後端負載測試沒辦法發現的前端使用者體驗之問題。

    Nowadays, webpages are widely used for service delivery, necessitating load testing to ensure an optimal user experience. This research introduces a JMeter plugin for frontend testing, enabling comprehensive load tests. However, frontend load tests require significant hardware resources to generate substantial traffic. The paper conducts three experiments comparing pure frontend, pure backend, and hybrid load tests. Results show a 1.286-second response time in the 90th percentile for backend load tests, while one frontend test case exhibits a 3-second TTFB, indicating poor performance. Hybrid load testing proves cost-effective for simulating webpage loads and identifying front-end user experience issues that may be missed by back-end tests.

    中文摘要 i Abstract ii Acknowledgement iii Table of Contents iv List of Tables vi List of Figures vii List of Listing x Chapter 1 Introduction 1 Chapter 2 Background and Related Work 2 2.1 Selenium Grid 4 2 2.2 Rapi Recorder 3 2.3 Rapi Runner 4 2.4 JMeter 4 2.5 Docker 5 2.6 Kubernetes 5 2.7 Prometheus 6 2.8 Grafana 7 2.9 Web Vitals 7 2.10 Types of Load Testing 9 2.11 Related Work 9 Chapter 3 Load Testing Strategies and Environment Setup for Frontend, Backend, and Hybrid Load Testing 12 3.1 How to Prepare a Load Testing Test Plan for a Website 13 3.1.1 Comparing Frontend, Backend, and Hybrid performance testing 14 3.2 Compare HTTP amount 14 3.3 Building a JMeter Plugin 16 3.3.1 Sampler 16 3.3.2 Config – Rapi Config 17 3.3.3 Config – Browser Config 17 3.3.4 Reporter 17 3.3.5 Overview of jmeter-rapi-plugin 19 3.3.6 How to use jmeter-rapi-plugin 19 3.4 Building a Distributed Frontend Load Testing test environment 21 3.4.1 Overview of Architecture 21 3.4.2 Deploying JMeter to Worker Nodes for load testing 22 3.5 Build Website Environment 26 3.6 Compare Different Test Strategies 29 Chapter 4 Experiments 31 4.1 Experiment Environment 31 4.2 Test Case Design 34 4.3 Experiment 1: Pure Frontend Load Testing 35 4.4 Experiment 2: Pure Backend Load Test 43 4.5 Experiment 3: Hybrid Load Test 47 4.5.1 Hybrid Test Result 48 4.5.2 Analyze the Reason for High Response Time 52 4.5.3 Analyze the Reason for Test Case 2 Error 54 4.5.4 Analyze Frontend Web Vitals Result Compare with Backend Result 57 Chapter 5 Conclusion 62 References 63

    [1] S. Ivanova and G. Georgiev, "Using modern web frameworks when developing an education application: A practical approach," 2019 42nd International Convention on Information and Communication Technology, Electronics and Microelectronics (MIPRO), pp. 1485-1491, 2019.
    [2] R. Aganwal, B. Ghosh, S. Banerjee and S. Kishore Pal, "Ensuring website quality: A case study," Proceedings of the 2000 IEEE International Conference on Management of Innovation and Technology. ICMIT 2000. 'Management in the 21st Century' (Cat. No.00EX457).
    [3] G. A. Stout, "Testing a website: Best practices.," August 2001. [Online]. Available: https://www.heromotocorp.com/en-in/uploads/Annual_Reports/pdf/20130315113443-pdf-68.pdf. [Accessed 29 July 2023].
    [4] Kunhua Zhu, Junhui Fu and Yancui Li, "Research the performance testing and Performance Improvement Strategy in web application," 2010 2nd International Conference on Education Technology and Computer, vol. 2, pp. V2-328-V2-332, 2010.
    [5] G. Meszaros, "Agile regression testing using record & playback," Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, pp. 353-360, 2003.
    [6] M. Leotta, D. Clerissi, F. Ricca and P. Tonella, "Capture-replay vs. Programmable web testing: An empirical assessment during Test Case Evolution," 2013 20th Working Conference on Reverse Engineering (WCRE), pp. 272-281, 2013.
    [7] "Selenium Grid 4," [Online]. Available: https://www.selenium.dev/documentation/grid/. [Accessed 3 July 2023].
    [8] "Rapi Recorder," [Online]. Available: https://github.com/RapiTest/rapi. [Accessed 5 July 2023].
    [9] "Rapi Runner Documentation," [Online]. Available: https://hackmd.io/@Rapi/rapi-runner. [Accessed 5 July 2023].
    [10] "Apache JMeter," [Online]. Available: https://jmeter.apache.org/. [Accessed 5 July 2023].
    [11] "Apache JMeter Distributed Testing Step-by-step," [Online]. Available: https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html. [Accessed 5 July 2023].
    [12] "Apache JMeter HTTP(S) Test Script Recorder," [Online]. Available: https://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.html. [Accessed 5 July 2023].
    [13] S. Matam and J. Jain, "JMeter Test Script Recorder," in Pro Apache JMeter, Apress, Berkeley, CA, 2017, pp. 25-34.
    [14] B. B. a. B. H. J. a. A. M. Rad, "An introduction to docker and analysis of its performance," International Journal of Computer Science and Network Security (IJCSNS), vol. 17, p. 228, 2017.
    [15] C. Anderson, "Docker [Software engineering]," IEEE Software, vol. 32, pp. 102-c3, 2015.
    [16] S. Singh and S. Nirmala, "Containers & Docker: Emerging roles & future of cloud technology," 2016 2nd International Conference on Applied and Theoretical Computing and Communication Technology (iCATccT), pp. 804-807, 2016.
    [17] "Kubernetes," [Online]. Available: https://kubernetes.io/. [Accessed 3 July 2023].
    [18] D. Bernstein, "Containers and Cloud: From LXC to Docker to Kubernetes," IEEE Cloud Computing, vol. 1, pp. 81-84, 2014.
    [19] "Prometheus," [Online]. Available: https://prometheus.io/. [Accessed 5 July 2023].
    [20] "Grafana," [Online]. Available: https://grafana.com/. [Accessed 19 July 2023].
    [21] P. Walton, "Web Vitals," [Online]. Available: https://web.dev/vitals/. [Accessed 15 July 2023].
    [22] "First Input Delay (FID)," [Online]. Available: https://web.dev/fid/. [Accessed 16 July 2023].
    [23] "Largest Contentful Paint (LCP)," [Online]. Available: https://web.dev/lcp/. [Accessed 16 July 2023].
    [24] "Cumulative Layout Shift (CLS)," [Online]. Available: https://web.dev/cls/. [Accessed 16 July 2023].
    [25] "First Contentful Paint (FCP)," [Online]. Available: https://web.dev/fcp/. [Accessed 16 July 2023].
    [26] "Time to First Byte (TTFB)," [Online]. Available: https://web.dev/ttfb/. [Accessed 16 July 2023].
    [27] "Core Web Vitals FAQ on percentiles | Erwin Hofman," [Online]. Available: https://www.erwinhofman.com/core-web-vitals-faq/percentiles/. [Accessed 16 July 2023].
    [28] "Defining the Core Web Vitals metrics thresholds," [Online]. Available: https://web.dev/defining-core-web-vitals-thresholds/. [Accessed 16 July 2023].
    [29] "GoogleChrome/web-vitals: Essential metrics for a healthy site.," [Online]. Available: https://github.com/GoogleChrome/web-vitals. [Accessed 16 July 2023].
    [30] "Understanding the Different Types of Load Tests: Goals and Recommendations," [Online]. Available: https://k6.io/docs/test-types/load-test-types/. [Accessed 16 July 2023].
    [31] A. Pokhilko, "undera/jmeter-plugins-webdriver: WebDriver Components for Apache JMeter," [Online]. Available: https://github.com/undera/jmeter-plugins-webdriver. [Accessed 29 July 2023].
    [32] "Arrivals Thread Group," [Online]. Available: https://jmeter-plugins.org/wiki/ArrivalsThreadGroup/. [Accessed 6 July 2023].
    [33] "Free-Form Arrivals Thread Group," [Online]. Available: https://jmeter-plugins.org/wiki/FreeFormArrivalsThreadGroup/. [Accessed 6 July 2023].
    [34] "Concurrency Thread Group," [Online]. Available: https://jmeter-plugins.org/wiki/ConcurrencyThreadGroup/. [Accessed 7 July 2023].
    [35] "Usage Statistics and Market Share of Content Management Systems, July 2023," [Online]. Available: https://w3techs.com/technologies/overview/content_management. [Accessed 28 July 2023].
    [36] "WordPress packaged by Bitnami," [Online]. Available: https://bitnami.com/stack/wordpress/helm. [Accessed 2023 July 4].
    [37] P. f. W. p. b. Bitnami. [Online]. Available: https://github.com/bitnami/charts/tree/main/bitnami/wordpress#parameters. [Accessed 5 July 2023].
    [38] I. Rancher Labs, "Local Path Provisioner," [Online]. Available: https://github.com/rancher/local-path-provisioner. [Accessed 5 July 2023].
    [39] "Apache MPM prefork," [Online]. Available: https://httpd.apache.org/docs/2.4/mod/prefork.html. [Accessed 10 July 2023].
    [40] "MaxRequestWorkers Directive," [Online]. Available: https://httpd.apache.org/docs/2.4/mod/mpm_common.html#maxrequestworkers. [Accessed 10 July 2023].
    [41] "What are Quality of Service (QoS) Classes in Kubernetes," [Online]. Available: https://medium.com/google-cloud/quality-of-service-class-qos-in-kubernetes-bb76a89eb2c6. [Accessed 9 July 2023].
    [42] "MetalLB," [Online]. Available: https://metallb.universe.tf/. [Accessed 7 July 2023].
    [43] "Concurrency Thread Group," [Online]. Available: https://jmeter-plugins.org/wiki/ConcurrencyThreadGroup/. [Accessed 9 July 2023].

    下載圖示 校內:立即公開
    校外:立即公開
    QR CODE