Luận án tiến sĩ: Phát triển kỹ thuật kiểm thử GUI hiệu quả (2006)

Luận án phát triển kỹ thuật kiểm thử GUI hiệu quả dựa trên mô hình. Đề xuất quy trình kiểm thử liên tục với ba vòng lặp: tự động, bán tự động và toàn diện.

Trường ĐH

University of Maryland, College Park

Chuyên ngành

Computer Science

Tác giả

Luan An

Thể loại

Luận án

Năm xuất bản

Số trang

166

Thời gian đọc

25 phút

Lượt xem

0

Lượt tải

0

Phí lưu trữ

50 Point

Tóm tắt nội dung

I. Kiểm Thử GUI Dựa Trên Mô Hình Tổng Quan

Giao diện đồ họa người dùng (GUI) chiếm 45-60% tổng mã nguồn phần mềm hiện đại. Tính đúng đắn của GUI quyết định chất lượng tổng thể của ứng dụng. Nghiên cứu của Qing Xie tập trung phát triển kỹ thuật kiểm thử GUI hiệu quả về chi phí thông qua phương pháp model-based testing. Luận án giải quyết thách thức lớn nhất: không gian đầu vào khổng lồ và sự thay đổi liên tục của GUI. Phương pháp truyền thống tốn kém tài nguyên và không theo kịp tốc độ phát triển phần mềm. Giải pháp đề xuất tạo ra quy trình kiểm thử tích hợp liên tục với ba vòng lặp đồng tâm. Mỗi vòng lặp có mục tiêu, tài nguyên và phản hồi riêng biệt. Cốt lõi là mô hình trừu tượng của GUI và các kỹ thuật sinh test case tự động. Nghiên cứu dựa trên phân tích lỗi GUI thực tế, tương tác giữa các sự kiện, và nguyên nhân dẫn đến lỗi.

1.1. Tầm Quan Trọng Của GUI Testing

GUI là điểm tiếp xúc chính giữa người dùng và phần mềm. Lỗi GUI ảnh hưởng trực tiếp đến trải nghiệm người dùng và độ tin cậy hệ thống. Tỷ lệ mã GUI cao trong ứng dụng hiện đại tạo ra bề mặt tấn công lớn cho lỗi. Kiểm thử GUI đảm bảo chức năng hoạt động đúng trong mọi tình huống. Phương pháp thủ công không khả thi với quy mô và độ phức tạp hiện nay.

1.2. Thách Thức Chính Trong GUI Testing

Không gian đầu vào của GUI cực kỳ lớn do số lượng sự kiện và chuỗi tương tác khả dĩ. GUI thay đổi thường xuyên theo yêu cầu nghiệp vụ và thiết kế. Test case cần cập nhật liên tục để phù hợp với phiên bản mới. Tài nguyên kiểm thử hạn chế không đủ để bao phủ toàn bộ. Kỹ thuật hiện tại tốn nhiều công sức và thời gian thực thi.

1.3. Đóng Góp Chính Của Nghiên Cứu

Quy trình kiểm thử tích hợp liên tục với ba vòng lặp tự động hóa. Mô hình trừu tượng GUI hỗ trợ sinh test case hiệu quả. Kỹ thuật model-based testing giảm chi phí và tăng độ bao phủ. Công cụ tự động hóa cho crash testing, smoke testing và comprehensive testing. Thực nghiệm trên hàng triệu test case với ứng dụng thực tế.

II. Quy Trình Kiểm Thử GUI Liên Tục Ba Vòng Lặp

Quy trình đề xuất tổ chức thành ba vòng lặp đồng tâm với mức độ tự động hóa khác nhau. Vòng trong cùng là crash testing, hoàn toàn tự động, chạy sau mỗi thay đổi mã. Vòng giữa là smoke testing, bán tự động, thực thi trên build hàng ngày. Vòng ngoài cùng là comprehensive GUI testing, chạy sau mỗi phiên bản chính. Thiết kế này cân bằng giữa tốc độ phản hồi và độ bao phủ kiểm thử. Mỗi vòng lặp có mục tiêu cụ thể và sử dụng tài nguyên phù hợp. Phản hồi nhanh từ vòng trong giúp phát hiện lỗi sớm. Vòng ngoài đảm bảo chất lượng tổng thể trước khi phát hành. Quy trình tích hợp liền mạch vào chu trình phát triển phần mềm.

2.1. Crash Testing Vòng Lặp Tự Động Hoàn Toàn

Crash testing chạy tự động sau mỗi lần commit mã nguồn. Mục tiêu phát hiện lỗi crash và exception nghiêm trọng ngay lập tức. Sử dụng test case ngắn với độ bao phủ cơ bản. Thời gian thực thi nhanh để không làm gián đoạn quy trình phát triển. Phản hồi tức thì giúp lập trình viên sửa lỗi khi còn nhớ rõ thay đổi. Tự động hóa hoàn toàn không cần can thiệp thủ công.

2.2. Smoke Testing Vòng Lặp Bán Tự Động

Smoke testing thực thi trên build tích hợp hàng ngày. Kiểm tra các chức năng chính và kịch bản quan trọng. Độ bao phủ rộng hơn crash testing nhưng không đầy đủ. Kết hợp test case tự động sinh và test case thủ công. Thời gian chạy vài giờ, phù hợp với chu kỳ build đêm. Cung cấp báo cáo chi tiết về tình trạng build.

2.3. Comprehensive Testing Kiểm Thử Toàn Diện

Comprehensive GUI testing chạy trước mỗi bản phát hành chính. Bao phủ toàn bộ chức năng và kịch bản phức tạp. Sử dụng event-flow graph để sinh test case đầy đủ. Thời gian thực thi dài, có thể kéo dài vài ngày. Đảm bảo chất lượng cao nhất trước khi giao sản phẩm. Kết hợp nhiều tiêu chí bao phủ khác nhau.

III. Mô Hình Event Flow Graph Cho GUI Testing

Event-flow graph là mô hình trừu tượng cốt lõi của phương pháp đề xuất. Đồ thị biểu diễn các sự kiện GUI và quan hệ phụ thuộc giữa chúng. Mỗi nút trong đồ thị đại diện cho một sự kiện người dùng. Cạnh nối giữa các nút thể hiện trình tự thực thi khả dĩ. Mô hình này nắm bắt cấu trúc và hành vi của GUI. Cho phép phân tích tương tác giữa các sự kiện một cách hệ thống. Hỗ trợ sinh test case tự động dựa trên các tiêu chí bao phủ. Dễ dàng cập nhật khi GUI thay đổi. Giảm thiểu công sức bảo trì test suite. Tạo nền tảng cho các kỹ thuật test case generation tiên tiến.

3.1. Cấu Trúc Của Event Flow Graph

Đồ thị luồng sự kiện bao gồm các nút sự kiện và cạnh quan hệ. Mỗi sự kiện có thuộc tính như loại widget, hành động, và điều kiện tiên quyết. Cạnh mô tả khả năng thực thi sự kiện kế tiếp sau sự kiện hiện tại. Đồ thị có nút bắt đầu và có thể có nhiều nút kết thúc. Cấu trúc phân cấp phản ánh tổ chức cửa sổ và dialog trong GUI.

3.2. Xây Dựng Event Flow Graph Tự Động

Công cụ tự động phân tích mã nguồn và giao diện GUI. Trích xuất danh sách sự kiện từ định nghĩa widget và event handler. Xác định quan hệ phụ thuộc dựa trên cấu trúc mã và luồng điều khiển. Tạo đồ thị ban đầu với các cạnh khả dĩ. Tinh chỉnh đồ thị bằng cách loại bỏ cạnh không khả thi. Cập nhật tự động khi GUI thay đổi.

3.3. Ứng Dụng Mô Hình Trong Test Generation

Event-flow graph là đầu vào cho thuật toán sinh test case. Duyệt đồ thị theo các tiêu chí bao phủ khác nhau. Tạo chuỗi sự kiện tương ứng với đường đi trong đồ thị. Mỗi test case là một đường đi từ nút bắt đầu đến nút kết thúc. Độ dài và độ phức tạp test case điều chỉnh theo mục tiêu kiểm thử. Hỗ trợ nhiều chiến lược sinh test case khác nhau.

IV. Kỹ Thuật Sinh Test Case Tự Động Hiệu Quả

Nghiên cứu phát triển nhiều kỹ thuật test case generation dựa trên event-flow graph. Mỗi kỹ thuật phù hợp với một vòng lặp kiểm thử cụ thể. Crash testing sử dụng test case ngắn bao phủ sự kiện đơn lẻ. Smoke testing tạo test case trung bình bao phủ tương tác hai sự kiện. Comprehensive testing sinh test case dài bao phủ chuỗi sự kiện phức tạp. Các thuật toán tối ưu hóa giảm số lượng test case cần thiết. Ưu tiên test case có khả năng phát hiện lỗi cao. Tái sử dụng test case từ phiên bản trước khi khả dĩ. Kết hợp nhiều tiêu chí bao phủ: event coverage, event-interaction coverage, length coverage. Cân bằng giữa chi phí thực thi và hiệu quả phát hiện lỗi.

4.1. Tiêu Chí Bao Phủ Sự Kiện Đơn

Event coverage đảm bảo mỗi sự kiện được thực thi ít nhất một lần. Phù hợp với crash testing do yêu cầu tài nguyên thấp. Phát hiện lỗi cơ bản như null pointer exception. Sinh test case bằng cách chọn đường đi ngắn nhất đến mỗi sự kiện. Số lượng test case tương đương với số lượng sự kiện. Thời gian thực thi nhanh, phản hồi tức thì.

4.2. Bao Phủ Tương Tác Giữa Các Sự Kiện

Event-interaction coverage kiểm tra tương tác giữa cặp sự kiện liền kề. Phát hiện lỗi phụ thuộc vào trình tự thực thi. Sinh test case bao phủ tất cả cạnh trong event-flow graph. Số lượng test case tăng theo số lượng cạnh. Phù hợp với smoke testing với độ bao phủ cân bằng. Có thể mở rộng lên tương tác ba, bốn sự kiện.

4.3. Tối Ưu Hóa Số Lượng Test Case

Thuật toán tối ưu giảm số test case mà vẫn đạt bao phủ mục tiêu. Sử dụng kỹ thuật set covering và graph traversal. Tái sử dụng phần chung của các test case. Ưu tiên test case ngắn để giảm thời gian thực thi. Loại bỏ test case dư thừa không tăng độ bao phủ. Cân đối giữa số lượng và chất lượng test case.

V. Test Oracle Creation Cho GUI Automation

Test oracle xác định kết quả mong đợi của mỗi test case. Tạo oracle tự động là thách thức lớn trong GUI testing. Nghiên cứu đề xuất phương pháp oracle dựa trên mô hình GUI. Trích xuất thuộc tính GUI như giá trị widget, trạng thái enable/disable. So sánh trạng thái thực tế với trạng thái mong đợi sau mỗi sự kiện. Sử dụng assertion để kiểm tra tính nhất quán dữ liệu. Oracle cấp độ cao kiểm tra logic nghiệp vụ. Oracle cấp độ thấp phát hiện lỗi giao diện. Kết hợp nhiều loại oracle tăng khả năng phát hiện lỗi. Tự động sinh oracle giảm công sức thủ công đáng kể.

5.1. Oracle Dựa Trên Thuộc Tính GUI

Ghi lại thuộc tính widget sau mỗi sự kiện trong lần chạy đầu tiên. Sử dụng snapshot này làm oracle cho các lần chạy sau. So sánh giá trị text, visibility, enabled state của widget. Phát hiện thay đổi không mong muốn trong giao diện. Phù hợp với regression testing khi GUI ổn định. Cần cập nhật oracle khi GUI thay đổi có chủ ý.

5.2. Oracle Kiểm Tra Tính Nhất Quán

Định nghĩa invariant phải đúng trong mọi trạng thái GUI. Kiểm tra quan hệ giữa các widget liên quan. Ví dụ: tổng các item phải bằng giá trị tổng hiển thị. Phát hiện lỗi logic không nhất quán. Không phụ thuộc vào kết quả cụ thể của test case. Dễ dàng bảo trì khi GUI thay đổi.

5.3. Kết Hợp Nhiều Loại Oracle

Sử dụng đồng thời oracle thuộc tính và oracle nhất quán. Thêm oracle nghiệp vụ cho chức năng quan trọng. Crash oracle phát hiện exception và application crash. Screenshot oracle so sánh giao diện trực quan. Mỗi loại oracle phát hiện lỗi khác nhau. Kết hợp tăng độ bao phủ lỗi tổng thể.

VI. Kết Quả Thực Nghiệm Và Đánh Giá Hiệu Quả

Nghiên cứu đánh giá quy trình và kỹ thuật trên nhiều ứng dụng thực tế. Thực nghiệm bao gồm cả phần mềm in-house và open-source. Chạy hàng triệu test case để đo lường hiệu quả. Kết quả cho thấy phát hiện được nhiều lỗi thực tế. Chi phí kiểm thử giảm đáng kể so với phương pháp thủ công. Độ bao phủ mã tăng lên với test case tự động sinh. Thời gian phản hồi nhanh giúp sửa lỗi kịp thời. Quy trình tích hợp tốt vào continuous integration. Kỹ thuật áp dụng thành công trên nhiều loại GUI khác nhau. So sánh với các công cụ GUI testing hiện có cho thấy ưu điểm vượt trội.

6.1. Ứng Dụng Thực Nghiệm

Thử nghiệm trên nhiều ứng dụng Java Swing và web-based. Bao gồm ứng dụng thương mại và dự án mã nguồn mở. Quy mô từ vài nghìn đến hàng trăm nghìn dòng mã. Độ phức tạp GUI từ đơn giản đến rất phức tạp. Đa dạng domain: văn phòng, tài chính, giáo dục. Đảm bảo tính tổng quát của phương pháp.

6.2. Khả Năng Phát Hiện Lỗi

Phát hiện hàng trăm lỗi thực tế trong các ứng dụng thử nghiệm. Bao gồm lỗi crash, logic error, và UI inconsistency. Nhiều lỗi không tìm thấy bằng kiểm thử thủ công. Test case tự động sinh phát hiện lỗi tương tác phức tạp. Tỷ lệ phát hiện lỗi cao hơn random testing. Hiệu quả tăng theo độ bao phủ test case.

6.3. Hiệu Quả Chi Phí

Giảm 70-80% thời gian tạo test case so với thủ công. Chi phí bảo trì test suite giảm nhờ tự động cập nhật. Thời gian thực thi tối ưu cho từng vòng lặp kiểm thử. ROI cao nhờ phát hiện lỗi sớm trong chu trình phát triển. Tái sử dụng test case giữa các phiên bản tiết kiệm tài nguyên. Tự động hóa giải phóng nguồn lực cho kiểm thử exploratory.

Xem trước tài liệu
Tải đầy đủ để xem toàn bộ nội dung
Luận án tiến sĩ: Developing cost-effective model-based techniques for GUI testing

Tải xuống file đầy đủ để xem toàn bộ nội dung

Tải đầy đủ (166 trang)

Trích đoạn nội dung luận án

Tải xuống để đọc toàn bộ

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 đủ

Từ khóa và chủ đề nghiên cứu


Câu hỏi thường gặp

Luận án "Kỹ thuật kiểm thử GUI hiệu quả dựa trên mô hình - Qing Xie" nghiên cứu về vấn đề gì?

Luận án phát triển kỹ thuật kiểm thử GUI hiệu quả dựa trên mô hình. Đề xuất quy trình kiểm thử liên tục với ba vòng lặp: tự động, bán tự động và toàn diện.

Luận án "Kỹ thuật kiểm thử GUI hiệu quả dựa trên mô hình - Qing Xie" được bảo vệ tại trường nào?

Luận án này được bảo vệ tại University of Maryland, College Park. Năm bảo vệ: 2006.

Luận án "Kỹ thuật kiểm thử GUI hiệu quả dựa trên mô hình - Qing Xie" thuộc chuyên ngành gì?

Luận án "Kỹ thuật kiểm thử GUI hiệu quả dựa trên mô hình - Qing Xie" thuộc chuyên ngành Computer Science. Danh mục: Khoa Học Máy Tính.

Luận án "Kỹ thuật kiểm thử GUI hiệu quả dựa trên mô hình - Qing Xie" có bao nhiêu trang?

Luận án "Kỹ thuật kiểm thử GUI hiệu quả dựa trên mô hình - Qing Xie" có 166 trang. Bạn có thể xem trước một phần tài liệu ngay trên trang web trước khi tải về.

Cách tải luận án "Kỹ thuật kiểm thử GUI hiệu quả dựa trên mô hình - Qing Xie" về máy như thế nào?

Để tải luận án về máy, bạn nhấn nút "Tải xuống ngay" trên trang này, sau đó hoàn tất thanh toán phí lưu trữ. File sẽ được tải xuống ngay sau khi thanh toán thành công. Hỗ trợ qua Zalo: 0559 297 239.

Luận án liên quan

Chia sẻ tài liệu: Facebook Twitter