Các loại công cụ test tự động cho mobile

Trước khi bắt tay vào học những công cụ test tự động, bạn cần phải hiểu kiến trúc bên trong của những nền tảng mobile khác nhau. Bạn cần phải biết làm sao để truy cập vào những đối tượng như buttons, labels, lists, views và những loại khác nhằm tương tác với những thành phần đấy trong lúc run test.

Bạn cũng cần phải viết code và xây dựng những bộ test code ổn định nhằm tích hợp với quá trình phát triển app. Khi chọn 1 tools, bạn cũng nên biết những loại và nội dung của tool đó và cách thức tool tương tác với những thành phần app đã kể trên. Và việc biết chọn tool phù hợp với nhu cầu và project cũng rất quan trọng vì mỗi tool lại có điểm mạnh, điểm yếu riêng.

I. Nhận diện hình ảnh (image recognition)

Những tools mà dùng cách này hoạt động bằng cách so sánh ảnh nhằm điều chỉnh giao diện người dùng của ứng dụng. Khi viết 1 script, bạn chụp ảnh màn hình button hoặc là label mà được nhúng trong cript của bạn. Khi run script đó, tool sẽ so sánh ảnh trong store (chụp trước đó) và màn hình hiện tại. Nếu mà nó tìm thấy 1 cái ảnh khớp với màn hình hiện tại, thì script tự động chạy tiếp những bước tiếp theo.

Những tools này sẽ rất hữu ích với những app mà giao diện không thay đổi thường xuyên và và có giao diện đồng nhất khi phát triển trên nhiều nền tảng khác nhau.

Điểm yếu lớn nhất của loại tool nhận diện hình ảnh này là việc bảo trì test script tốn rất nhiều công sức. Script sẽ không hoạt động khi mà chiều của thiết bị thay đổi (từ chiều dọc sang chiều ngang và ngược lại) hoặc và những màn hình có độ phân giải khác nhau. Một điểm yếu khác là việc test app trên các ngôn ngữ khác nhau, tools không thể hoạt động được vì hình ảnh trong phần lưu trữ chỉ là 1 ngôn ngữ mà test trên 1 ngôn ngữ khác –> fail.

Một số tools thuộc loại nhận diện hình ảnh:

II. Xác định toạ độ (Coordinate-Based Recognition)

Tools dạng này dựa vào trục toạ độ x và y để xác định và tương tác với các UI elements của app. Nếu toạ độ của các thành phần đó bị thay đổi, cả script sẽ phải thay đổi theo giá trị mới. Cũng giống như tools nhận diện hình ảnh, maintain là vấn đề lớn với các tool loại này để có thể xây dựng được những script đáng tin cậy.

Một vài tools điển hình:

III. Nhận diện ký tự quang học (OCR/Text Recognition)

Mobile test automation tools nào sử dụng phương pháp nhận diện ký tự sẽ nhận biết text của các thành phần nào hiển thị trên màn hình của thiết bị. Để làm được việc đó, những tools này sử dụng sử dụng công nghệ OCR (Optical Character Recognition)

Những tools dạng này có thể xử lý tốt các vấn đề về độ phân giải màn hình, xoay chiều, kích cỡ màn hình. Tuy nhiên, tools này chỉ có thể xác nhận các thành phần là text mà hiển trị trên màn hình. Nếu text bị thay đổi hoặc bị xoá, những thành phần UI sẽ rất khó để xác định, thậm chí là không thể. Ví dụ: bạn không thể check nếu UI view, 1 list hoặc những thành phần khác nếu không có text hiển thị trên màn hình. Một điểm yếu khác là chạy tool rất chậm vì nó phải scan cả màn hình để so sánh.

Một vài OCR/text recognition tools:

IV. Nhận diện đối tượng tự nhiên (Native Object Recognition)

Cái dạng tool này thì hiểu nhưng dịch cái tiêu đề thấy chuối quá, các bạn thông cảm. =)))

Tools loại này xác định các đối tượng UI thông qua UI element tree, giống như selenium Webdriver xác định các thành phần trên trang web thông qua HTML DOM. Những UI elements trên app sẽ được tiếp cận thông qua xác định XPath, CSS hoặc là ID của chính đối tượng đó. Phương pháp này rất hiệu quả khi cho phép bạn chọc vào chính những elements đó luôn như buttons, labels, views, lists.. Nếu vị trí để xác định elements được định nghĩa rõ ràng, script bạn viết ra sẽ đáng tin cậy, không lo nhầm lẫn giữa các thành phần với nhau và có thể dùng cript đó chạy trên nhiều thiết bị khác nhau. Đây là 1 điểm mạnh mà nó khắc phục được các điểm yếu của những tools đã nói ở trên.

Những tools điển hình:

V. Quay / chụp và phát lại (Capture and Replay)

Có rất nhiều tool dạng này support cho ngành quảng cáo khi lặp đi lặp lại các actions. Công nghệ này lưu lại những hành động như click, scroll, swipe, type vào script. Sau đó, nó sẽ dùng chức năng replay để chạy lại chính xác những gì đã lưu trong script (cách làm việc có vẻ giống như selenium IDE). Về mặt lý thuyển, nó tương đối dễ sử dụng cho người sử dụng nhưng trên thực tế, dùng nó phải rất cẩn thận. Vì sao?

Tôi đã làm việc với nhiều tools dạng này và tất cả các tools đều mắc những vấn đề giống nhau. Cái script hoàn toàn không đáng tin cậy. Chúng bị ảnh hưởng nhiều từ UI, chiều điện thoại và độ phân giải của màn hình (hầu hết các tool đều sử dụng công nghệ xác định toạ độ và nhận diện hình ảnh). Và đồng nghĩa với việc script đó không thể tái sử dụng cho những thiết bị khác hoặc là những nền tảng hệ điều hành khác nhau.

Script cũng hay không thể chạy được vì thiết bị không đang ở trạng thái nhất định, nó đồng nghĩa với việc tool không thể replay được script. Và script này muốn dùng được ổn định thì phải thường xuyên sửa đổi bằng tay, chứ ko dùng nguyên cái nó record được. Một vấn đề nữa luôn luôn xảy ra là thời gian replay của tool khi tương tác với ứng dụng lúc quá nhanh, lúc quá chậm. Cách duy nhất để giải quyết vấn đề này là phải add thêm các lệnh Wait, nhưng mà đấy không phải là phương pháp tối ưu khi viết các đoạn script cho test tự động. Sử dụng Wait hoặc sleep có thể sẽ dẫn đến những kết quả không đáng tin cậy.

Tuy nhiên, nó cũng có những điểm mạnh, ví dụ như tester không cần có kỹ năng lập trình cũng có thể tạo ra những đoạn script cơ bản mà không cần nhiều training. Tất nhiên là sau đó họ sẽ không thể sửa đổi script. Tốt nhất là không nên dùng tool này quá nhiều vì nó có thể tạo ra những bộ test khổng lồ do nó không có tính kế thừa —> không thể maintain được. Tools dạng này nên được dùng ở thời điểm đầu, vì nó có khả năng xác định được ví trí của các elements, giúp ích cho việc build các script bằng tay.

Bài dịch từ cuốn sách “Hands-On Mobile App Testing” của Daniel Knott

0 0 votes
Article Rating
Subscribe
Notify of
guest
2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Thao
Thao
6 years ago

tks bạn vì bài viết rất chi tiết.

thuyflash
thuyflash
1 year ago

Thanks Giang tester