## **Mobile Testing: Giới thiệu tổng quan về kiểm thử ứng dụng trên mobile** Một vài hoặc tất cả các loại kiểm thử có thể được thực hiện tùy thuộc vào yêu cầu kiểm thử thiết bị di động của bạn: Kiểm thử chức năng (Functional testing) Kiểm thử hiệu năng (Performance testing) Kiểm thử bảo mật (Security testing) Kiểm thử tính khả dụng (Usability testing) Kiểm thử khả năng tương thích (Compatibility testing) Kiểm thử phục hồi (Recoverability Testing) # **Functional testing:** Kiểm thử chức năng của điện thoại thông thường xoay quanh các lĩnh vực kiểm tra sự tương tác với người dùng cũng như kiểm tra các giao dịch. Những yếu tố khác nhau có liên quan đến việc kiểm thử chức năng: 1. Loại ứng dụng dựa trên việc sử dụng các chức năng cho loại hình doanh nghiệp (hệ thống ngân hàng, game, ứng dụng xã hôi hoặc ứng dụng doanh nghiệp...) 2. Loại đối tượng hướng tới (người tiêu dùng, doanh nghiệp, giáo dục) 3. Kênh phân phối được sử dụng để truyền tải các ứng dụng (Apple App Store, Google play hoặc phân phối trực tiếp) Hầu hết các kịch bản kiểm thử cơ bản trong kiểm thử chức năng có thể được xem xét như sau: 1. Để xác nhận xem tất cả các trường bắt buộc có làm việc đúng theo yêu cầu hay không. 2. Để xác nhận xem các trường bắt buộc khi hiển thị trên màn hình có khác biệt so với các trường không bắt buộc không. 3. Để xác nhận xem ứng dụng có làm việc đúng yêu cầu khi khởi động hoặc dừng ứng dụng không. 4. Để xác nhận xem ứng dụng có ở chế độ minimized khi điện thoại có cuộc gọi đến không. Để xác nhận vấn đề này, chúng ta cần sử dụng một chiếc điện thoại thứ hai và thực hiện call tới thiết bị đang thực hiện kiểm thử. 5. Để xác nhận xem điện thoại có thể lưu trữ, xử lý và nhận SMS khi ứng dụng đang chạy hay không. Để xác nhận vấn đề này, chúng ta cần sử dụng một chiếc điện thoại thứ hai để gửi SMS đến thiết bị đang thực hiện kiểm thử và ở thời điểm ứng dụng đang hoạt động. 6. Để xác nhận xem thiết bị có thể thực hiện đa nhiệm khi nó cần thực hiện hay không. 7. Để xác nhận xem ứng dụng có cho phép các tùy chọn mạng xã hội cần thiết như: Share, Post hoặc Navigation... hay không 8. Để xác nhận xem ứng dụng có hỗ trợ bất kỳ các phương thức giao dịch qua cổng thanh toán nào như: Visa, Mastercard, Paypal ... theo yêu cầu của ứng dụng hay không. 9. Để xác nhận xem các kịch bản page scrolling có đang được hoạt động trong ứng dụng khi cần thiết hay không. 10. Để xác nhận sự điều hướng giữa các modules có liên quan trong ứng dụng là đúng yêu cầu. 11. Để xác nhận các lỗi truncation hoàn toàn đến một giới hạn chấp nhận được. 12. Để xác nhận xem người dùng có nhận được thông báo lỗi thích hợp như “Network error. Please try after some time” bất cứ khi nào bị lỗi mạng hay không. 13. Để xác nhận xem ứng dụng cài đặt có cho phép các ứng dụng khác hoạt động một cách hợp lý, và nó không ảnh hưởng đến bộ nhớ của các ứng dụng khác hay không. 14. Để xác nhận xem ứng dụng có khôi phục lại ở lần hoạt động cuối cùng trong trường hợp reboot lại thiết bị hoặc hệ thống bị crash hay không. 15. Để xác nhận xem việc cài đặt ứng dụng có thể được thực hiện suôn sẻ, cung cấp cho người dùng các tài nguyên cần thiết và nó không dẫn đến bấy kỳ lỗi đáng kể nào. 16. Xác nhận ứng dụng thực hiện tự động khởi động dễ dàng theo đúng yêu cầu. 17. Để xác nhận ứng dụng có thực hiện đúng theo yêu cầu trên tất cả các phiên bản của điện thoại là: 2G, 3G và 4G. 18. Thực hiện kiểm thử hồi quy để tìm kiếm những lỗi mới của một hệ thống sau khi chúng đã được thay đổi. Cũng thực hiện chạy lại các kiểm thử trước đó để xác định trạng thái của chương trình không thay đổi so với sự thay đổi. 19. Xác nhận xem ứng dụng có cung cấp một hướng dẫn sử dụng có sẵn để cung cấp cho những người không quen thuộc với các ứng dụng. # **Performance testing:** Đây là loại mục tiêu cơ bản của kiểm thử để chắc chắn rằng ứng hoạt động ở trạng thái chấp nhận được dưới các yêu cầu về hiệu xuất như: hệ thống được truy cập bởi một số lượng người dùng lớn hoặc xóa đi một phần quan trọng của cơ sở hạ tầng như là cơ sở dữ liệu. Các kịch bản kiểm thử performance thông thường trong một ứng dụng mobile: 1. Để xác định xem liệu ứng dụng có thực hiện như yêu cầu của các điều kiện tải khác nhau hay không. 2. Để xác định xem vùng phủ sóng mạng hiện tại có thể hỗ trợ mức độ sử dụng ứng dụng ở mức độ tối đa, trung bình hay tối thiểu. 3. Để xác định xem thiết lập cấu hình client-server có cung cấp được mức độ hiệu suất tối ưu hay không. 4. Xác định app khác nhau và cơ sở hạ tầng tắc nghẽn, gián đoạn, nó có thể ngăn app thực hiện các chức năng ở mức độ yêu cầu thấp nhất. 5. Để xác nhận xem liệu thời gian phản hồi của ứng dụng có đúng theo yêu cầu hay không. 6. Đánh giá sản phẩm và/hoặc phần cứng để xác định xem khả năng chịu tải của nó như thế nào. 7. Để xác nhận xem liệu tuổi thọ của pin có thể hỗ trợ ứng dụng thực hiện các khối lượng công việc cần thực hiện. 8. Để xác nhận hiệu năng của ứng dụng khi chuyển mạng từ WIFI sang 2G/3G hoặc ngược lại. 9. Để xác nhận mỗi yêu cầu đối với chu trình CPU là tối ưu hóa. 10. Để xác nhận mức độ tiêu thụ pin, tiêu tốn bộ nhớ, hiệu suất của các nguồn tài nguyên như GPS, Camera cũng nằm trong những chỉ dẫn cần có. 11. Xác nhận sự bền bỉ của ứng dụng bất cứ khi nào người dùng tải dữ liệu là chính xác. 12. Để xác định hiệu suất của network trong khi di chuyển xung quanh. 13. Để xác định hiệu suất của ứng dụng khi chỉ có việc yêu cầu kết nối bị gián đoạn liên tục. # **Security testing:** Mục tiêu cơ bản của kiểm thử bảo mật là đảm bảo dữ liệu của ứng dụng và yêu cầu an ninh mạng được đáp ứng theo guideline. Sau đây là một số phần quan trọng nhất để kiểm thử bảo mật của những ứng dụng mobile: 1. Để xác nhận rằng ứng dụng có khả năng chịu được bất kỳ cuộc tấn công mạnh mẽ nào đó là một quá trình tự động thử và sai được sử dụng để đoán tên truy cập, mật khẩu hoặc số thẻ tín dụng. 2. Để xác minh xem một ứng dụng không cho phép kẻ tấn công truy cập những nội dung nhạy cảm hoặc truy cập các chức năng mà không cần chứng thực. 3. Để xác nhận rằng ứng dụng có một hệ thống bảo vệ mật khẩu mạnh mẽ và nó không cho phép các kẻ tấn công có thể thay đổi hoặc khôi phục mật khẩu của người dùng khác. 4. Để xác nhận rằng ứng dụng không bị ảnh hưởng gì từ việc không đủ hiệu lực thực hiện các session. 5. Đảm bảo rằng ứng dụng luôn chủ động và có biện pháp để ngăn chặn những kẻ tấn công vào các lỗ hổng. 6. Để ngăn chặn các cuộc tấn công liên quan đến SQL injection 7. Để xác định và phục hồi từ bất kỳ những kịch bản code nào không được quản lý. 8. Để xác định xem các chứng thực đã được xác nhận, ứng dụng đã thực hiện Certificate Pinning hoặc không. 9. Để bảo vệ các ứng dụng và hẹ thống mạng từ những cuộc tấn công từ chối dịch vụ. 10. Để phân tích những yêu cầu lưu trữ và xác định dữ liệu. 11. Để cho phép quản lý các phiên làm việc để ngăn chặn người dùng truy cập những thông tin trái phép không mong muốn. 12. Để kiểm tra nếu có bất kỳ mã lệnh nào bị hỏng thì đảm bảo rằng nó đã được sửa chữa. 13. Để xác nhận xem liệu việc thực hiện logic kinh doanh có được bảo mật và không dễ bị thiệt hại do bất kỳ cuộc tấn công nào từ bên ngoài. 14. Để phân tích các tập tin hệ thống, xác định các lỗ hổng và thực hiện sửa chữa những vấn đề này. 15. Để xác định việc xử lý các giao thức ví dụ cố gắng để cấu hình lại trang đích mặc định cho ứng dụng sử dụng một khung nội tuyến độc hại. 16. Để bảo vệ chống lại sự truy cập độc hại bên phía client. 17. Để bảo vệ chống lại sự truy cập độc hại runtime. 18. Để kiểm tra file bộ nhớ đệm và ngăn sự truy cập độc hại từ chúng. 19. Để ngăn chặn dữ liệu lưu trữ không an toàn trong keyboard cache của các ứng dụng. 20. Để kiểm tra các tập tin cookie và ngăn chặn bất kỳ hành động độc hại nào từ các tập tin đó. 21. Để chuẩn bị và kiểm tra thường xuyên để phân tích, bảo vệ dữ liệu. 22. Để kiểm tra các tập tin tuỳ chỉnh đã được tạo ra và ngăn chặn bất kỳ hành động độc hại nào từ các tập tin này. 23. Để ngăn chặn các vấn đề tràn bộ nhớ và các trường hợp sai hỏng bộ nhớ. 24. Để phân tích các luồng dữ liệu khác nhau và ngăn chặn bất kỳ lỗ hổng nào từ chúng. # **Usability Testing** Quá trình kiểm tra khả năng sử dụng các ứng dụng di động là để có một ứng dụng thao tác nhanh chóng được nhanh chóng và dễ dàng với chức năng ít hơn so với một ứng dụng chậm và khó với nhiều tính năng. Mục tiêu chính là để đảm bảo rằng cuối cùng chúng ta có một ứng dụng dễ dàng sử dụng, trực quan và tương tự trong lĩnh vực công nghiệp được sử dụng rộng rãi. 1. Để đảm bảo rằng các nút phải có kích thước chuẩn theo yêu cầu và phù hợp với ngón tay to. 2. Để đảm bảo rằng các nút bấm được đặt trong cùng một phần của màn hình để tránh nhầm lẫn cho người dùng cuối. 3. Để đảm bảo rằng cá biểu tượng là tự nhiên và phù hợp với các ứng dụng. 4. Để đảm bảo rằng các nút, trong đó có các chức năng tương tự cũng cần phải có cùng một màu sắc. 5. Để đảm bảo rằng việc xác nhận các thao tác zoom-in/zoom out nên được hoạt động. 6. Để đảm bảo rằng việc nhập dữ liệu từ bàn phím có thể được giảm thiểu một cách thích hợp. 7. Để đảm bảo rằng ứng dụng cung cấp một phương thức cho thao tác thực hiện lại hoặc huỷ bỏ hành động khi tap vào item không đúng trong một khoảng thời gian chấp nhận được. 8. Để đảm bảo rằng các Context Menu không bị quá tải bởi vì nó đã được sử dụng một cách nhanh chóng. 9. Để đảm bảo rằng các văn bản được bố trí hiển thị đơn giản và rõ ràng cho người sử dụng. 10. Để đảm bảo rằng người dùng cuối có thể đọc được các câu ngắn hoặc một đoạn văn. 11. Để đảm bảo rằng kích thước phông chữ là đủ lớn để có thể đọc và nó không quá lớn hay quá nhỏ. 12. Để xác nhận các ứng dụng cảnh báo người sử dụng bất cứ khi nào người dùng bắt đầu tải về một số lượng lớn dữ liệu có thể không có lợi cho hiệu năng của ứng dụng. 13. Để xác nhận việc đóng ứng dụng được thực hiện từ các trạng thái khác nhau và được xác minh nếu nó mở lại ứng dụng ở đúng trạng thái đó. 14. Để đảm bảo rằng tất cả các chuỗi được convert sang ngôn ngữ thích hợp bất cứ khi nào ngôn ngữ cần chuyển đổi là có sẵn. 15. Để đảm bảo rằng các mục ứng dụng luôn được đồng bộ theo những hành động của người dùng. 16. Để đảm bảo rằng người dùng cuối được cung cấp với một hướng dẫn sử dụng giúp họ hiểu và vận hành ứng dụng kể cả những người có thể không hiểu về các procee của ứng dụng. Kiểm tra khả năng sử dụng được thường được thực hiện bởi người dùng thủ công vì chỉ có con người có thể hiểu được cảm giác thoải mái và khả năng của người sử dụng khác. # **Compatibility testing:** Kiểm tra khả năng tương thích trên các thiết bị di động được thực hiện để đảm bảo vì các thiết bị di động có các kích thước, độ phân giải, màn hình, phiên bản và phần cứng khác nhau vì vậy ứng dụng nên được kiểm thử trên tất cả các ứng dụng để đảm bảo ứng dụng hoạt động như mong muốn. Sau đây là một số phần quan trọng nhất để kiểm thử tính thương thích của những ứng dụng mobile: 1. Để xác nhận rằng giao diện người dùng của ứng dụng là theo kích thước màn hình của thiết bị, không có text/control nào bị ẩn hoặc không thể truy cập. 2. Đảm bảo rằng các văn bản có thể đọc được cho tất cả người dùng cho các ứng dụng. 3. Để đảm bảo rằng các chức năng call/ báo thức được kích hoạt bất cứ khi nào các ứng dụng đang chạy. Các ứng dụng được minimize hoặc suspend bất cứ khi nào có cuộc gọi đến và sau đó chúng được mở lại khi cuộc gọi kết thúc. # **Recoverability Testing** 1. Phục hồi sự cố và hoàn tác sự gián đoạn. 2. Xác nhận sự phục hồi hiệu quả của ứng dụng trong các tình huống không mong muốn như gián đoạn/crash. 3. Xác nhận ứng dụng làm thế nào để xử lý một giao dịch trong khi thiết bị bị sập nguồn. 4. Xác nhận quá trình khi kết nối là suspend, hệ thống cần phải thiết lập lại để khôi phục dữ liệu bị ảnh hưởng trực tiếp bởi các kết nối bị suspend. # **Những nội dung quan trọng khác cần kiểm tra:** 1. Kiểm thử cài đặt (Mặc dù ứng dụng có thể được cài đặt trong một khoảng thời gian hợp lý và với tiêu chuẩn bắt buộc) 2. Gỡ ứng dụng (Mặc dù ứng dụng có thể bị gỡ trong một khoảng thời gian hợp lý và với tiêu chuẩn bắt buộc) 3. Kiểm tra các trường hợp kết nối mạng. 4. Kiểm tra các key không được mapped. 5. Kiểm tra màn hình Splash của ứng dụng. 6. Tiếp tục nhập dữ liệu từ bàn phím trong khi bị mất kết nối. 7. Các phương pháp đối với việc thoát ứng dụng. 8. Ảnh hưởng của việc sạc pin trong khi có một ứng dụng đang chạy ngầm. 9. Pin yếu và yêu cầu hiệu suất cao. 10. Hết pin trong khi một ứng dụng đang được thực hiện. 11. Mức độ tiêu hao pin của ứng dụng. 12. Kiểm tra các phản ứng phụ của ứng dụng. Link tham khảo: http://www.guru99.com/testing-mobile-apps.html