Là việc thử nghiệm một phần mềm hoàn toàn được làm bằng tay bởi người tester. Nó được thực hiện nhằm phát hiện lỗi trong phần mềm đang được phát triển. Trong manual testing, tester sẽ thực hiện các trường hợp kiểm thử và tạo báo cáo kiểm thử hoàn toàn thủ công mà không có bất kỳ sự trợ giúp của công cụ tự động nào.
Ưu điểm của Manual Testing
- Các tester dễ dàng trong việc test giao diện và giúp mang lại những phản hồi nhanh chóng một cách trực quan nhất về thiết kế giao diện ứng dụng của phần mềm cần phải test.
- Chương trình có thay đổi nhỏ thì manual testing sẽ không phải mất quá nhiều thời gian cho việc kiểm tra đối các trường hợp kiểm thử.
- Có nhiều cơ hội thử nghiệm, khám phá kiểm thử để từ đó phát hiện ra các lỗi khó có thể phát hiện và nâng cao được tay nghề tester.
- Tiết kiệm được chi phí ngắn hạn.
Nhược điểm của Manual Testing
- Quá trình thực hiện các ca kiểm thử ít tin cậy hơn vì có thể gặp những sai sót do yếu tố con người .
- Các quá trình thực hiện các ca kiểm thử không được ghi lại vậy nên nó không có tính tái sử dụng.
- Có một số task khó có thể thực hiện một cách thủ công như các trường hợp kiểm thử stress testing và performance testing thì các công việc phải đòi hỏi cần những tool thực sự chuyên nghiệp để có thể thực hiện chuyên nghiệp hỗ trợ manual test nên thực hiện rất khó.
- Giúp bạn phát hiện ra các lỗi thường .
- Tiêu tốn nhiều thời gian cũng như công sức của các tester hơn trong việc phát hiện ra các bugs.
- Quá trình sử dụng tool tự động dùng để test cho kết quả nhanh hơn và chính xác hơn đối với manual test.
Các loại Manual Testing
Đảm bảo mọi chức năng và hoạt động trong dự án hoạt động có hiệu quả chính là mục đích của Manual Testing. Đặc biệt đây là phương pháp thực hiện giúp bạn có thể nhanh chóng tìm và phát hiện ra các lỗi. Từ đó mới có thể nhanh chóng khắc phục và hoàn thiện trước khi giao sản phẩm tới tay khách hàng.
Do đó, Manual Testing được chia thành 6 loại chính:
- Unit Testing: Kiểm tra từng đơn vị mã nguồn nhỏ nhất và riêng lẻ, như một hàm, một phương thức hoặc một module. Chủ yếu do lập trình viên (developer) thực hiện. Mặc dù có thể thực hiện thủ công, nhưng nó thường được tự động hóa để đảm bảo tốc độ và độ chính xác.
- White Box Testing: Kiểm tra cấu trúc bên trong của hệ thống, bao gồm mã nguồn, luồng dữ liệu và cấu trúc lập trình. Thường do lập trình viên thực hiện để kiểm tra các đường dẫn mã, vòng lặp và câu lệnh có hoạt động đúng không. Loại này hiếm khi được thực hiện thủ công mà thường dùng các công cụ tự động.
- Gray Box Testing: Kết hợp cả White Box và Black Box. Tester có một phần kiến thức về cấu trúc bên trong của hệ thống (ví dụ: truy cập vào cơ sở dữ liệu hoặc sơ đồ thiết kế) để thiết kế các kịch bản kiểm thử hiệu quả hơn.
- Black Box Testing: Kiểm tra chức năng của phần mềm mà không cần biết cấu trúc bên trong, mã nguồn hay thiết kế của nó. Tester chỉ quan tâm đến đầu vào và đầu ra.
- System Testing: Kiểm tra toàn bộ hệ thống đã tích hợp đầy đủ. Giai đoạn này tập trung vào việc xác minh hệ thống có đáp ứng các yêu cầu chức năng và phi chức năng hay không.
- Acceptance Testing: để khách hàng hoặc người dùng cuối xác nhận xem hệ thống có đáp ứng yêu cầu và sẵn sàng triển khai (go-live) hay không.
Loại chính của Acceptance Testing:
- User Acceptance Testing (UAT): Do người dùng cuối thực hiện.
- Business Acceptance Testing (BAT): Do các bên liên quan của doanh nghiệp thực hiện.
- Integration Testing: Kiểm tra sự tương tác và luồng dữ liệu giữa các module hoặc các thành phần đã được kiểm thử đơn vị. Mục tiêu là phát hiện lỗi khi các thành phần làm việc cùng nhau. Đảm bảo dữ liệu và luồng xử lý không bị lỗi khi các thành phần phối hợp.
Cách thực hiện Manual Testing
- Phân tích yêu cầu: Tester đọc và hiểu rõ các tài liệu yêu cầu của phần mềm để xác định những gì cần kiểm thử.
- Thiết kế Test Case: Viết các test case (trường hợp kiểm thử) chi tiết, mô tả từng bước thực hiện, dữ liệu đầu vào và kết quả mong đợi.
- Thực hiện Test Case: Tester chạy từng test case một cách thủ công, thực hiện các thao tác theo kịch bản đã viết và so sánh kết quả thực tế với kết quả mong đợi.
- Báo cáo lỗi (Defect Reporting): Khi tìm thấy lỗi, tester sẽ ghi lại đầy đủ thông tin về lỗi đó (mô tả, các bước để tái hiện, mức độ nghiêm trọng) và gửi cho đội phát triển để sửa chữa.
- Kiểm thử lại (Retesting): Sau khi lỗi đã được sửa, tester sẽ kiểm thử lại để đảm bảo lỗi đã được khắc phục hoàn toàn.
Khi nào nên sử dụng Manual Testing?
Kiểm thử thủ công rất hiệu quả trong một số trường hợp cụ thể:
- Usability Testing (Kiểm thử khả năng sử dụng): Để đánh giá trải nghiệm người dùng, độ thân thiện và dễ sử dụng của giao diện. Đây là khía cạnh mà chỉ có con người mới có thể cảm nhận và đánh giá chính xác.
- Exploratory Testing (Kiểm thử khám phá): Khi tester tự do khám phá ứng dụng mà không cần kịch bản cố định, dựa vào kinh nghiệm và sự sáng tạo để tìm ra các lỗi bất ngờ.
- Ad-hoc Testing (Kiểm thử ngẫu hứng): Một dạng kiểm thử không có kịch bản, được thực hiện một cách ngẫu nhiên để tìm lỗi nhanh chóng.
- Dự án có quy mô nhỏ hoặc thay đổi liên tục: Việc viết các kịch bản tự động tốn kém và mất thời gian, do đó manual testing là lựa chọn phù hợp hơn cho các dự án nhỏ, ngắn hạn hoặc các tính năng mới cần kiểm thử nhanh.