Các thách thức của kiểm thử ứng dụng di động

Một phần của tài liệu NGHIÊN CỨU PHÁT TRIỂN KỸ THUẬT VÀ GIẢI PHÁP KIỂM THỬ ỨNG DỤNG DI ĐỘNG (Trang 34 - 38)

DI ĐỘNG VÀ PHƯƠNG PHÁP PHÁT TRIỂN LINH HOẠT

1.5. Các thách thức của kiểm thử ứng dụng di động

Nghiên cứu của luận án tập trung phân tích những thách thức và các hướng nghiên cứu tiềm năng trong tương lai về (i) qui trình và mơi trường kiểm thử, (ii) kỹ thuật kiểm thử, (iii) các mức kiểm thử, (iv) phạm vi kiểm thử được thực hiện.

o Khách hàng: Kỳ vọng của khách hàng là một trong những thách thức chính đối với các nhà phát triển di động. Mỗi người dùng có kỳ vọng từ các ứng dụng di động là duy nhất, dẫn đến việc phát triển và cung cấp một sản phẩm thỏa mãn cho khách hàng là khá khó khăn. Theo khảo sát của Compuware [71], có gần 80% người dùng xóa một ứng dụng sau khi sử dụng nó lần đầu tiên. Bốn lý do hàng đầu để xóa ngay lập tức sau khi cài đặt là: thiết kế xấu, khả năng sử dụng kém, thời gian tải chậm, treo máy. Gần 60% người sử dụng sẽ xóa một ứng dụng mà có yêu cầu đăng ký và hơn một nửa số người dùng mong đợi một ứng dụng có thể khởi động trong 2 giây. Dựa trên những con số cho thấy rằng, người dùng di động có kỳ vọng thực sự cao khi nói đến khả năng sử dụng, hiệu năng và độ tin cậy của ứng dụng di động. Hướng kiểm thử về hiệu năng, tính

dễ sử dụng và độ tin cậy của ứng dụng là rất quan trọng cần phải được thực hiện.

o Nền tảng di động và sự phân mảnh thiết bị: Các nhà cung cấp điện thoại di động khác nhau và các nền tảng di động khác nhau sẽ là một thách thức lớn cho phát triển và kiểm thử. Dựa trên các số liệu từ OpenSignal [7], gần 19.000

thiết bị Android có sẵn trên thị trường. Cho nên khơng thể và không cần thiết phải thử nghiệm trên tất cả các thiết bị. Các phần cứng và phần mềm có thể kết hợp trên các nền tảng cũng là một thách thức lớn cho phát triển và kiểm thử. Giải pháp thực hiện là phân nhóm thiết bị, thực hiện kiểm thử tổ hợp để làm giảm số lượng kiểm thử, giảm khối lượng cơng việc của kiểm thử, tăng năng suất.

o Vịng đời của ứng dụng di động: Đối với các ứng dụng di động, chu kỳ sống

(vòng đời) được coi là các trạng thái khác nhau mà một ứng dụng có thể trải qua trong thời gian chạy của nó và chuyển đổi giữa các trạng thái. Khi phát triển các ứng dụng di động chạy trên hệ điều hành Android hay iOS, các nhà phát triển phải quan tâm các trạng thái của chu kỳ sống để đảm bảo chính xác hành vi của ứng dụng trong mọi trường hợp. Điều này sẽ đảm bảo rằng các nhà phát triển có thể xây dựng một ứng dụng di động đáng tin cậy và đầy đủ, hoạt

động một cách chính xác và có thể duy trì tính tồn vẹn dữ liệu [45,60 ,88]. Có hai nghiên cứu đã đề xuất và đánh giá cách tiếp cận kiểm tra sự phù hợp của

các ứng dụng di động cho các mơ hình vịng đời [35], [36]. Tuy nhiên, các phương pháp được đề xuất là rất cơ bản và hầu hết các bước quan trọng được đề xuất là thủ công và phụ thuộc vào các nhà phát triển hoặc nhận thức của kiểm thử viên về vấn đề này.

o Qui trình kiểm thử: Qui trình kiểm thử ứng dụng di động bao gồm nhiều hoạt

động khác nhau nhưng chỉ tập trung vào khâu chọn lựa kỹ thuật, phương pháp, lựa chọn kịch bản kiểm thử và cách thức thực thi. Các ứng dụng MobileApps nhận các giá trị đầu vào từ các đối tượng ngữ cảnh khác nhau như người dùng, sensor và các thiết bị kết nối, các dữ liệu vào từ các ngữ cảnh khác nhau và luôn thay đổi. Điều này sẽ dẫn đến việc khơng thể dự đốn được mức độ biến

động của các giá trị đầu vào mà ứng dụng sẽ nhận. Do đó, các điều kiện kiểm thử mới sẽ được yêu cầu cung cấp các hướng dẫn, các luật và chiến lược cho việc sẽ lựa chọn kịch bản kiểm thử nào để đảm bảo mức độ bao phủ tối đa trong trường hợp khơng dự đốn được mức độ biến đổi của dữ liệu vào theo ngữ cảnh. Đối với các ứng dụng Apps4Mobile, việc thực thi kiểm thử cơ bản giống với các ứng dụng truyền thống. Còn đối với các ứng dụng MobileApps, thông tin ngữ cảnh sẽ là thách thức cho việc thực thi các trường hợp kiểm thử. Hiện tại các trình giả lập khơng thể mơ phỏng được thực tế của các điện thoại với các sensor, GPS, hay các kết nối. Kỹ thuật ghi (capture) và chạy lại (replay) mới có thể được triển khai cho việc thực thi các trường hợp kiểm thử với dữ liệu vào phụ thuộc ngữ cảnh trong suốt giai đoạn lựa chọn trường hợp kiểm thử. Áp dụng phương pháp kiểm thử hướng ngữ cảnh, kiểm thử hướng mơ hình là hướng giải quyết cho thách thức này.

o Kiểm thử chức năng: Các kỹ thuật kiểm thử chức năng sẽ yêu cầu xác định cả ứng dụng và môi trường mà nó hoạt động. Cách tiếp cận dựa trên trạng thái có thể được xem là một phần hữu hiệu cho việc xác định các trạng thái khác nhau cho một ứng dụng di động có thể tính đến khi nhận các dữ liệu cảm ứng khác nhau. Cũng có thể sử dụng cách tiếp cận dựa trên trạng thái (State-based) cho mơ hình các chế độ thực thi kiểm thử khác nhau như (chế độ low battery, flight mode, meeting). Các cơng cụ hiện tại như Robotium có thể được sử dụng;

MonkeyRunner có thể dùng kiểm thử chức năng cho ứng dụng Android. MobileTest là công cụ kiểm thử tự động hộp đen cho các ứng dụng di động.

o Kiểm thử đơn vị và kiểm thử tích hợp: Các cơng cụ, các nghiên cứu hiện nay tập trung nhiều cho kiểm thử đơn vị (Unit test) cịn kiểm thử tích hợp dường như ít được quan tâm khai thác. Đối với việc lập trình các ứng dụng di động hiện nay, kiểm thử đơn vị được tập trung triển khai và hỗ trợ nhiều, iOS có hướng dẫn cho kiểm thử đơn vị; Android có Junit. Tuy nhiên cả 2 trường hợp đều không xem xét đến giá trị ngữ cảnh (contextual values).

o Kiểm thử tích hợp: Trong khi hầu hết các cách tiếp cận kiểm thử hiện tại đều xem xét các ứng dụng di động trong sự cô lập. Kiểm thử tích hợp các ứng dụng di động là nói đến việc kiểm thử tính giao tiếp giữa các ứng dụng thơng qua ý định hoặc nơi cung cấp nội dung trong nền tảng Android [76]. Thông thường các ứng dụng di động khơng tồn tại riêng một mình mà nó có nhu cầu trao đổi dữ liệu với các thành phần khác hoặc các ứng dụng thuộc hệ điều hành. Tương tự, các ứng dụng di động cũng thường yêu cầu giao tiếp với các ứng dụng khác bên ngoài như các trang web mạng xã hội (như Facebook, Twitter và MySpace)

[79].

o Kiểm thử độ tin cậy và hiệu năng: Hiệu năng và độ tin cậy của ứng dụng phụ thuộc rất lớn vào tài nguyên của thiết bị di động, phụ thuộc vào chế độ hoạt động của thiết bị, chất lượng kết nối và mức độ biến thiên thông tin ngữ cảnh. Các kỹ thuật kiểm thử mới cho phân tích độ tin cậy và hiệu năng của ứng dụng phải xem xét đến các đặc tính liên quan sự thay đổi ngữ cảnh và sự khác nhau của thiết bị. Các kỹ thuật phân tích khi run-time có thể cũng được thích ứng để

giám sát tài nguyên và trạng thái kết nối.

o Kiểm thử bộ nhớ và năng lượng: Lãng phí, rị rỉ bộ nhớ có thể làm hạn chế tài nguyên của hệ thống, các tiến trình đang hoạt động có thể làm giảm năng lượng của thiết bị. Có thể sử dụng các độ đo để đo lường, ước lượng năng lượng sử dụng và tiêu thụ năng lượng được đề xuất để tự động dự đốn mức độ rị rỉ bộ nhớ và mất mát năng lượng. Nghiên cứu hiện tại có iOS Instruments cho phép phân tích rị rỉ bộ nhớ (memory leaks). Tuy nhiên, việc phân tích như vậy là chưa đầy đủ. Thompson et al. [41] [111] đã đề xuất một cơng cụ hướng mơ

hình để mơ hình hóa các kiến trúc phần mềm di động một cách liên tục được sử dụng để sinh mã mô phỏng ước lượng tiêu thụ điện năng.

o Kiểm thử bảo mật: Tính bảo mật đặc biệt có liên quan đến tính di động của thiết bị vào các vùng mạng có mức độ an ninh là khác nhau. Một trojan có thể truy xuất vào thơng tin cá nhân, các mạng riêng và thông tin ngữ cảnh riêng tư như vị trí người dùng ứng dụng đang đứng. Các mạng khác nhau đại diện cho tính đặc thù của các ứng dụng di động nên phương pháp kiểm tra an ninh truyền thống được thay đổi để xem xét các yếu tố ngữ cảnh phải được mô phỏng nhằm

kiểm tra những dữ liệu được truyền từ các thiết bị di động.

o Kiểm thử tự động: Hầu hết các phát triển ứng dụng di động được coi là phát triển nhanh chóng và các đội dự án sẽ phân phối các ứng dụng cho thị trường trong một thời gian ngắn để theo kịp với nhu cầu thị trường. Với sự hỗ trợ của kiểm thử tự động, kỹ sư kiểm thử có nhiều khả năng để có thể bắt kịp với các kỹ sư phát triển để duy trì sự nhanh nhẹn này. Hơn nữa, kiểm thử tự động giúp tiết kiệm thời gian cho các kỹ sư kiểm thử, hạn chế sai sót của các kiểm thử thủ công. Những công cụ hỗ trợ kiểm thử tự động hiện tại chủ yếu là kiểm thử đơn

vị và kiểm thử giao diện UI [34].

o Kiểm thử dòng sản phẩm: Kiểm thử một ứng dụng trên nhiều thiết bị khác nhau thực sự là một thách thức quan trọng, đặc biệt như Android OS, các diện thoại khác nhau sẽ cung cấp các thành phần phần cứng và tính năng khác nhau cũng như các nhà sản suất điện thoại tùy biến hệ điều hành khác nhau. Việc xem xét hơn 130 điện thoại di động khác nhau đang chạy Android OS với 7 phiên bản khác nhau và nếu cứ mỗi thiết bị có 02 firmwares thì sẽ có đến 1800 tổ hợp khác nhau. Do đó, việc kiểm thử trên nhiều thiết bị sẽ được thay thế bởi các kỹ thuật được tự động hiệu quả hơn về mặc chi phí. Một cách tiếp cận khác là cho phát hành bản kiểm thử beta (miễn phí) trên các thiết bị khác nhau, từ đó thu thập dữ liệu lỗi, dữ liệu khi chạy để phân tích và tìm lỗi.

Một phần của tài liệu NGHIÊN CỨU PHÁT TRIỂN KỸ THUẬT VÀ GIẢI PHÁP KIỂM THỬ ỨNG DỤNG DI ĐỘNG (Trang 34 - 38)