Tự động hóa kiểm thử là một quá trình kiểm thử ứng dụng có sử dụng các công cụ thích hợp và dựa theo các phƣơng pháp kiểm thử đa dạng. Các công cụ khác nhau đƣợc tạo ra bởi các nhà sản xuất khác nhau tập trung vào các dạng kiểm thử khác nhau. Tuy nhiên, thực tế chỉ ra rằng, kết hợp giữa kiểm thử thủ công và KTTĐ sẽ đạt hiệu quả tốt nhất.
KTTĐ nên tập trung vào các yếu tố sau đây [11]: Cải tiến quy trình kiểm thử
Cải tiến quy trình kiểm thử đề cập tới việc liệt kê ra các yêu cầu quy tình kiểm thử. Sau khi định nghĩa các yêu cầu quy trình kiểm thử, tiến hành thiết kế quy trình kiểm thử. Sự cải tiến này là một tiến trình logic phân tích những gì cần tự động hóa, các vùng tự động hóa, cách viết các chuẩn tự động hóa, tài liệu rủi ro và các giả định. Quy trình này lặp đi lặp lại trong khí quy trình phát triển ứng dụng và quy trình kiểm thử cũng đồng thời đƣợc cải tiến.
Định nghĩa các yêu cầu
Định nghĩa yêu cầu gồm hai nhóm - các yêu cầu tự động hóa và các yêu cầu kiểm thử. Chúng đƣợc tài liệu hóa bởi các tài liệu thiết kế kiểm thử và mục tiêu tự động hóa. Có bốn tập hợp khác nhau để hiểu rõ về kiểm thử ở giai đoạn này. Nhóm nghiên cứu phát triển ý tƣởng kiểm thử, quản lý mục tiêu kiểm thử, kiểm tra các tham số của các kiểm thử liên quan và nhóm tự động hóa kiểm thử quan sát quá trình kiểm thử. Thành công của bƣớc này đó là sự hòa trộn giữa việc quan sát và các yêu cầu thành một thiết kế kiểm thử để đạt đƣợc thành công khi kiểm thử tự động.
Tính khả thi
Tính khả thi là việc lựa chọn thích hợp công cụ và phƣơng pháp kiểm thử tự động. Công cụ đƣợc lựa chọn và phƣơng pháp đƣợc lựa chọn phải kết nối tới sản phẩm và đội ngũ liên quan. Nó sẽ là một ý tƣởng khôn ngoan khi sử dụng cách chứng minh kiểm thử bằng cách lấy mẫu kiểm thử tự động thông qua sử dụng một test case phù hợp để ứng dụng và thực hiện thông qua các nhóm kiểm thử. Điều này cung cấp một ƣớc lƣợng thực tế về tính khả thi của công cụ và phƣơng pháp đã đƣợc thông qua. Công cụ kiểm thử tự động là khó khăn nhất để lựa chọn khi có quá nhiều phƣơng pháp và kiểm thử thành công vẫn khó nắm bắt. Ví dụ khi lựa chọn công cụ phải đảm bảo đồng thời cả kiểm thử hồi quy, quản lý cấu hình, khả năng tái sử dụng và kiểm thử không giao diện.
Khả năng kiểm thử giao diện
Giao diện ứng dụng cần kiểm thử chặt chẽ. Chúng đƣợc phân cấp thành kiểm thử mức dòng lệnh, kiểm thử mức ứng dụng và kiểm thử mức giao diện. Một ứng dụng phải có ít nhất một trong ba giao diện đó. Trong nhiều ứng dụng, giao diện có thể bị ẩn và đƣợc thực hiện bên trong giao diện GUI nhìn thấy rõ ràng. Thành công trong khả năng kiểm thử giao diện nằm trong sự hiểu biết rằng khả năng để kiểm thử một ứng dụng là một yêu cầu ứng dụng.
Khả năng bảo trì
Sự bảo trì trong kiểm thử đƣợc gọi là sự “nuôi dƣỡng”. Các tham số tự động phải đƣợc ứng biến, mở rộng, nâng cao nhƣ các phiên bản mới của ứng dụng để có thể thực hiện. Thiết kế kiểm thử và các test case vẫn đƣợc duy trì sau khi thực thi ứng dụng. Với một phiên bản mới đƣợc lên kế hoạch, thiết kế kiểm thử có sẵn và các test case đƣợc thực thi mà không có bất kỳ lỗi nào. Điều này không có nghĩa là bản phát hành không có lỗi nào, và thích hợp để phát hành. Có trƣờng hợp bản phát hành đƣợc tiếp cận theo phƣơng pháp này và thất bại thê thảm khi đi vào thực hiện. Điều này nhấn mạnh tầm quan trọng khả năng bảo trì của công cụ kiểm thử tự động và tính dễ
tổn thƣơng của các ứng dụng trong kiểm thử khi mà các tham số kiểm thử khoogn đƣợc cập nhật nâng cao hoặc sửa lỗi của ứng dụng.
Khả năng tái sử dụng
Có hiểu biết về các thành phần có thể tái sử dụng sẽ giúp giảm rất nhiều thời gian làm lại các thành phần. Điều này nhấn mạnh “xây dựng trên công trình của ngƣời khác”. Các thành phần tái sử dụng có thể đƣợc dùng khi kiểm thử các phiên bản mới của phần mềm. Nếu ứng dụng đƣợc giới thiệu trên một nền tảng mới, các thành phần tái sử dụng có thể áp dụng cho các kiểm thử tiêu chuẩn chung cho mọi ứng dụng và có thể hỗ trợ quy trình xây dựng với nỗ lực ít hơn và tiêu tốn ít thời gian hơn.
3.4.5. Một số vấn đề thường gặp với kiểm thử tự động
Một trong những vấn đề thƣờng gặp nhất khi kiểm thử tự động đó là về kỹ thuật con ngƣời. Nếu đội ngũ kiểm thử viên thiếu kinh nghiệm và khả năng tƣ duy lập trình, khi xây dựng các script kiểm thử rất dễ để thiếu sót các trƣờng hợp kiểm thử. Kiểm thử tự động cũng khó kiểm soát hơn, và khả năng mở rộng bảo trì khó khăn, còn phụ thuộc vào nền tảng và khả năng của công cụ kiểm thử tự động.
3.5. Đánh giá mức độ hài lòng ngƣời dùng
Giao diện phần mềm có đƣợc chấp nhận hay không hoàn toàn phụ thuộc vào sự đánh giá của ngƣời dùng cuối. Bất kể là phần mềm nào, đƣợc kiểm thử thủ công hay kiểm thử tự động, hiệu quả của việc phát triển và kiểm thử phần mềm đƣợc phản ánh rõ nhất qua mức độ hài lòng của khách hàng, khi mà sản phẩm đƣợc phân phối tới ngƣời dùng cuối.
Để xác định đƣợc sự đánh giá của khách hàng, sau khi quá trình kiểm thử hoàn tất, phần mềm đƣợc phê duyệt và đƣa ra các bản dùng thử alpha hay beta. Cần tiến hành thu thập trƣng cầu ý kiến phản ánh của ngƣời dùng theo từng nhóm đối tƣợng sử dụng. Bản thu thập ý kiến cần nêu rõ các yếu tố giao diện sản phẩm, với các mức đánh giá sự hài lòng của ngƣời dùng. Các thành phần giao diện các đƣợc liệt kê chi tiết rõ ràng thì càng hiệu quả trong việc đánh giá mức độ hài lòng về giao diện của sản phẩm. Thông qua đó, đội ngũ phát triển có thể chỉnh sửa phần mềm để đáp ứng tốt hơn nhu cầu ngƣời dùng trong các bản release tiếp theo. Nhóm kiểm thử viên cũng dựa trên kết quả đánh giá này mà bổ sung các ca kiểm thử phù hợp. Đây cũng chính là một phần việc trong quá trình kiểm thử hồi quy phần mềm.
CHƢƠNG 4 – KIỂM THỬ GIAO DIỆN THEO PHÂN LOẠI PHẦN MỀM 4.1. Phân loại phần mềm
Phân loại phần mềm theo một số tiêu chí sau: Theo mức độ hoàn thiện:
o Phần mềm đơn lẻ: Là phần mềm chỉ thực hiện một số nhiệm vụ nhất định. Ví dụ: các trình soạn thảo văn bản, phần mềm đồ họa,…
o Phần mềm mang tính hệ thống: Là phần mềm đƣợc truy cập và sử dụng bởi nhiều ngƣời dùng trong một hệ thống. Thƣờng phải đi đôi với mạng máy tính.
Theo chức năng mà phần mềm thực hiện:
o Phần mềm hệ thống
o Phần mềm công cụ
o Phần mềm ứng dụng Theo lĩnh vực đƣợc ứng dụng:
o Phần mềm nghiệp vụ: thƣờng đƣợc ứng dụng cho nghiệp vụ của từng doanh nghiệp, tổ chức xác định.
o Phần mềm nhúng: phần mềm đƣợc gắn vào chip của các thiết bị điện tử: ti vi, tủ lạnh,…
o Phần mềm máy tính cá nhân: phần mềm dùng trong lĩnh vực tính toán
o Phần mềm trên nền web: phần mềm đƣợc truy cập thông qua các trình duyệt web, ngƣời dùng có thể truy cập thông qua mạng internet
o Phần mềm trí tuệ nhân tạo: các phần mềm thông minh sử dụng trí tuệ nhân tạo, nhƣ các hệ chuyên gia (hệ cơ sở tri thức), phần mềm trong lĩnh vực nhận dạng (hình ảnh, tiếng nói), các phần mềm chứng minh định lý và trò chơi, các hệ mạng nơ ron nhân tạo mô phỏng cấu trúc của việc xử lý trong bộ óc con ngƣời.
o Phần mềm hệ thống: là một tập hợp các chƣơng trình giải quyết các bài toán.
Mỗi loại phần mềm có đặc điểm riêng, do đó cách tiếp cận và kiểm thử phần mềm cũng có những điểm khác nhau. Các mục tiếp theo trong Chƣơng 4 của luận văn đề cập tới kiểm thử giao diện phần mềm đƣợc phân loại theo lĩnh vực đƣợc ứng dụng.
4.2. Kiểm thử giao diện phần mềm nghiệp vụ
Phần mềm nghiệp vụ là các phần mềm đƣợc xây dựng dựa theo yêu cầu nghiệp vụ của từng doanh nghiệp. Phần mềm có thể là các ứng dụng trên nền tảng Window hoặc các ứng dụng web. Các phần mềm quản lý bệnh viện, trƣờng học, phần mềm kế
toán,… là các ví dụ điển hình về phần mềm nghiệp vụ. Mỗi phần mềm có các tiêu chí và đặc thù riêng, việc kiểm thử phần mềm phải thật sát với tài liệu đặc tả phần mềm.
Nhìn chung, giao diện phần mềm nghiệp vụ sẽ đƣợc kiểm thử theo các tiêu chí đã đƣợc nêu trong Chƣơng 3 của luận văn. Phần mềm nghiệp vụ có thể đƣợc phát triển trên nền tảng window hay web. Tùy từng nền tảng mà áp dụng các kỹ thuật kiểm thử đƣợc nêu trong Mục 4.4 và Mục 4.5 của chƣơng này.
Các phần mềm nghiệp vụ có thể có một số yêu cầu riêng về giao diện, khi đó sẽ có tài liệu đặc tả về các yếu tố đó. Quá trình kiểm thử cần chú trọng vào các thành phần này, bởi đó chính là nét đặc trƣng của ứng dụng.
4.3. Kiểm thử giao diện đối với phần mềm nhúng
4.3.1. Hệ thống nhúng và các đặc điểm cơ bản
Hệ thống nhúng (Embedded system) là một thuật ngữ để chỉ một hệ tính toán
nằm trong sản phẩm, tạo thành một phần của hệ thống lớn hơn và thực hiện một số chức năng của hệ thống. Đó là các hệ thống tích hợp cả phần cứng và phần mềm phục vụ các bài toán chuyên dụng trong nhiều lĩnh vực công nghiệp, tự động hoá điều khiển, quan trắc và truyền tin. Đặc điểm của các hệ thống nhúng là hoạt động ổn định và có tính năng tự động hoá cao.
Mỗi hệ thống nhúng phải đáp ứng đƣợc các yêu cầu dƣới đây – đây cũng là những đặc tính chung của các hệ thống nhúng:
1. Khả năng độc lập và thông minh hoá: Điều này đƣợc chỉ rõ hơn thông
qua một số các thuộc tính yêu cầu, cụ thể nhƣ: - Độ tin cậy
- Khả năng bảo trì và nâng cấp - Sự phổ cập và tiện sử dụng - Độ an toàn
- Tính bảo mật
2. Hiệu quả: Yêu cầu này đƣợc thể hiện thông qua một số các đặc điểm
của hệ thống nhƣ sau:
- Năng lƣợng tiêu thụ
- Kích thƣớc về phần cứng và phần mềm - Hiệu quả về thời gian thực hiện
- Kích thƣớc và khối lƣợng - Giá thành
3. Phân hoạch tác vụ và chức năng hoá: Các bộ vi xử lý trong các hệ
nhúng thƣờng đƣợc sử dụng để đảm nhiệm và thực hiện một hoặc một nhóm chức năng rất độc lập và cũng đặc thù cho từng phần chức năng của hệ thống lớn mà nó đƣợc nhúng vào. Ví dụ nhƣ một vi xử lý thực hiện một phần điều khiển cho một chức năng thu thập, xử lý và hiển thị của ôtô hay hệ thống điều khiển quá trính. Khả năng này làm tăng thêm sự chuyên biệt hoá về chức năng của một hệ thống lớn và dễ dàng hơn cho quá trính xây dựng, vận hành và bảo trì.
4. Khả năng thời gian thực: Các hệ thống đều gắn liền với việc đảm nhiệm
một chức năng chính và phải đƣợc thực hiện đúng theo một khung thời gian qui định. Thông thƣờng một chức năng của hệ thống phải đƣợc thực hiện và hoàn thành theo một yêu cầu thời gian định trƣớc để đảm bảo thông tin cập nhật kịp thời cho phần xử lý của các chức năng khác và có thể ảnh hƣởng trực tiếp tới sự hoạt động đúng và chính xác của toàn hệ thống. Tuỳ thuộc vào từng bài toán và yêu cầu của hệ thống mà yêu cầu về khả năng thời gian thực cũng rất khác nhau.
4.3.2. Kiểm thử giao diện hệ thống nhúng
Hệ thống nhúng cũng đƣợc lập trình nhƣ một phần mềm, do đó kiểm thử hệ thống nhúng cũng trải qua các giai đoạn kiểm thử và sử dụng các kỹ thuật kiểm thử nhƣ các phần mềm thông dụng nói chung. Tuy nhiên, hầu hết các hệ thống nhúng đƣợc dành riêng cho một ứng dụng nhất định. Ví dụ, hệ thống điều khiển ô tô hay tàu hỏa sẽ luôn chạy phần mềm đó mà không có bất kỳ chức năng nào khác. Các hệ thống nhúng cũng có giao diện chuyên biệt riêng bao gồm các nút bấm, bánh lái, pê-đan,… , hầu hết không dùng chuột và bàn phím nhƣ các phần mềm thông thƣờng. Chính vì thế, kiểm thử giao diện hệ thống nhúng sẽ khác hơn so với kiểm thử phần mềm thông dụng. Đặc biệt cần quan tâm tới việc kiểm tra xem giao diện hệ thống có đáp ứng các yêu cầu về tính tiện dụng bao gồm: tính rõ ràng, tính phản hồi, tính ràng buộc, tính ánh xạ, tính nhất quán và tính gợi ý.
Một đặc điểm khác biệt của hệ thống nhúng đó là giao diện. Các hệ nhúng đơn nhiệm không có giao diện (ví dụ bộ điều khiển ổ đĩa máy tính), một số hệ thống đơn giản giao diện chỉ là các nút bấm, đèn LED,… trong khi một số hệ thống phức tạp hơn có đầy đủ giao diện giao tiếp ngƣời dùng tƣơng tự nhƣ các hệ điều hành trong các thiết bị để bàn [13].
Đối với các hệ thống nhúng có giao diện đồ họa tƣơng tự giao diện đồ họa của phần mềm ứng dụng thông thƣờng, ta áp dụng các phƣơng pháp và kỹ thuật giao diện nhƣ đã nêu trong Chƣơng 3 của luận văn. Ngoài ra, hệ thống nhúng sử dụng các thiết
bị phần cứng đặc trƣng đi kèm. Kiểm thử giao diện hệ nhúng đảm bảo phải kiểm thử qua các thành phần này.
Các nút bấm và đèn LED
Một số hệ thống với giao diện ngoài chỉ gồm nút bấm và các đèn tín hiệu, ví dụ nhƣ máy giặt tự động. Khi tác động vào các nút bấm, hệ thống hoạt động, và thông tin trạng thái làm việc của hệ thống có thể đƣợc biểu hiện qua trạng thái (tốc độ nhấp nháy, màu sắc) của đèn tín hiệu. Trƣớc tiên cần kiểm tra giao diện, cách sắp xếp bố trí các nút bấm, vị trí đèn tín hiệu. Cần trả lời một số câu hỏi: Sắp xếp nhƣ vậy đã hợp lý hay chƣa? Nhìn vào giao diện đó, ngƣời dùng có thể hình dung đƣợc thao tác sử dụng hay không? Có các thông tin gợi ý, hỗ trợ phù hợp hay không?,.. Kiểm tra hoạt động của các nút bấm, khi nhấn vào nút bấm điều gì sẽ xảy ra, ngƣời dùng có cảm nhận đƣợc sự phản hồi của hệ thống? Trạng thái đèn tín hiệu có tƣơng ứng với các thao tác đã thực thi hay không? Nó có mang tính gợi ý cho ngƣời dùng hay không (đèn sáng xanh chỉ máy hoạt động bình thƣờng, đèn đỏ, đèn nhấp nháy mang ý cảnh báo,…).
Thành phần kết nối mạng
Ngoài các nút bấm, đèn tín hiệu, một số hệ nhúng còn sử dụng kết nối mạng để tƣơng tác với ngƣời dùng. Khi đó phải kiểm thử hoạt động của các giao tiếp mạng này.
Giao diện đồ họa
Các hệ nhúng phức tạp hơn sử dụng màn hình đồ họa để tƣơng tác ngƣời dùng. Các hệ thống này có thể đơn giản chỉ là bộ điều khiển chuột của máy tính bàn, hay phức tạp hơn nhƣ giao diện của các smart phones. Tổng thể giao diện có hài hòa về bố cục, màu sắc hay không? Lần lƣợt kiểm tra hoạt động của từng đối tƣợng trên màn hình, sự tƣơng tác giữa các nút bấm và các thành phần khác?
Với các hệ thống nhúng đơn giản có thể tiến hành kiểm thử trực tiếp trên sản phẩm. Tuy nhiên, một số hệ thống lớn với chi phí đắt, có thể gây hậu quả nghiêm