Bài 2: KIỂM THỬ PHẦN MỀM TRÊN THIẾT BỊ DI ĐỘNG

Như chúng ta đã biết thì Công nghệ điện thoại di động và các thiết bị thông minh hiện nay là xu hướng và cũng là tương lại của thế giới. Mỗi ngày có hàng triệu ứng dụng được tải xuống từ Appstore hoặc Google Play về các thiết bị cá nhân. Các ứng dụng di động rất phong phú đa dạng đáp ứng đủ các nhu cầu học tập, chăm sóc sức khỏe hay giải trí của người dùng. Để kiểm thử được các ứng dụng trên các thiết bị di động (Mobile App Testing) thì trước hết ta cần hiểu định nghĩa về các thiết bị di động.

1. Các khái niệm cơ bản về ứng dụng di động

1.1. Giới thiệu

Ngày nay điện thoại thông minh và máy tính bảng là những thiết bị không thể thiếu đối với mỗi chúng ta. Những thiết bị này hiện nay đã có cả tỷ người sử dùng. Vì chúng rất phổ biến nên chúng phải có sự tin cậy, bảo mật và có tính tương thích cao. Khi việc dùng của chúng tăng lên thì nhu cầu về nhiều ứng dụng cũng tăng lên. Đó là lí do tại sao phát triển và kiểm thử ứng dụng di động là việc làm không thể thiếu trong công nghiệp công nghệ thông tin.

Điện thoại thông minh về căn bản là tổ hợp của máy tính và điện thoại cho nên nó là thiết bị phức tạp hơn máy tính. Có khác biệt giữa kiểm thử ứng dụng di động và kiểm thử ứng dụng máy tính. Nhiều người nghĩ phần mềm là phần mềm, nếu tôi có thể kiểm thử phần mềm trên máy tính, tôi có thể kiểm thử phần mềm trên điện thoại thông minh. Mặc dù các nguyên lí kiểm thử là như nhau nhưng kĩ thuật là khác nhau và yêu cầu cũng nhiều hơn. Trước khi xây dựng hay kiểm thử ứng dụng di động, bạn cần biết rằng sẽ có hàng triệu người dùng nó. Nếu đưa ra một ứng dụng di động với nhiều lỗi, nó có thể là một thảm hoạ. Điện thoại di động có bộ nhớ giới hạn và năng lực xử lí giới hạn, cho nên điều quan trọng là kiểm thử cách thiết bị làm việc khi nó đang đầy năng lực. Điều cũng quan trọng là nghĩ về tuổi thọ của pin liệu pin có hết chóng hơn với ứng dụng của bạn chạy không và điều gì xảy ra khi pin hết? Bạn phải kiểm thử cả tính dùng được. Tính dùng được nghĩa là kiểm thử nó trên người dùng thực về cách họ tương tác với ứng dụng? Dùng ứng dụng dễ thế nào? Các ứng dụng khó dùng thường bị xoá đi một khi người dùng thấy khó dùng. Bạn cần biết cách ứng dụng khớp với màn hình nhỏ. Chữ có dễ đọc không? Cách ứng dụng của bạn trông trên màn hình nhỏ là rất quan trọng. Ứng dụng có chạy nhanh không? Người dùng có cảm thấy họ đang đợi quá lâu để cho một yêu cầu được đáp ứng?

1.2. Phân loại ứng dụng trên thiết bị di động

  • Ứng dụng gốc (Native applications)

Ứng dụng được thiết kế đặc biệt chỉ chạy trên một hệ điều hành của một thiết bị nào đó và thường phải điều chỉnh để chạy được trên các thiết bị khác nhau. Native App, được hiểu nôm na là ứng dụng gốc, hay ứng dụng được viết cho các thiết bị di động, chạy trên từng nền tảng (iOS, Android, WindowsPhone,…) khác nhau và tất nhiên là trên các thiết bị khác nhau để thực hiện một chức năng cụ thể như: danh bạ, lịch, phần mềm nghe nhạc, xem video trên điện thoại/tablet, … và đa số các trò chơi trên thiết bị di động đều là ứng dụng gốc.

  • Ứng dụng Web (Web applications)

Ứng dụng được xây dựng trên nền tảng web chuẩn, được phát triển sử dụng công nghệ truyền thống web (HTML, CSS, Javascript) và viết mã lệnh phía máy chủ trong Node.js, PHP, ASP.NET,… Các ứng dụng web phù hợp cho trình duyệt trên điện thoại thông minh hoặc máy tính bảng và người dùng cần một trình duyệt và kết nối Internet để sử dụng chúng.

  • Ứng dụng lai (Hybrid applications)

Là sự kết hợp giữa ứng dụng gốc và ứng dụng Web, thường sử dụng kỹ thuật làm web như HTML5, CSS. Đây là một sự kết hợp của các công nghệ trước. Ứng dụng lai thường được xây dựng đa nền tảng vì vậy đặc tính chính và lợi thế của chúng là tính di động. Có một số phương pháp bàn đến vấn đề làm thế nào để xây dựng các ứng dụng lai. Hầu hết sử dụng đa nền tảng ứng dụng công nghệ web. Sự khác biệt giữa ứng dụng lai và ứng dụng web là ứng dụng lai có gói ứng dụng gốc và nó thường được cài đặt từ nền tảng AppStore riêng.

1.3. Các hệ điều hành trên thiết bị di động

  • Hệ điều hành Android

Android là hệ điều hành phát triển nhanh nhất và phổ biến rộng rãi nhất trong các hệ điều hành di động. Android được sở hữu và quản lý bởi Open Handset Alliance – tập đoàn công nghiệp tạo phần cứng, phần mềm và viễn thông tiêu chuẩn mở cho thiết bị di động. Tập đoàn này được dẫn dắt bởi Google. Kể từ khi Android là dự án mã nguồn mở dựa trên Linux, hầu hết các nhà sản xuất và các hãng di động tận dụng điều đó và sửa đổi hệ điều hành cho phù hợp với phần cứng của họ, tăng sự phức tạp của các hệ thống. Thực tế này làm cho hệ điều hành điện thoại di động Android bị phân mảnh nhất, làm tăng chi phí kiểm tra và phức tạp. Tuy nhiên, nhiều công cụ kiểm thử khác nhau và mục tiêu các framework mục chủ yếu là cho Android do nó là hệ điều hành phổ biến nhất.

  • Hệ điều hành iOS

IOS là hệ điều hành di động phát triển và sở hữu bởi Apple Inc. Đó là mã nguồn đóng, hệ thống vận hành giống Unix dựa trên Darwin (BSD) và OS X. IOS được phát triển cho iPhone, nhưng bây giờ iOS chạy trên iPad, iPod Touch hoặc Apple TV. Các nhà sản xuất khác không được cấp phép sử dụng iOS. Do đó, chỉ các thiết bị của Apple có thể chạy nó.

Hầu hết người dùng iOS có phiên bản iOS 10 hay mới nhất 11. Kết quả là, thử nghiệm trên tất cả các thiết bị có sẵn không phải là khó khăn như trên Android. Hệ điều hành phân mảnh được trình bày chủ yếu bởi các tính năng thiết lập hệ điều hành khác nhau (một số tính năng không có sẵn trên một số thiết bị).Mặt khác, các thiết bị của Apple là một trong những thiết bị rất tốn kém.

Tiêu chuẩn tích hợp môi trường phát triển (IDE) cho các ứng dụng gốc là Xcode và chỉ có thể được cài đặt trên hệ điều hành của Apple OS X.

  • Hệ điều hành Windows & Windows Phone

Với Windows 8, Microsoft đã chuyển hệ điều hành Windows đến với các thiết bị di động. Windows 8.1, là phiên bản hiện tại, có thể chạy trên máy tính cá nhân và máy tính bảng. Hơn nữa, Microsoft đã có hệ điều hành Windows Phone đặc biệt cho điện thoại thông minh. Hai nền tảng được hội tụ trong Windows 10.

2. Phương pháp kiểm thử trên thiết bị di động

2.1. Kiểm thử trên các thiết bị thực

Kiểm thử trên các thiết bị thực là thực sự cần thiết cho tất cả các ứng dụng di động. Nó cho các kết quả thực tế nhất và kiểm thử có thể thực hiện trên tất cả các kịch bản kiểm thử cần thiết. Mặt khác, nó vô cùng khó khăn và tốn kém để kiểm thử ứng dụng trên tất cả các thiết bị có sẵn.

  • Ưu điểm:

Giao diện tương tác người dùng thật, để đạt được thử nghiệm người dùng đáng tin cậy, xử lý một thiết bị thực là thực sự cần thiết.

Tương tác với cảm biến – nếu ứng dụng thử nghiệm sử dụng cảm biến (ví dụ gia tốc, la bàn, máy ảnh,…), sau đó thử nghiệm đã vận hành thiết bị trong tay. Một số mô phỏng cũng bắt chước được hành vi của các cảm biến này nhưng kết quả của nó không thực tế.

Độ tin cậy – tất cả các trường hợp kiểm thử trên các thiết bị thực tế cho chúng ta sự bảo đảm tốt nhất giữa người sử dụng với các thiết bị tương ứng.

  • Nhược điểm:

Loại thiết bị và chi phí thử nghiệm trên vài thiết bị thực không bảo đảm ứng dụng sẽ làm việc trên thiết bị khác. Mua thiết bị kiểm thử mới cũng rất tốn kém.

Giới hạn nhà cung cấp dịch vụ di động – khó thử nghiệm các ứng dụng di động mà phải thực hiện trên các nhà cung cấp dịch vụ di động khác nhau vì khác cơ sở hạ tầng mạng hoặc có thể bị cấm bởi một số trang web.

2.2. Kiểm thử trên máy mô phỏng và giả lập

Máy mô phỏng và giả lập là loại phần mềm cho phép chạy một hệ thống máy tính trên nền tảng máy chủ.

Hiện tại có sẵn cho mỗi nền tảng và thường tích hợp vào IDE như Android Studio, Xcode hoặc Visual Studio, Eclipse.

Có sự khác biệt giữa giả lập và mô phỏng. Giả lập bắt chước hành vi của phần mềm và sử dụng tất cả tài nguyên sẵn có từ máy chủ như CPU, bộ nhớ, mạng, v.v. Kiểm thử trên giả lập có thể cung cấp kết quả sai lệch bởi vì máy chủ có thể nhanh hơn nhiều so với các thiết bị thật.

Chương trình mô phỏng cung cấp kết quả thực tế hơn vì chúng thể hiện thiết bị một cách chính xác hơn. Tốc độ xử lý, sử dụng bộ nhớ hoặc sự hiện diện thẻ nhớ, thậm chí các loại kết nối mạng hoặc cường độ tín hiệu có thể được thiết lập để tạo ra môi trường thực tế hơn.

Có rất nhiều mô phỏng và giả lập trên thị trường với các tính năng khác nhau và hạn chế. Tuy nhiên, tất cả đều có một số ưu điểm và nhược điểm tương tự.

  • Ưu điểm:

Chi phí thấp – giả lập chuẩn có trong bộ cài cùng với SDK là miễn phí.

Luôn được cập nhật phiên bản mới của giả lập cùng với phiên bản mới của SDK.

Nhanh chóng và đơn giản để sử dụng – ứng dụng có thể dễ dàng triển khai và cài đặt từ IDE.

Tùy chọn vị trí, kích thước màn hình và độ phân giải, loại kết nối, máy ảnh,…có thể được mô phỏng.

  • Nhược điểm:

Kết quả thử nghiệm bị sai lệch do giả lập và luôn luôn có một khả năng mà các ứng dụng có thể xử lý hơi khác nhau trên thiết bị thực tế bởi vì các phần cứng khác nhau, môi trường mạng hay phần mềm khác biệt.

Không thể thực hiện trong tất cả trường hợp kiểm thử – khi làm việc với giả lập, thử nghiệm sẽ bị giới hạn bởi tài nguyên máy chủ và tính năng bộ mô phỏng. Ứng dụng thử nghiệm sử dụng kết nối không dây hoặc la bàn có thể không được thực hiện cũng như gián đoạn của ứng dụng với cuộc gọi đến hay SMS.

Không đáp ứng kịp thời – một số giả lập chậm và hình ảnh động hay trò chơi bị chậm. Trong trường hợp kiểm thử tài liệu dài, thời gian có thể kéo dài hơn.

2.3. Kiểm thử trên thiết bị di động đám mây

Thử nghiệm thiết bị di động đám mây là một dịch vụ cho phép để chạy tự động hoá hoặc thử nghiệm bằng tay trên hàng trăm thiết bị vật lý trong đám mây. Ví dụ như SOASTA CloudTest, SeeTest Cloud,…

Mục đích chính của những thử nghiệm thiết bị di động đám mây là để tìm lỗi mà chỉ xuất hiện trên một số thiết bị hoặc một số phiên bản hệ điều hành. Nó có thể tiết lộ các lỗi có thể được ẩn từ các nhà phát triển nếu họ sử dụng giả lập và chỉ có vài thiết bị vật lý. Ví dụ, giao diện người dùng quá tải (sai lầm phổ biến) hay như một sự chậm trễ ngắn trên thử nghiệm thiết bị vật lý và mô phỏng có thể sẽ nhận thấy. Nhưng trên các thiết bị cũ hoặc cấp thấp với sức mạnh tính toán thấp, nó có thể gây ra hiện tượng các giao diện người dùng không được hiển thị đúng trong trường hợp tốt, treo hoặc sập trong trường hợp tồi tệ hơn.

  • Ưu điểm:

Đa dạng về thiết bị – Kiểm thử viên phần mềm có thể nhanh chóng phát hiện lỗi hay thiếu sót đó bắt nguồn từ việc sử dụng phần cứng hoặc phần mềm khác nhau trong các thiết bị di động. Không cần phải nâng cấp và hạ cấp thiết bị vật lý của nhà phát triển để thi hành thử nghiệm trên vài phiên bản hệ điều hành.

Khả năng tự động hoá – tự động chạy thử cùng một lúc nhiều thiết bị. Kiểm thử viên phần mềm có thể xem bản ghi thử nghiệm đối với mỗi thiết bị thông qua web tương tác.

  • Nhược điểm:

Chi phí – điều này có thể là một cản trở cho các công ty nhỏ hoặc cỡ trung mà giải pháp di động không phải là ưu tiên.

Không thể để kiểm tra hết tất cả các trường hợp thử nghiệm – mặc dù các thử nghiệm được thực hiện trên các thiết bị thực tế, ta vẫn không thể kiểm tra được la bàn, gia tốc, GPS hoặc máy ảnh.

Bảo mật – đám mây được dùng chung vậy nên sẽ có một số vấn đề bảo mật xảy ra với việc gửi gói ứng dụng trên đám mây. Ứng dụng sẽ được chạy trong môi trường không an toàn nơi giả lập chạy thử ứng dụng.

Không đáp ứng kịp thời – thời gian thử nghiệm có thể kéo dài vì độ trễ mạng.

3. Các loại kiểm thử di động

3.1. Kiểm thử phần cứng

Thiết bị bao gồm bộ xử lý trong, phần cứng bên trong, kích thước màn hình, độ phân giải, bộ nhớ, camera, radio, bluetooth, wifi,…

3.2. Kiểm thử phần mềm hoặc kiểm thử ứng dụng

Ứng dụng làm việc trên các thiết bị di động và các chức năng của nó được kiểm thử. Điều này gọi là kiểm thử ứng dụng di động để phân biệt với các nền tảng khác. Ngay cả trong ứng dụng di động, có một vài điểm khác biệt cơ bản quan trọng cần phải hiểu về các loại ứng dụng:

  • Ứng dụng gốc chỉ chạy trên một nền tảng trong khi ứng dụng di động web thì đa nền tảng.
  • Ứng dụng gốc được viết trên nền tảng giống SDK trong khi ứng dụng di động web được viết với các công nghệ web: html, css, asp.net, java, php.
  • Trong một vài ứng dụng gốc, việc cài đặt là bắt buộc nhưng trong ứng dụng di động web, việc cài đặt là không cần thiết.
  • Ứng dụng gốc phải được cập nhật từ play store hoặc app store trong khi các ứng dụng di động web thì không cần như vậy.
  • Rất nhiều ứng dụng gốc không yêu cầu kết nối internet nhưng ứng dụng di động web thì yêu cầu.
  • Ứng dụng gốc làm việc nhanh hơn khi so sánh với ứng dụng di động web
  • Ứng dụng gốc được cài đặt thông qua app stores hoặc google play store trong khi ứng dụng mobile web là các websites và được truy nhập thông qua internet.

4. Các đặc điểm của kiểm thử di động

4.1. Sự đa dạng các thiết bị di động

Đa dạng các hãng sản xuất thiết bị như HTC, SamSung, Apple, Nokia,… với các kích thước màn hình và cấu hình phần cứng khác nhau.

Đa nền tảng: 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ách thức.

Các thiết bị di động có thời gian chạy ứng dụng khác nhau.

4.2. Thách thức phần cứng của thiết bị

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: Với mỗi một dòng máy, mỗi loại thiết bị sẽ có nhiều kích thước khác nhau để đáp ứng tính cạnh tranh trên thị trường nên việc phát triển làm sao để ứng dụng có thể thích nghi với kích thước của các màn hình khác nhau cũng là một thách thức.

Giới hạn tốc độ xử lý: các thiết bị di động đang ngày càng được nâng cấp về tốc độ xử lý để phù hợp với nhu cầu ngày càng cao của người dùng.

Giới hạn dung lượng bộ nhớ của thiết bị: không giống như trên máy tính, dung lượng bộ nhớ của các thiết bị di động gần như không thể thay thế hay nâng cấp.

Sự khác biệt về giao thức của thiết bị WAP/HTTP.

4.3. Thách thức về đường truyền mạng

  • Đa dạng các loại mạng (GSM/GPRS/WIFI/3G).
  • Không dự đoán được thời gian cho truyền tải dữ liệu.
  • Khác biệt về tốc độ kết nối.
  • Đa dạng các nhà mạng với những tính năng mạng khác nhau.

4.4. Các ca kiểm thử đặc biệt cho kiểm thử các ứng dụng di động

  • Sự hao tổn pin: Việc theo dõi sự hao tổn pin khi chạy ứng dụng trên thiết bị di động rất quan trọng.
  • Tốc độ chạy ứng dụng: Theo dõi thời gian phản hồi trên các thiết bị khác nhau với các dung lượng bộ nhớ khác nhau, tốc độ mạng khác nhau.
  • Yêu cầu bộ nhớ: Khi tải, cài đặt và chạy ứng dụng.
  • Kiểm tra tính tương thích của ứng dụng: Để đảm bảo ứng dụng không bị crash khi mất kết nối mạng hoặc các tác động ngoại vi khác.

Ngoài ra kiểm thử ứng dụng di động cũng bao gồm các dạng kiểm thử sau:

  • Kiểm thử giao diện (UI Testing): Kiểm tra màu sắc, phong cách Menu, nhất quán của giao diện người dùng trên các thiết bị khác nhau.
  • Kiểm thử chức năng (Function Testing): Kiểm tra các chức năng chính của ứng dụng di động theo đặc điểm kĩ thuật của thiết bị.
  • Kiểm thử hiệu suất và chịu tải (Performance and Load Test): Kiểm tra hành vi của ứng dụng di động trong các nguồn tài nguyên thấp (Bộ nhớ/ Không gian lưu trữ), hành vi của trang web điện thoại di động khi nhiều người sử dụng điện thoại di động cùng truy cập vào trang app di động.
  • Kiểm tra khả năng sử dụng (Usability Testing): Kiểm tra các khía cạnh khả năng sử dụng các ứng dụng di động.
  • Thử nghiệm tương thích (Compatibility Testing): Kiểm tra khả năng tương thích của ứng dụng của bạn với các tính năng thiết bị gốc để đảm bảo rằng ứng dụng của bạn không cản trở các ứng dụng khác trong thiết bị.
  • Kiểm tra gián đoạn: Vì lí do các thiết bị di động có bộ nhớ thấp hơn nhiều so với desktop nên phải đảm bảo rằng khi có cuộc gọi thoại, tin nhắn SMS, cắm sạc, thông báo bộ nhớ thấp trong khi ứng dụng đang chạy không gây ra bất cứ xung đột nào.

Có thể bạn sẽ thích…

Trả lời

EnglishVietnamese