Trong kiểm thử phần mềm, có 2 khái niệm khá tương đồng nhau dễ nhầm lẫn đấy là Simulators và Emulators. Để dịch ra tiếng việt thì Simulators là trình mô phỏng; còn Emulator nghĩa là giả lập – phần nào các bạn cũng hiểu được nghĩa rồi đúng ko. Bài viết này sẽ giải thích chi tiết hơn cho các bạn, nhất là các bạn Tester để có thể hiểu và phân biệt rõ 2 khái niệm trên.

Điểm gì chung giữa 2 khái niệm trên

Emulators và Simulators đều có thể tạo ra môi trường nhằm chạy và kiểm thử các phần mềm. Cả 2 cho phép chúng ta chạy các tests (kiểm thử) 1 cách nhanh chóng và dễ dàng, rất hữu ích nhất là khi bạn không có sẵn 1 thiết bị thật (phần cứng).

Tester thường xuyên sử dụng Simulators và Emulators để thực hiện các bài tests chức năng phần mềm trước khi đưa lên môi trường production để đến tay với người dùng đầu cuối.

Điểm khác nhau cơ bản

Simulators (trình mô phỏng) được thiết kế để tạo ra 1 môi trường chứa tất cả cấu hình và biến số để có thể chạy được ứng dụng giống như trên môi trường production. Tuy nhiên Simulators chỉ tạo ra môi trường phần mềm và chúng được tạo ra bằng cách sử dụng 1 ngôn ngữ lập trình bậc cao.

Trong khi đó, Emulators cố gắng “bắt chước” 1 cách tốt nhất có thể tất cả các features (tính năng) phần cứng của môi trường production, và để đạt được điều đó, chứng thường cần được viết bằng hợp ngữ (assembly language).

Một cách tự nhiên thì ta có thể hình dung Emulators nằm ở giữa cấp độ của 1 Simulators và 1 thiết bị phần cứng (real devices). Chẳng hạn chúng ta có cả Simulators và Emulators tạo ra thiết bị “máy ảo” Android, khi đó Simulators cố gắng mô phỏng lại cách 1 ứng dụng Android hoạt động; còn Emulators giả lập 1 chiếc điện thoại Android và cho phép chúng ta chạy ứng dụng trên chiếc điện thoại đó bằng cách tương tác với phần cứng mà nó giả lập ra.

Khi nào thì sử dụng Simulators

Simulators thích hợp cho các kịch bản test phần mềm mà tester tập trung vào việc ứng dụng thực hiện có đúng với yêu cầu (requirements) hay không, các chức năng ít tác động đến phần cứng. Chẳng hạn bạn muốn test giao diện có đúng hay không, chức năng gửi dữ liệu có hoạt động chính xác không, …

Ưu điểm của Simulators là cấu hình có thể cao hơn thiết bị thực tế, vì thế tốc độ test sẽ nhanh hơn, đỡ mất thời gian hơn. Ví dụ Simulators là BlueStacks https://www.bluestacks.com/vi/index.html được trang bị cấu hình đi theo PC, thậm chí hay được sử dụng để chơi game giả lập trên PC.

Khi nào thì sử dụng Emulators

Gennymotion https://www.genymotion.com/ là 1 trình giả lập Android thông dụng; ngoài ra thì Android Studio cũng cung cấp Android Virtual Devices cho các bạn. Đó đều là các Emulators bạn cần khi test phần mềm trên môi trường giống device thật. Bạn có để ý là Emulators cung cấp nhiều firmware để bạn có thể tạo ra các thiết bị đúng mẫu, đúng hãng, đúng phiên bản hệ điều hành.

Nó sẽ rất hữu ích khi bạn cần phải tái hiện đúng bugs chỉ xảy ra với 1 vài loại devices (nhất là anh em làm Android sẽ hiểu cảm giác này). Tất nhiên do hạn chế phải tạo ra đúng cấu hình (RAM, CPU) giống với thiết bị thật nên Emulators thường chạy khá chậm, đôi khi không ổn định khiến việc test sẽ mất thời gian hơn.

Kết luận

Tùy chức năng cụ thể cần test (kiểm thử) để lựa chọn trình giả lập hay máy ảo phù hợp. Điều quan trọng vẫn là ứng dụng được chạy đúng yêu cầu trước khi đưa ra môi trường production. Và khuyên chân thành là nếu “nhà” có điều kiện thì tốt nhất vẫn nên sắm lấy vài em real devices mà test cho nó được “trải nghiệm chân thực” nhất.

Cảm ơn mọi người!

From Anyway with Love