Developing Cost-Effective Model-Based Techniques for GUI Testing

Luận án tiến sĩ về phát triển kỹ thuật kiểm thử GUI dựa trên mô hình hiệu quả chi phí. Nghiên cứu các phương pháp và công cụ kiểm thử giao diện người dùng.

Trường đại học

University of Maryland, College Park

Chuyên ngành

Computer Science

Người đăng

Ẩn danh

Thể loại

Dissertation

2006

166
4
0

Phí lưu trữ

45 Point

Mục lục chi tiết

ABSTRACT

ACKNOWLEDGMENTS

TABLE OF CONTENTS

1. CHƯƠNG 1: INTRODUCTION

1.1. What is a GUI?

1.2. GUI Testing Process

1.3. Challenges of GUI Testing

1.4. Existing Approaches and their Limitations

1.5. A New Continuous GUI Testing Process

1.6. Structure of the Dissertation

2. CHƯƠNG 2: BACKGROUND AND RELATED WORK

2.1. Event-flow Graphs

2.2. Test Case Generation

2.3. Model-based Approaches

2.4. Test Coverage Criteria

2.5. Rapid Feedback-based QA mechanisms

3. CHƯƠNG 3: A CONTINUOUS GUI TESTING PROCESS

3.1. Minimized Effective Event Context

3.2. Pilot Study - Understanding the MEEC

3.3. Step 1: Study Subjects

3.4. Step 2: Fault Seeding

3.5. Step 3: Test-Case Generation

3.6. Step 5: Studying Predecessor Events

3.7. Dissecting the MEEC

3.8. Threats to Validity

3.9. Event-Interaction Graph

3.10. Crash Test Cases

3.11. Feasibility Studies - Evaluating Crash Test Cases

3.11.1. Feasibility Study - Crash Testing on TerpOffice Applications

3.11.2. Feasibility Study - Crash Testing for Open-Source Applications

3.12. Designing Different Test Oracles

3.13. Evaluating the GUI Test Oracles

3.14. Modeling Cost and Fault Detection Effectiveness

6. CHƯƠNG 6: COMPREHENSIVE GUI TESTING

6.1. Experiment - Studying the Characteristics of a “Good” Comprehensive Test Suite

6.1.1. Part 1: Effect of Test Suite Size

6.1.2. Part 2: Effect of Test Case Length

6.1.3. Part 3: Effect of Event Composition

6.2. Experiment - Developing Test Oracles for Comprehensive Testing

7. CHƯƠNG 7: SUMMARY AND FUTURE WORK

7.1. Summary of Contributions

Bibliography

Tóm tắt

I. Tổng quan Tại sao Kiểm thử GUI hiệu quả lại quan trọng

Ngày nay, hầu hết người dùng phần mềm tương tác thông qua giao diện người dùng đồ họa (GUI). Nghiên cứu chỉ ra rằng GUI chiếm tới 45-60% tổng số dòng code của phần mềm. Vì vậy, việc đảm bảo tính chính xác của GUI là vô cùng quan trọng để đảm bảo tính đúng đắn của toàn bộ phần mềm. Mặc dù GUI đã trở nên phổ biến, nhưng việc kiểm thử GUI để đảm bảo chức năng vẫn còn là một lĩnh vực bị bỏ qua trong nghiên cứu. Các kỹ thuật kiểm thử GUI hiện tại tốn rất nhiều tài nguyên, chủ yếu là do GUI có không gian đầu vào rất lớn và thường xuyên thay đổi. Việc bỏ qua chất lượng của GUI có thể gây ảnh hưởng tiêu cực đến tất cả các phần mềm hiện đại.

1.1. Kiểm thử GUI Định nghĩa và các thành phần cơ bản

GUI là giao diện người dùng đồ họa. Nó bao gồm các thành phần như cửa sổ, menu, nút, thanh cuộn, hộp văn bản và biểu tượng. Người dùng tương tác với GUI bằng cách thực hiện các sự kiện trên các thành phần này, như nhấp vào nút, chọn mục menu và nhập văn bản. Các sự kiện này gây ra các thay đổi có thể dự đoán được đối với trạng thái của phần mềm. Các đặc điểm quan trọng của GUI bao gồm hướng đồ họa, đầu vào dựa trên sự kiện, các thành phần và thuộc tính của chúng. Vì GUI có thể được sử dụng làm giao diện cho nhiều loại ứng dụng phần mềm khác nhau, nên không gian của tất cả các GUI có thể là vô cùng lớn.

1.2. Các bước cần thiết trong quy trình Kiểm thử GUI

Thông thường, kiểm thử GUI bao gồm các nhiệm vụ sau: (1) Tạo test case: Một test case GUI là một chuỗi các sự kiện, ví dụ: nhấp vào nút, chọn menu và nhập văn bản. (2) Tạo đầu ra mong đợi: Đầu ra mong đợi được sử dụng để kiểm tra tính đúng đắn của GUI trong quá trình thực hiện test case. (3) Thực hiện test case và xác minh đầu ra: Việc thực hiện test case GUI được thực hiện bằng cách thực hiện tất cả các sự kiện đầu vào được chỉ định trong test case và so sánh đầu ra thực tế của GUI với đầu ra mong đợi. (4) Phân tích độ bao phủ: Sau khi tất cả các test case đã được thực hiện trên GUI, các tiêu chí độ bao phủ được sử dụng để đánh giá độ bao phủ của test case.

II. Thách thức Vì sao Kiểm thử GUI lại khó khăn đến vậy

Việc kiểm thử GUI đặt ra nhiều thách thức đáng kể. Thứ nhất, việc tạo test case rất khó khăn vì số lượng hoán vị tương tác với GUI là rất lớn. Mỗi chuỗi các sự kiện GUI có thể dẫn đến một trạng thái khác nhau và một sự kiện GUI về nguyên tắc cần được kiểm thử trong tất cả các trạng thái này. Thứ hai, rất khó để chỉ định đầu ra mong đợi cho một test case GUI. Thứ ba, rất khó để đánh giá tính đầy đủ của các test case GUI. Thứ tư, rất khó để thực hiện kiểm thử hồi quy GUI. Do GUI được phát triển bằng các quy trình linh hoạt nên chúng được sửa đổi liên tục, do đó cần phải kiểm thử lại thường xuyên. Hơn nữa, sự thiếu giao tiếp trực tiếp giữa các nhà phát triển trong môi trường phát triển phần mềm hiện đại cũng gây ra một thách thức lớn.

2.1. Số lượng Test Case khổng lồ trong Kiểm thử GUI

Số lượng tương tác có thể có với GUI là rất lớn, mỗi chuỗi sự kiện có thể dẫn đến một trạng thái khác nhau. Điều này đòi hỏi một số lượng rất lớn các test case để bao phủ đầy đủ các khả năng.Việc kiểm thử GUI cũng trở nên khó khăn hơn khi có nhiều thành phần và sự kiện khác nhau, tạo ra vô số các tổ hợp có thể xảy ra. Hơn nữa, các tương tác giữa các sự kiện cũng cần được xem xét, vì chúng có thể dẫn đến các kết quả không mong muốn.

2.2. Khó khăn trong việc xác định đầu ra mong đợi của Kiểm thử GUI

Với phần mềm phản ứng nhanh, một sự kiện trong test case có thể dẫn đến một trạng thái không chính xác, trong đó các sự kiện tiếp theo không thể thực hiện được. Việc thực hiện test case phải bị dừng ngay khi phát hiện ra lỗi. Để phát hiện ra các vấn đề như vậy, việc thực hiện test case GUI yêu cầu xác minh và thực hiện test case được xen kẽ. Do đó, đầu ra mong đợi cần được chỉ định cho mỗi sự kiện trong test case. Tất nhiên, đây là một nhiệm vụ tốn nhiều tài nguyên.

III. Giải pháp Kỹ thuật kiểm thử GUI dựa trên mô hình chi phí thấp

Luận án này vượt qua những hạn chế của các kỹ thuật hiện có bằng cách phát triển một quy trình với các mô hình, kỹ thuật và công cụ hỗ trợ để kiểm thử tích hợp liên tục các ứng dụng dựa trên GUI đang phát triển. Ý tưởng chính của quy trình này là tạo ba vòng kiểm thử đồng tâm, mỗi vòng có các mục tiêu kiểm thử GUI cụ thể, mức sử dụng tài nguyên và phản hồi nhắm mục tiêu. Việc phát triển các kỹ thuật kiểm thử GUI tự động hóa chi phí thấp, có thể áp dụng cho phần mềm GUI đang phát triển nhanh chóng là một trong những đóng góp quan trọng.

3.1. Tạo mô hình trừu tượng cho Kiểm thử GUI hiệu quả

Mô hình trừu tượng của GUI và một tập hợp các kỹ thuật dựa trên mô hình để tạo test case, tạo test oraclekiểm thử GUI liên tục được phát triển. Mô hình và kỹ thuật này được thu thập bằng cách nghiên cứu các lỗi GUI, tương tác giữa các sự kiện GUI và lý do tại sao một số tương tác sự kiện dẫn đến lỗi. Các mô hình GUI chi phí thấp để có được và duy trì. Các mô hình này được thiết kế để nắm bắt các khía cạnh quan trọng của GUI mà không cần quá nhiều chi phí để xây dựng và cập nhật.

3.2. Các vòng lặp kiểm thử liên tục trong kiểm thử GUI

Vòng lặp hoàn toàn tự động bên trong cùng được gọi là crash testing hoạt động trên mỗi thay đổi mã của phần mềm GUI. Vòng lặp bán tự động thứ hai được gọi là smoke testing hoạt động trên bản dựng GUI mỗi ngày. Vòng lặp ngoài cùng được gọi là kiểm thử GUI toàn diện được thực hiện sau khi có một phiên bản chính của GUI. Quá trình kiểm thử liên tục và các kỹ thuật liên quan được chứng minh là hữu ích, thông qua một số thử nghiệm lớn liên quan đến hàng triệu test case, trên cả các ứng dụng GUI nội bộ và mã nguồn mở.

IV. Các phương pháp công cụ kiểm thử GUI dựa trên mô hình phổ biến

Các công cụ và phương pháp tiếp cận khác nhau được sử dụng để kiểm thử GUI dựa trên mô hình. Một số công cụ này là Selenium, Appium, Cypress, và Playwright. Tích hợp kiểm thử GUI vào quy trình CI/CD, điều này giúp đảm bảo rằng các lỗi GUI được phát hiện sớm và sửa chữa nhanh chóng, từ đó cải thiện chất lượng phần mềm và giảm thiểu chi phí kiểm thử. Bên cạnh đó, việc sử dụng các tiêu chí đánh giá hiệu quả kiểm thử GUI, như độ bao phủ và tỷ lệ phát hiện lỗi, giúp cải thiện hiệu quả của quá trình kiểm thử.

4.1. Sử dụng Selenium và Appium cho Kiểm thử GUI

Selenium là một framework tự động hóa kiểm thử web phổ biến, hỗ trợ nhiều ngôn ngữ lập trình và trình duyệt. Appium là một framework tự động hóa kiểm thử ứng dụng di động, cho phép kiểm thử trên cả nền tảng iOS và Android. Cả SeleniumAppium đều cung cấp các API mạnh mẽ để tương tác với các thành phần GUI và thực hiện các thao tác kiểm thử tự động.

4.2. Ưu điểm của Cypress và Playwright trong Kiểm thử GUI

Cypress là một framework kiểm thử end-to-end hiện đại, tập trung vào kiểm thử GUI cho các ứng dụng web. Playwright là một framework tự động hóa đa trình duyệt, hỗ trợ kiểm thử trên Chromium, Firefox và WebKit. CypressPlaywright cung cấp các tính năng nâng cao như ghi lại và phát lại các thao tác, gỡ lỗi trực tiếp và chụp ảnh màn hình tự động, giúp đơn giản hóa quá trình kiểm thử GUI.

V. Ứng dụng thực tiễn Đánh giá hiệu quả các kỹ thuật kiểm thử GUI

Quá trình kiểm thử liên tục và các kỹ thuật liên quan được chứng minh là hữu ích, thông qua một số thử nghiệm lớn liên quan đến hàng triệu test case, trên cả các ứng dụng GUI nội bộ và mã nguồn mở. Các thí nghiệm này bao gồm việc đánh giá độ bao phủ mã và độ bao phủ sự kiện, so sánh hiệu quả phát hiện lỗi của các kỹ thuật khác nhau và đo lường chi phí thực hiện kiểm thử.

5.1. Nghiên cứu các đặc điểm của bộ Test Suite Kiểm thử GUI

Các thử nghiệm đã được thực hiện để nghiên cứu tác động của kích thước bộ test suite, độ dài test case và thành phần sự kiện đối với hiệu quả phát hiện lỗi. Các kết quả cho thấy rằng bộ test suite lớn hơn và test case dài hơn có xu hướng phát hiện nhiều lỗi hơn. Ngoài ra, các test case bao gồm các sự kiện tương tác phức tạp có xu hướng hiệu quả hơn trong việc phát hiện các lỗi tiềm ẩn.

5.2. Phát triển Test Oracles cho Kiểm thử GUI toàn diện

Các kỹ thuật khác nhau đã được phát triển để tạo test oracles cho kiểm thử GUI toàn diện. Các kỹ thuật này bao gồm việc sử dụng ảnh chụp màn hình, so sánh thuộc tính widget và kiểm tra trạng thái ứng dụng. Hiệu quả của các test oracles khác nhau đã được đánh giá bằng cách đo lường tỷ lệ phát hiện lỗi và chi phí thực hiện kiểm thử.

VI. Kết luận Hướng phát triển của Kiểm thử GUI trong tương lai

Luận án này đã đóng góp vào lĩnh vực kiểm thử GUI bằng cách phát triển các kỹ thuật mới chi phí thấp và hiệu quả để kiểm thử các ứng dụng GUI. Các kỹ thuật này dựa trên mô hình và được thiết kế để áp dụng cho các ứng dụng GUI đang phát triển nhanh chóng. Các kỹ thuật này có thể được sử dụng để cải thiện chất lượng của phần mềm và giảm chi phí kiểm thử.

6.1. Tóm tắt đóng góp và hướng nghiên cứu trong Kiểm thử GUI

Nghiên cứu này đã phát triển một quy trình kiểm thử GUI liên tục, bao gồm các vòng lặp crash testing, smoke testing và comprehensive testing. Quy trình này nhằm mục đích cung cấp phản hồi nhanh chóng cho các nhà phát triển về các lỗi mới được giới thiệu. Các kỹ thuật mới để tạo test case, test oracle và thực hiện kiểm thử hồi quy GUI cũng đã được phát triển. Hướng nghiên cứu trong tương lai bao gồm khám phá các kỹ thuật để tự động tạo các mô hình GUI và sử dụng trí tuệ nhân tạo để cải thiện hiệu quả của kiểm thử GUI.

6.2. Tiềm năng của Kiểm thử GUI sử dụng AI và Machine Learning

Việc sử dụng trí tuệ nhân tạo (AI) và Machine Learning (ML) trong kiểm thử GUI có tiềm năng to lớn. AI có thể được sử dụng để tự động tạo test case, dự đoán lỗi và tối ưu hóa quy trình kiểm thử. ML có thể được sử dụng để học các mẫu từ dữ liệu kiểm thử và cải thiện độ chính xác của các test oracle. Nghiên cứu sâu hơn về AI-powered testing và visual testing có thể giúp nâng cao hiệu quả và hiệu suất của quá trình kiểm thử GUI.

Tóm tắt và mô tả trên trang này được tạo với sự hỗ trợ của AI từ nội dung tài liệu gốc; tài liệu do người dùng đóng góp và được kiểm duyệt trước khi xuất bản. Báo lỗi nội dung.

14/05/2025
Luận án tiến sĩ developing cost effective model based techniques for gui testing

Trích đoạn nội dung tài liệu

ABSTRACT Title of dissertation: Developing Cost-Effective Model-Based Techniques for GUI Testing Qing Xie, Doctor of Philosophy, 2006 Dissertation directed by: Professor Atif Memon Department of Computer Science University of Maryland, College Park Most of today’s software users interact with the software through a graphical user interface (GUI), which constitutes as much as 45-60% of the total code. The correct- ness of the GUI is necessary to ensure the correctness of the overall software. Although GUIs have become ubiquitous, testing GUIs for functional correctness has remained a ne- glected research area. Existing GUI testing techniques are extremely resource intensive primarily because GUIs have very large input spaces and evolve frequently.

This dis- sertation overcomes the limitations of existing techniques by developing a process with supporting models, techniques, and tools for continuous integration testing of evolving GUI-based applications. The key idea of this process is to create three concentric testing loops, each with specific GUI testing goals, resource usage, and targeted feedback. The innermost fully automatic loop called crash testing operates on each code change of the GUI software. The second semi-automated loop called smoke testing operates on each day’s GUI build.

The outermost loop called comprehensive GUI testing is executed after a major version of the GUI is available. The primary enablers of this process, also devel- oped in this dissertation, include an abstract model of the GUI and a set of model-based techniques for test-case generation, test oracle creation, and continuous GUI testing. The model and techniques were obtained by studying GUI faults, interactions between GUI events, and why certain event interactions lead to faults. The continuous testing process and associated techniques are shown to be useful, via several large experiments involving millions of test cases, on both in-house and open-source GUI applications.

Developing Cost-Effective Model-Based Techniques for GUI Testing by Qing Xie Dissertation submitted to the Faculty of the Graduate School of the University of Maryland, College Park in partial fulfillment of the requirements for the degree of Doctor of Philosophy 2006 Advisory Committee: Professor Atif Memon, Chair/Advisor Professor Victor Basili Professor Rance Cleaveland Professor Michel Cukier Professor Adam Porter Professor Gang Qu UMI Number: 3241432 UMI Microform 3241432 Copyright 2007 by ProQuest Information and Learning Company. All rights reserved. This microform edition is protected against unauthorized copying under Title 17, United States Code. ProQuest Information and Learning Company 300 North Zeeb Road P.

Box 1346 Ann Arbor, MI 48106-1346 c Copyright by Qing Xie 2006 ACKNOWLEDGMENTS First and foremost I would like to thank my advisor, Professor Atif Memon for giving me an invaluable opportunity to work on challenging and extremely interesting projects over the past several years. He has always made himself available for help and advice and there has never been an occasion when I have knocked on his door and he has not given me time. It has been a pleasure to work with and learn from such an extraordinary individual. This experience will benefit me forever.

Thanks are due to Professor Victor Basili, Professor Rance Cleaveland, Professor Michel Cukier, Professor Adam Porter, and Professor Gang Qu for agreeing to serve on my thesis committee and for sparing their invaluable time reviewing the manuscript. I thank all my teachers in schools, colleges, and universities whose dedication and hard work helped lay the foundation for this work. My colleagues at the Software Testing Group have enriched my graduate life in many ways and deserve a special mention. My interaction with Bin Gan, Xun Yuan, Jaymie Strecker, Cyntrica Eaton, Adithya Nagarajan, Ishan Banerjee, and Lorin Hochstein has been very fruitful.

I would also like to acknowledge help and support from some of the staff members in the department. I owe my deepest thanks to my family - my mother, father, and brother who have always stood by me and guided me through my career; my husband, Feng, for always ii being there to support me and be constant source of encouragement during my Ph.D; my daughter, Katie, for bringing me endless happiness. I would like to acknowledge financial support from the NSF grant CCF-0447864 and the Office of Naval Research grant N00014-05-1-0421, for all the projects discussed herein. Last, but far from least, I want to express my thanks to all the people who have made this thesis possible and because of whom my graduate experience has been one that I will cherish forever.

iii TABLE OF CONTENTS List of Tables vi List of Figures vii 1 Introduction 1 1.1 What is a GUI? .2 GUI Testing Process .3 Challenges of GUI Testing .4 Existing Approaches and their Limitations .5 A New Continuous GUI Testing Process .6 Structure of the Dissertation. 12 2 Background and Related Work 13 2.2 Event-flow Graphs .2 Test Case Generation .2 Model-based Approaches .4 Test Coverage Criteria .6 Rapid Feedback-based QA mechanisms. 32 3 A Continuous GUI Testing Process 33 3.4 Instantiating the Loops .1 Minimized Effective Event Context .2 Pilot Study - Understanding the MEEC .2 Step 1: Study Subjects .3 Step 2: Fault Seeding .4 Step 3: Test-Case Generation .5 Step 5: Studying Predecessor Events .3 Dissecting the MEEC .4 Threats to Validity .5 Event-Interaction Graph .6 Crash Test Cases .7 Feasibility Studies - Evaluating Crash Test Cases .1 Feasibility Study - Crash Testing on TerpOffice Applications .2 Feasibility Study - Crash Testing for Open-Source Applications .1 Designing Different Test Oracles .2 Evaluating the GUI Test Oracles .2 Modeling Cost and Fault Detection Effectiveness. 113 6 Comprehensive GUI Testing 115 6.1 Experiment - Studying the Characteristics of a “Good” Comprehensive Test Suite .3 Part 1: Effect of Test Suite Size .4 Part 2: Effect of Test Case Length .5 Part 3: Effect of Event Composition .2 Experiment - Developing Test Oracles for Comprehensive Testing.

136 7 Summary and Future Work 138 7.1 Summary of Contributions. 142 Bibliography 146 v LIST OF TABLES 4.2 Classes of Seeded Faults .3 Seeded Faults Classified by Functionality .4 Regular Expression Table .5 Sizes of Event-Interactions Graph .6 Number of Test Cases Generated for Each Version of Each Application .7 Number of Crashes Detected for Each Version of Each Application .1 The Data Table Cleanup Steps .2 Friedman Test Results .3 Wilcoxon Test Results .4 Average Number of Widget Comparisons Per Test Case. 110 vi LIST OF FIGURES 1.1 Different Loops of Continuous GUI Testing .1 (a) Open GUI, (b) its Partial State .2 Example of an Event-Flow Graph .3 (a) A Simple GUI and (b) Example of a JFCUnit Test Case .4 An Overview of the GUI Oracle .1 Activities to Support Continuous GUI Testing .1 Total Number of Event Sequences .4 MEEC for TerpCalc .5 MEEC for TerpPaint .6 MEEC for TerpSpreadSheet .7 MEEC for TerpWord .8 EIG for the EFG of Figure 2.9 Generate Event-Inteaction Graph from Event-Flow Graph .10 Total Execution Time .11 Number of Software Crashes .12 Number of Crash-Causing Bugs .13 Number of Bugs vs. Number of Test Cases .14 Effectiveness of the Rotating Algorithm for TerpCalc .15 Effectiveness of the Rotating Algorithm for TerpPaint .16 Effectiveness of the Rotating Algorithm for TerpPresent .17 Bug History Over Versions .1 Oracle Information for the Cancel Event .2 Oracle Procedure Algorithm .3 L1 Compares Widget-Relevant Triples after Each Event in the Test Case .4 Distribution of  Values by Test Oracle .5 Histogram for TerpPresent .6 Histogram for TerpWord .7 Histogram for TerpPaint .8 Histogram for TerpSpreadSheet .9  Values for All Test Cases .10 Position Where the Fault is Detected vs.

Oracle for (a) TerpPresent, (b) TerpWord, and (c) TerpSpreadSheet .1 Event Distribution for Each Application .2 Fault Detection Effectiveness vs. Test Suite Size for TerpCalc .3 Fault Detection Effectiveness vs. Test Suite Size for TerpWord .4 Fault Detection Effectiveness vs. Test Suite Size for TerpSpreadsheet .5 Fault Detection Effectiveness vs.

Test Suite Size for TerpPaint .6 Fault Detection Effectiveness vs. Test Case Length for TerpCalc .7 Fault Detection Effectiveness vs. Test Case Length for TerpWord .8 Fault Detection Effectiveness vs. Test Case Length for TerpSpreadsheet .9 Fault Detection Effectiveness vs.

Test Case Length for TerpPaint .10 New Faults Detected with Length Increase .11 Number of Failures .12 Errors for TerpPaint .13 Errors for TerpSpreadSheet .14 Errors for TerpWord .15 Event Classes and Error Types .16 Error detection of   .17 Time Required for  . 136 ix Chapter 1 Introduction Testing is widely recognized as a key quality assurance (QA) activity in the software development process. Although research in testing has received considerable attention in the last two decades [22], testing of graphical user interfaces (GUIs), which constitute as much as 45-60% of the total software code [45], has remained until recently, a neglected research area [32]. Because GUI software has become nearly ubiquitous, neglecting the quality of GUI software has the potential to have a negative impact on all of today’s software.

A software with a GUI front-end consists of two parts : (1) the underlying code that implements the “business logic” and (2) the GUI front-end that facilitates user interaction with the underlying code. A software user interacts with the GUI by performing events, such as button clicks, menu selections, and text inputs. The GUI uses the input events to interact with the underlying code via messages and method invocations. During GUI testing, test cases, modeled as sequences of events are executed on the GUI and its output is compared to an “expected output.” The goal of GUI testing is to reveal GUI faults (defined as one that manifests itself on the visible GUI at some point of time during the software’s execution).

Several researchers have exploited the event-driven nature of GUIs to develop auto- mated model-based GUI testing techniques (e. However, these techniques have not been adopted by GUI testers because of several problems: (1) the models are expensive to obtain (ex- cept for event-flow graphs); they are typically created manually, (2) the number of per- mutations of all possible GUI interactions (event sequences) with the user is enormous; these techniques test the GUI for a small sub-space of user interactions; it remains unclear whether testing this sub-space reveals any GUI faults, and (3) GUIs are typically devel- oped using agile processes, which are known for their simple planning, short iterations, and are driven by frequent customer feedback. It becomes expensive to update the models and test artifacts (e., test cases, test oracles) during frequent software/GUI updates. Moreover, because modern software is typically developed by multiple program- mers, another GUI testing challenge largely ignored by existing techniques is that the programmers are likely to “break” the GUI software during their local code updates.

Programmers are generally unwilling and, due to limited resources, unable to setup an expensive GUI testing process for each update. If left undetected, the cascading effect of these updates may lead to integration faults that cause substantial delays during GUI integration testing. The research presented in this dissertation overcomes the limitations of existing techniques. Specifically, the contributions of this research include: the development of new cost-effective, automated GUI testing techniques that are applicable to rapidly evolving GUI software, development of new GUI models that are inexpensive to obtain and maintain, demonstration of the fault detection effectiveness of the new techniques, and 2 development of a continuous GUI testing process that targets feedback to specific developers.

The remainder of the chapter outlines the steps necessary for GUI testing and the challenges that GUI testers face for each step, followed by a discussion of existing GUI testing techniques and their limitations, and a high-level overview of the research pre- sented in this dissertation.1 What is a GUI? Most of today’s software users interact with the software through a GUI. The user typically uses a mouse and a keyboard to interact with GUI widgets. Widgets of a GUI include elements such as windows, pull-down menus, buttons, scroll bars, text boxes, and icons. The software user performs events on these widgets, such as clicking a button, selecting a menu item, and typing in a text box.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Kiểm thử giao diện người dùng đồ họa (GUI) luôn là thách thức lớn trong đảm bảo chất lượng phần mềm, đặc biệt khi cân bằng giữa chi phí và hiệu quả. Tài liệu Developing Cost-Effective Model-Based Techniques for GUI Testing trình bày các phương pháp kiểm thử dựa trên mô hình giúp tự động hóa quá trình sinh ca kiểm thử, giảm thiểu công sức thủ công và tối ưu hóa độ bao phủ kiểm thử. Các kỹ thuật được đề xuất tập trung vào việc mô hình hóa hành vi GUI thông qua đồ thị trạng thái và sự kiện, từ đó tạo ra bộ ca kiểm thử có chi phí thực thi thấp nhưng vẫn đảm bảo phát hiện lỗi hiệu quả. Đây là tài liệu thiết yếu cho các kỹ sư kiểm thử và nhà nghiên cứu muốn áp dụng mô hình hóa hình thức. Để hiểu sâu hơn về nền tảng lý thuyết, bạn có thể tham khảo thêm về sinh ca kiểm thử từ máy hữu hạn trạng thái, một hướng tiếp cận bổ sung chặt chẽ cho phương pháp kiểm thử GUI dựa trên mô hình.