Tổng quan nghiên cứu

Trong quy trình phát triển phần mềm hiện đại, chi phí dành cho hoạt động kiểm thử thường chiếm từ 40% đến 50% tổng ngân sách dự án, thậm chí vượt mức 60% đối với các hệ thống yêu cầu độ an toàn cao. Việc thực hiện kiểm thử thủ công truyền thống bộc lộ nhiều điểm nghẽn nghiêm trọng khi đối mặt với các kịch bản kiểm tra lặp lại nhiều lần hoặc các tình huống kiểm thử tải lớn, điển hình như việc mô phỏng 1000 người dùng đồng thời gửi yêu cầu đến máy chủ. Vấn đề nghiên cứu trọng tâm của luận văn là làm sáng tỏ vai trò, hiệu quả và giới hạn của kiểm thử tự động trong vòng đời phần mềm, đồng thời nghiên cứu giải pháp ứng dụng công cụ kiểm thử tự động vào việc kiểm chứng thiết kế kiến trúc ở giai đoạn sớm.

Mục tiêu cụ thể của công trình bao gồm việc phân tích toàn diện mô hình kiến trúc kiểm thử tự động, đánh giá chuyên sâu công cụ thương mại TestComplete phiên bản 9 của hãng SmartBear, và đề xuất quy trình chuyển đổi mô hình thiết kế trừu tượng thành kịch bản kiểm thử thực thi được. Nghiên cứu được thực hiện tại Trường Đại học Công nghệ thuộc Đại học Quốc gia Hà Nội vào năm 2012, với phạm vi thực nghiệm tập trung vào hệ thống quản lý bệnh nhân Patients Management và module xử lý dữ liệu điện tim ECG. Kết quả nghiên cứu mang lại ý nghĩa thực tiễn to lớn khi giúp giảm thiểu khoảng 60% thời gian thực thi kiểm thử hồi quy và nâng cao khả năng phát hiện khiếm khuyết thiết kế sớm, giúp tiết kiệm tới 70% chi phí khắc phục lỗi so với việc sửa đổi mã nguồn ở các giai đoạn sau của dự án.

Cơ sở lý thuyết và phương pháp nghiên cứu

Khung lý thuyết áp dụng

Nghiên cứu được xây dựng dựa trên 2 khung lý thuyết nền tảng trong công nghệ phần mềm: Mô hình phát triển chữ V và Mô hình kiến trúc tự động hóa kiểm thử tổng quát. Mô hình chữ V phân định rõ 4 cấp độ kiểm định song hành cùng tiến trình phát triển: kiểm thử đơn vị, kiểm thử tích hợp, kiểm thử hệ thống và kiểm thử chấp nhận. Mô hình tự động hóa kiểm thử tổng quát bao gồm 7 thành phần chức năng cốt lõi: Bộ quản lý kiểm thử, Bộ sinh dữ liệu kiểm thử, Bộ phán đoán kết quả chuẩn, Bộ so sánh tệp, Bộ tạo báo cáo, Bộ phân tích động và Bộ mô phỏng môi trường.

Luận văn vận dụng 4 khái niệm kỹ thuật chính bao gồm:

  1. Kiểm thử hộp trắng: Tập trung vào kỹ thuật kiểm thử luồng dữ liệu và đo lường độ bao phủ các nhánh điều khiển logic trong mã nguồn.
  2. Kiểm thử hộp đen: Áp dụng kỹ thuật phân tích giá trị biên và phân vùng tương đương để kiểm tra hành vi chức năng từ góc độ người dùng.
  3. Kiểm thử hồi quy: Thực thi lại các bộ kịch bản kiểm thử nhằm đảm bảo các thay đổi mới không làm phát sinh lỗi trên các tính năng đã vận hành ổn định.
  4. Cơ chế ghi và phát lại: Phương thức thu nhận các tương tác giao diện để tự động tạo ra mã kịch bản trên 5 ngôn ngữ lập trình phổ biến gồm VBScript, JScript, DelphiScript, C++Script và C#Script.

Phương pháp nghiên cứu

Nguồn dữ liệu thực nghiệm của luận văn bao gồm 2 tập mẫu chính: bộ dữ liệu kiểm thử chức năng giao diện của ứng dụng Patients Management với hơn 50 trường thông tin bệnh nhân, và tập dữ liệu chuỗi thời gian của tín hiệu điện tim ECG phục vụ mô phỏng giao thức truyền thông. Nghiên cứu sử dụng phương pháp chọn mẫu chủ đích, lựa chọn các module có độ phức tạp cao, luồng điều khiển phụ thuộc trạng thái và các điểm nghẽn tương tác người dùng.

Lý do lựa chọn phương pháp phân tích thực nghiệm so sánh đối chứng là nhằm định lượng chính xác sự khác biệt về thời gian, nhân lực và độ chính xác giữa phương pháp kiểm thử thủ công và kiểm thử tự động bằng TestComplete 9. Ngoài ra, phương pháp mô hình hóa trừu tượng bằng lược đồ tuần tự UML và máy trạng thái SAECA được lựa chọn để chuyển đổi các đặc tả thiết kế thành ứng dụng mô phỏng có thể thực thi trên máy chủ Web IIS. Toàn bộ quá trình thu thập dữ liệu và phân tích thực nghiệm được thực hiện liên tục trong khoảng thời gian từ quý 3 năm 2011 đến quý 2 năm 2012.

Kết quả nghiên cứu và thảo luận

Những phát hiện chính

Thứ nhất, kiểm thử tự động bằng công cụ TestComplete 9 giúp rút ngắn thời gian thực thi kiểm thử hồi quy từ 5 đến 10 lần so với kiểm thử thủ công. Trong thực nghiệm với ứng dụng quản lý bệnh nhân, việc kiểm tra lại 100 ca kiểm thử biểu mẫu chỉ mất khoảng 12 phút khi chạy tự động, trong khi một kiểm thử viên thực hiện thủ công cần hơn 120 phút.

Thứ hai, việc sử dụng các điểm kiểm tra thuộc tính và lưu trữ dữ liệu giúp đảm bảo tính chính xác tuyệt đối 100% trong việc so sánh dữ liệu đầu ra với kết quả mong đợi, loại bỏ hoàn toàn các sai sót do yếu tố thị giác hoặc sự mệt mỏi của con người.

Thứ ba, nghiên cứu chứng minh tính khả thi của phương pháp kiểm chứng thiết kế phần mềm ở giai đoạn sớm. Khi áp dụng công cụ TestComplete 9 để kiểm thử ứng dụng mô phỏng giao thức SAECA trên dữ liệu ECG, hệ thống đã phát hiện chính xác 3 lỗi bất đồng bộ trạng thái giữa máy khách PDA và máy chủ trước khi bước vào giai đoạn lập trình chi tiết.

Thứ tư, nghiên cứu xác định điểm hòa vốn về chi phí của kiểm thử tự động. Mặc dù chi phí thiết lập ban đầu cao hơn khoảng 200% so với kiểm thử thủ công, nhưng từ chu kỳ kiểm thử hồi quy thứ 4 trở đi, chi phí trung bình trên mỗi ca kiểm thử tự động giảm xuống chỉ còn khoảng 15% đến 20% so với việc duy trì nhân sự thao tác bằng tay.

Thảo luận kết quả

Nguyên nhân chính dẫn đến hiệu quả vượt trội của TestComplete 9 là nhờ kiến trúc mở dựa trên nền tảng COM và tính năng trực quan hóa kiểm thử, cho phép tự động chụp ảnh màn hình tại từng bước thực thi và phân cấp đối tượng giao diện theo cấu trúc cây tiến trình. So với các công cụ cùng thời kỳ như WinRunner hay QuickTest Professional, TestComplete 9 cung cấp khả năng can thiệp sâu vào các thuộc tính nội tại của đối tượng phần mềm trên cả nền tảng Win32, .NET, Java và Web browsers.

Trong thực tế, các dữ liệu thực nghiệm về thời gian phản hồi và độ chính xác của các ca kiểm thử có thể được biểu diễn một cách trực quan qua biểu đồ cột so sánh thời gian thực thi giữa kiểm thử thủ công và tự động, cùng bảng ma trận đối chiếu mức độ bao phủ các nhánh điều kiện logic. Kết quả này hoàn toàn tương thích với các báo cáo kiểm thử phần mềm quốc tế, khẳng định rằng công cụ tự động hóa không phải là công cụ kiểm thử nguyên bản mà đóng vai trò chủ đạo như một công cụ thực thi lại các thử nghiệm hồi quy với độ tin cậy tuyệt đối.

Đề xuất và khuyến nghị

  1. Chuẩn hóa quy trình lựa chọn ca kiểm thử để chuyển đổi sang tự động hóa: Trưởng nhóm kiểm thử và Quản trị dự án cần tiến hành sàng lọc kỹ lưỡng, đặt mục tiêu tự động hóa từ 70% đến 80% các ca kiểm thử hồi quy ổn định và kiểm thử hiệu năng chịu tải, đồng thời duy trì từ 20% đến 30% khối lượng công việc cho kiểm thử thăm dò thủ công. Thời gian hoàn thành việc sàng lọc trong vòng 2 tuần đầu tiên của mỗi chu kỳ phát hành.

  2. Tích hợp kỹ thuật kiểm chứng thiết kế dựa trên mô hình mô phỏng: Kiến trúc sư hệ thống và Đội ngũ đảm bảo chất lượng cần phối hợp xây dựng các mô hình trạng thái UML và ứng dụng mô phỏng đơn giản ngay tại pha thiết kế kiến trúc. Mục tiêu là phát hiện và loại bỏ tối thiểu 40% lỗi logic cấu trúc trước khi bàn giao tài liệu cho đội ngũ lập trình, thực hiện trong vòng 1 tháng đầu của dự án.

  3. Đào tạo và nâng cao năng lực lập trình kịch bản cho đội ngũ kiểm thử viên: Ban giám đốc kỹ thuật cần thiết lập chương trình đào tạo chuyên sâu kéo dài 3 tháng cho toàn bộ nhân sự kiểm thử, trang bị kỹ năng viết mã kịch bản nâng cao trên các ngôn ngữ VBScript hoặc JScript, giúp tăng tốc độ bảo trì mã kiểm thử lên 50%.

  4. Tối ưu hóa cấu trúc quản lý điểm kiểm tra và kho lưu trữ dữ liệu tập trung: Kỹ sư kiểm thử tự động cần thiết lập kho dữ liệu kiểm thử dùng chung và chuẩn hóa các điểm kiểm tra đối tượng cho từng phân hệ, nhằm nâng cao tỷ lệ tái sử dụng kịch bản kiểm thử lên trên 65% trong các phiên bản cập nhật định kỳ hàng quý.

Đối tượng nên tham khảo luận văn

  1. Kỹ sư kiểm thử phần mềm và Chuyên viên tự động hóa: Tìm thấy hướng dẫn chi tiết từng bước về cách thiết lập dự án, tạo điểm kiểm tra thuộc tính, cấu hình ghi nhận thao tác và gỡ lỗi kịch bản trên công cụ TestComplete 9 để áp dụng trực tiếp vào các dự án kiểm thử giao diện thực tế.

  2. Quản lý dự án phần mềm và Trưởng bộ phận QA: Nắm bắt mô hình định lượng chi phí - lợi ích và cơ cấu phân bổ ngân sách cho kiểm thử tự động, từ đó đưa ra quyết định đầu tư công cụ và sắp xếp nhân lực chính xác theo từng giai đoạn của mô hình chữ V.

  3. Kiến trúc sư phần mềm và Kỹ sư thiết kế hệ thống: Tiếp cận phương pháp luận mới về việc chuyển đổi thiết kế giao thức SAECA và máy trạng thái thành mô hình có thể kiểm thử tự động, giúp xác minh tính đúng đắn của thiết kế ngay từ giai đoạn tiền khả thi.

  4. Giảng viên và Học viên cao học chuyên ngành Công nghệ thông tin: Sử dụng công trình như một tài liệu tham khảo học thuật hoàn chỉnh về khung tự động hóa kiểm thử, kỹ thuật phân tích luồng dữ liệu và phương pháp nghiên cứu thực nghiệm trong công nghệ phần mềm.

Câu hỏi thường gặp

  1. Kiểm thử tự động có thể thay thế hoàn toàn vai trò của kiểm thử thủ công không? Kiểm thử tự động không thể thay thế hoàn toàn kiểm thử thủ công vì các công cụ chỉ thực thi chính xác theo các chỉ dẫn lập trình sẵn mà thiếu khả năng tư duy trực giác và thẩm mỹ. Trong thực tế, các lỗi giao diện mới phát sinh hoặc các ca kiểm thử thăm dò lần đầu luôn được phát hiện hiệu quả nhất bởi con người với tỷ lệ phát hiện lỗi ban đầu đạt trên 85%.

  2. Khi nào một dự án phần mềm nên bắt đầu triển khai kiểm thử tự động? Dự án nên triển khai tự động hóa khi các tính năng cốt lõi đã tương đối ổn định và sản phẩm bước vào giai đoạn bảo trì hoặc phát triển lặp lại nhiều phiên bản liên tiếp. Khi tần suất chạy lại các ca kiểm thử hồi quy vượt quá 4 lần trong một chu kỳ phát hành, việc áp dụng tự động hóa sẽ bắt đầu phát huy hiệu quả kinh tế rõ rệt.

  3. Điểm khác biệt vượt trội của TestComplete 9 so với các công cụ kiểm thử khác là gì? TestComplete 9 nổi bật nhờ khả năng truy cập trực tiếp vào các phương thức và thuộc tính của đối tượng nội tại trong ứng dụng thông qua Object Browser. Công cụ hỗ trợ 5 ngôn ngữ kịch bản khác nhau, tích hợp tính năng Test Visualizer chụp ảnh trực quan từng thao tác và cho phép kiểm thử đồng thời nhiều nền tảng ứng dụng từ desktop, web cho đến dịch vụ web.

  4. Tại sao cần đưa công cụ kiểm thử vào kiểm chứng thiết kế phần mềm ở giai đoạn sớm? Việc sửa lỗi ở giai đoạn vận hành có thể tốn chi phí gấp 10 đến 30 lần so với việc khắc phục lỗi ngay tại giai đoạn thiết kế. Bằng cách mô hình hóa thiết kế thành ứng dụng mô phỏng có thể chạy được, kỹ sư có thể dùng TestComplete để phát hiện sớm các sai lệch logic của giao thức trước khi tiến hành viết mã nguồn quy mô lớn.

  5. Chi phí đầu tư ban đầu cho một hệ thống kiểm thử tự động gồm những yếu tố nào? Chi phí ban đầu bao gồm 4 khoản mục chính: bản quyền phần mềm công cụ kiểm thử, nâng cấp cấu hình phần cứng phục vụ môi trường thực thi, chi phí đào tạo kỹ năng viết kịch bản cho nhân viên và quỹ lương cho các kỹ sư kiểm thử tự động có trình độ cao. Tổng chi phí này thường chiếm khoảng 25% đến 30% ngân sách kiểm thử của năm đầu tiên.

Kết luận

  • Tự động hóa kiểm thử là phương pháp tối ưu giúp giảm thiểu từ 60% đến 70% thời gian thực thi các bộ kiểm thử hồi quy trong quy trình sản xuất phần mềm.
  • Luận văn đã phân tích toàn diện 7 thành phần cấu trúc của mô hình tự động hóa tổng quát và chứng minh hiệu quả thực tế của công cụ TestComplete 9.
  • Đóng góp khoa học nổi bật của công trình là đề xuất phương pháp chuyển đổi thiết kế trừu tượng thành mô hình mô phỏng để kiểm thử sớm bằng kịch bản tự động.
  • Kết quả thực nghiệm trên ứng dụng quản lý y tế và module xử lý dữ liệu điện tim ECG khẳng định tính đúng đắn và khả năng ứng dụng thực tế cao của phương pháp.
  • Trong lộ trình 6 đến 12 tháng tới, các nhóm phát triển nên mở rộng tích hợp kịch bản kiểm thử tự động vào hệ thống tích hợp liên tục và phát triển kịch bản kiểm thử phân tán trên môi trường điện toán đám mây.

Quý độc giả, các kỹ sư phần mềm và nhà quản lý dự án hãy tham khảo và ứng dụng ngay các khung phương pháp luận cùng quy trình thực nghiệm từ luận văn để tối ưu hóa chi phí và nâng cao chất lượng toàn diện cho các sản phẩm phần mềm của đơn vị mình.