Chương 4 : Nghiên cứu thực nghiê ̣m
4.4.2. Tính hiệu quả trong chiến lược khám phá
Monkey sinh các sự kiện một cách ngẫu nhiên, không theo một luồng nhất định. Do vậy, tuy thực hiện chạy với số lượng sự kiện nhỏ thì nó vẫn có khả năng khám phá nhiều chức năng khác nhau trong ứng dụng. Trong khi đó DroidBot sinh các sự kiện dựa trên mô hình UI, sử dụng chiến lược tham ăn và thuật toán duyệt theo chiều rộng, do đó các sự kiện được sinh ra lần lượt theo những luồng nhất định. Chính vì vậy khi thực thi với số lượng sự kiện nhỏ thì khả năng bao phủ mã nguồn của Monkey sẽ tốt
Mặc dù vậy, các công cụ tự động đều có hạn chế khi gặp phải những giao diện có
trường nhập thông tin chứa các yêu cầu đặc biệt, hoặc những giao diện mà các thành
phần thông tin không hiển thị sẵn trên màn hình, cần phải qua các thao tác gạt sang phải/ trái hoặc lên/ xuống để hiển thị. Trong các trường hợp này, cả hai công cụ đều gặp khó khăn để vượt qua, thậm chí là mắc kẹt tại đó.
Hình 4.7: Màn hình bắt đầu của ứng dụng quản lý bệnh tiểu đường
Hình 4.7 là giao diện bắt đầu của một ứng dụng quản lý bệnh tiểu đường. Chỉ khi nhập các thông tin đầy đủ và hợp lệ, chạm vào “GET STARTED” mới có thể bắt đầu sử dụng ứng dụng. Tuy nhiên, vấn đề xảy ra ở đây là trường thông tin nhập tuổi chỉ hợp lệ khi số nhập vào nhỏ hơn 100. Điều này hoàn toàn gây khó khăn cho cả hai công cụ tự động, bởi nếu không may mắn để nhập được thông tin về tuổi hợp lệ, thì việc kiểm tra sẽ bị tắc tại đây và không thể khám phá ứng dụng sâu thêm được nữa. Chính vì những hạn chế này mà ta có thể thấy kết quả bao phủ mã nguồn của cả hai công cụ tự động đều thấp hơn so vớiviệckiểm thử thủ công.
Biểu đồ 4.1: Độ bao phủ mã nguồn