Những điều khác biệt giữa kiểm thử ứng dụng trên thiết bị di động và kiểm thử trên Desktop và Website

Đây là bài dịch được lấy từ một bài báo trong link sau: Nguồn: https://www.utest.com/articles/why-mobile-apps-testing-is-different-from-desktop-and-web

Kể từ khi chiếc điện thoại di động đầu tiên ra mắt thị trường vào năm 1973, thị trường điện thoại đã nhanh chóng đổi mới từ những chiếc điện thoại cầm tay nặng khoảng 1kg và chỉ có thể gọi 1 cuộc 1 lần tới những chiếc điện thoại thông minh chỉ nặng khoảng 30g và chứa đủ số lượng app có thể chạy tới hết đời bạn 😄

Ở bài báo này, tác giả sẽ liệt kê cho bạn 10 điều để chứng minh việc kiểm thử các ứng dụng di động khác hẳn với việc kiểm thử các ứng dụng trên website hay máy tính và lý do vì sao những điểm phức tạp khiến cho việc kiểm thử trên ứng dụng di động trở thành một kỹ năng độc nhất của nhân viên kiểm thử. Chúng ta đã chứng kiến sự chuyển đổi từ desktop sang web và một sự chuyển đổi khác đó là từ web sang mobile. Trước khi đi sâu vào chủ đề mà tôi vừa nhắc đến ở trên, chúng ta cần phải tìm hiểu xem việc kiểm thử các ứng dụng trên thiết bị di động khác việc kiểm thử trên trình duyệt và desktop như thế nào? Nếu chúng ta có thể hiểu sự khác biệt và thử thách của việc kiểm thử phần mềm trên thiết bị di động, việc giải quyết chúng sẽ dễ dàng hơn rất nhiều.

1. Việc hỗ trợ nhiều nền tảng hoặc thiết bị đồng nghĩa với việc bạn sẽ có thêm nhiều phiên bản để kiểm thử.

Ứng dụng (phần mềm) trên desktop thường được xây dựng trên những nền tảng cụ thể tương đối dễ sử dụng. Ứng dụng trên web thì có thêm 1 chút phức tạp bởi có nhiều trình duyệt. Ứng dụng di động lại có độ phức tạp cao hơn do sự phức tạp của các thiết bị. Việc chắc chắn rằng ứng dụng di động chạy được trên tất cả các loại thiết bị (smartphone, tablet hay phablet được cung cấp bởi một số các nhà cung cấp lớn (như Samsung, Sony, Nokia, HTC, Apple…) và trên tất cả các hệ điều hành (iOS, Android, Windows, Blackberry…) thực sự là một thử thách. Và đặc biệt hơn nữa, khi một ứng dụng mới được đưa ra thị trường liên tục thì việc bảo đảm hoạt động trên tất cả các thiết bị phổ biến trở thành không thể. Trong thế giới di động, việc tạo ra một ứng dụng trên dòng trình duyệt phân loại được Yahoo sử dụng để đảm bảo rằng nền tảng chính được đảm bảo là rất quan trọng.

2. Khả năng thích nghi và không gian giới hạn khiến kích thước màn hình thay đổi liên tục.

Gần như tất cả các nhà cung cấp lớn đều thay đổi kích thước màn hình điện thoại, tablet hay phablet của họ vì lý do cạnh tranh. Việc nghiên cứu xem làm thế nào để ứng dụng có thể phù hợp với kích thước của các màn hình, layout khác nhau cũng là một thách thức. Ngoài việc thích nghi với những kích thước màn hình khác nhau thì ứng dụng còn phải phù hợp với những màn hình có kích thước giới hạn. Điều này có nghĩa rằng không thể đưa đến người dùng 30 lựa chọn khác nhau trên cùng một màn hình – tính khả dụng, kinh nghiệm sử dụng, trợ giúp trên màn hình… đã đưa ra những thách thức khác nhau và với vai trò là tester, chúng ta cần phải suy nghĩ xa hơn những gì được phát triển và luôn phải nghĩ về những người dùng ứng dụng và hoàn cảnh sử dụng.

3. Tương tác người dùng phức tạp có nghĩa là không chỉ có 1 cách để thực hiện mọi việc.

Tương tác của người dùng trên desktop và trình duyệt bị giới hạn bởi chuột và bàn phím. Mặt khác, ứng dụng di động lại đang gia tăng cường độ tương tác của người dùng lên mức cao nhất có thể. Chúng ta có màn hình cảm ứng và với những dòng sản phẩm mới của Samsung, chỉ cần vẫy tay là có thể sử dụng được điện thoại. Điều này cũng mở ra 1 tương lai mà mọi thiết bị đều có thể được điều khiển bằng giọng nói. Những thiết bị đó sẽ có khả năng nhận diện những cử chỉ phức tạp, ánh mắt, cử động của đầu, những đồ vật xung quanh, âm thanh, và hơn thế nữa. Và với tư cách là tester, chúng ta phải đảm bảo rằng các ứng dụng đều có thể vận hành dù người dùng có tương tác với chúng theo nhiều cách khác nhau.

4. Loại ứng dụng - HTML5, Native hoặc Hybrid - nghĩa là các ứng dụng đang có sự chồng chéo.

Với desktop và web, ứng dụng rất riêng biệt. Chúng hoặc là ứng dụng desktop, hoặc là ứng dụng web. Tuy nhiên, với sự hỗ trợ của HTML5, các ứng dụng đang dần hợp làm 1. Trên điện thoại, tìm được các ứng dụng HTML5, native (ứng dụng gốc) hay hybrid (ứng dụng lai) không khó. Test ứng dụng hybrid khác với test ứng dụng native, và việc hiểu rõ khác biệt đó cũng rất quan trọng.

5. Quá phụ thuộc vào sự giả lập và mô phỏng dẫn đến việc thiếu những trải nghiệm trên thiết bị thực tế.

Với desktop và trình duyệt, những người phát triển (developer) luôn có thể truy cập vào nền tảng hoặc trình duyệt họ muốn hướng tới bằng các ứng dụng thích hợp. Hơn nữa, công nghệ hình ảnh ảo cũng ít nhiều tạo nên sự đáng tin cho desktop và trình duyệt. Các thiết bị điện thoại thì ngược lại, chúng dựa vào giả lập và mô phỏng. Dù vậy, những giả lập đó vẫn không thể đại diện cho thiết bị thực tế. Và việc tái tạo các tương tác của người dùng trên các giả lập đó cũng là không thể. Với tư cách là tester, chúng ta phải nhận thức được các thế mạnh và điểm yếu của các giả lập đó để tìm ra mặt nào có thể test và mặt nào không.

6. Sự bảo mật và quyền riêng tư đòi hỏi ta phải sử dụng dữ liệu thật cẩn thận.

Dù hầu hết các ứng dụng điện thoại đều hoạt động trong khuôn khổ riêng, nhiều hệ điều hành vẫn có thể lấy được dữ liệu từ chúng. Ví dụ, những ứng dụng như ảnh hay video có thể được truy cập từ rất nhiều ứng dụng khác. Đây đều là thông tin cá nhân, và bất kỳ khiếm khuyết dẫn đến việc (vô tình) sử dụng dữ liệu sai mục đích đều có thể hủy hoại độ tin cậy của ứng dụng. Với di động, việc đảm bảo rằng ứng dụng không thể bị người ngoài xâm nhập rất quan trọng, và việc chắc chắn rằng ứng dụng không vô tình truy cập dữ liệu cũng quan trọng không kém.

7. Sự phụ thuộc vào các network và carrier đồng nghĩa với việc có nhiều biến thể cần test hơn.

Với desktop và web, hầu hết các người dùng đều sử dụng mạng LAN hoặc mạng không dây. Bản chất những network này không dễ đoán, nhưng nếu so sánh với network của di động thì còn đơn giản hơn nhiều. Rất nhiều ứng dụng của điện thoại cần có mạng - cách ứng dụng phản ứng với 3G, 4G, tín hiệu yếu, mất tín hiệu, tín hiệu mạnh hoặc khi người dùng di chuyển với các tốc độ khác nhau - có thể ảnh hưởng tới vận hành của ứng dụng. Và ta thường không thể đồng nhất những tình huống xảy ra trong cuộc sống với cách vận hành ứng dụng. Ngoài các tìnht trạng trên, ứng dụng còn có thể phản ứng khác với các carrier khác nhau. Là tester, chúng ta phải hiểu được ứng dụng có chạy tốt với hầu hết các carrier hay không.

8. Cài đặt, loại bỏ và cập nhật liên tục đòi hỏi ứng dụng phải đứng đầu trong danh sách các ứng dụng mới nhất.

Ứng dụng điện thoại được cài đặt, loại bỏ và cập nhật thường xuyên hơn ứng dụng desktop, các OS và nền tảng cũng được nâng cấp thường xuyên hơn. Với tư cách developer và tester, bạn phải luôn biết được bản OS/nền tảng tiếp theo có những thay đổi gì và chúng có thể ảnh hưởng tới ứng dụng ra sao. Thường thì với hầu hết các ứng dụng, dữ liệu của người dùng được lưu trữ trên servers chứ không phải thiết bị. Điều đó khiến việc cài đặt hơi rắc rối một chút. Nếu người dùng có nhiều hơn 1 thiết bị thì sao? Nếu những thiết bị đó có những phiên bản khác nhau của ứng dụng thì sao? Những thứ như tính tương thích ngược, hỗ trợ đồng thời cho nhiều phiên bản, bảo quản dữ liệu, khôi phục lại trạng thái và dữ liệu, khả năng cài đặt / nâng cấp nhiều lần đều chiếm phần quan trọng trong việc thử nghiệm ứng dụng di động.

9. Các phiên quản lý và gián đoạn nghĩa là phải đảm bảo rằng các ứng dụng hoạt động tốt.

Xử lý các phiên gián đoạn là cách điều hành các ứng dụng điện thoại. Ứng dụng và người dùng liên tục bị cuộc gọi, SMS, thông báo và nhiều thứ nữa cắt ngang. Cách các ứng dụng xử lý những trường hợp trên và duy trì trạng thái của chúng rất quan trọng, nhưng việc đảm bảo ứng dụng không làm gián đoạn giới hạn công việc đã được platform hoặc người dùng định sẵn cũng quan trọng không kém.

10. Việc test không dựa vào chức năng riêng của điện thoại đồng nghĩa với việc cần test theo nhiều hướng nhìn khác nhau.

Các ứng dụng điện thoại thêm yêu cầu thêm rất nhiều chiều hướng suy nghĩ khi test không dựa vào chức năng. Chức năng của ứng dụng thì đã rõ, nhưng còn rất nhiều yếu tố khác phải cân nhắc. Ứng dụng này đang tiêu tốn bao nhiêu dữ liệu? Ứng dụng này tiêu tốn bao nhiêu pin? Ứng dụng này có hoạt động khác đi nếu pin yếu không? Nó thải ra bao nhiêu dữ liệu rác? Nó xử lý dữ liệu rác như thế nào?...đều là những yếu tố cần phải được tính đến khi test.