Kiểm thử phần mềm và các ngôn ngữ lập trình

Một phần của tài liệu Nghiên cứu kỹ thuật kiểm thử phần mềm và ứng dụng trên môi trường DOT NET (Trang 29)

Nhƣ đã đề cập ở phần trƣớc, có rất nhiều công cụ kiểm thử phần mềm trên thị trƣờng, và các tổ chức đã gặt hái đƣợc nhiều thành công khi áp dụng các công cụ này vào quy trình phát triển phần mềm của mình. Một vài công cụ kiểm thử phần mềm viết kịch bản kiểm thử bằng ngôn ngữ Visual Basic 6.0 và thực thi kịch bản trong Visual Studio IDE. Đồng thời cũng có nhiều tài liệu hƣớng dẫn cách viết kịch bản kiểm thử sử dụng ngôn ngữ Visual Basic 6.0 một cách thủ công. Một vài công cụ khác đƣợc viết bằng Java, nhƣ Junit, và Jprobe. Và các công cụ này để viết kịch bản kiểm thử cho những phần mềm chạy trên Unix, Linux, và các nền tảng (platform) khác. Trong phạm vi Luận văn này, tôi sẽ sử dụng C# của môi trƣờng Microsoft Visual Studio .NET làm ngôn ngữ lập trình cho cả công cụ và kịch bản kiểm thử.

Việc tự động hóa các mục tiêu tập trung chủ yếu vào các vấn đề từ một số khu vực đƣợc xác định rõ ràng. Những vấn đề và các khu vực đó đã từng xảy ra các lỗi phần mềm trong quá khứ. Các công cụ kiểm thử thƣờng viết những kịch bản kiểm thử với một số lặp đi lặp lại các mẫu (parttern) để kiểm thử các phƣơng thức khác nhau trong một lớp (class).

Nhìn chung chúng mô hình kiểm thử gồm các bƣớc sau: 1. Thiết lập các thông số cần thiết.

2. Thực thi phƣơng thức cần kiểm thử và bắt lỗi. 3. Trình bày các kết quả nhận đƣợc

Các phƣng thức dƣới quá trình kiểm thử hành xử theo các cách khác nhau. Mỗi tiến trình kiểm thử sẽ về một giá trị. Các kiểm thử viên sẽ xem xét liệu kết quả trả về có giống với kết quả mong đợi. Do đó, giá trị của kết quả trả về sẽ đƣợc trình bày sau khi thực thi kiểm thử.

Một công cụ tự động kiểm thử sẽ đƣợc thực hiện để kiểm thử tất cả các khía cạnh của một sản phẩm phần mềm.

Có thể dễ dàng viết các đoạn mã nguồn một cách thủ công khi không có nhiều đối tƣợng để kiểm thử. Nhƣng mất nhiều thời gian để viết mã cho một tập hợp số lƣợng lớn lớp (class) và thành phần. Ngoài ra các kiểm thử viên sẽ mất nhiều thời gian để hiểu đƣợc từng phƣơng thức để có thể viết mã một cách chính xác. Mặt khác rất khó khăn cho một công cụ để viết mã khác nhau giữa các phƣơng thức phức tạp. Gỡ lỗi luôn luôn cần thiết khi viết kịch bản kiểm thử một cách thủ công. Với công cụ kiểm thử tự động các quy trình kiểm thử sẽ trở nên nhanh chóng cho các công việc lặp đi lặp lại và sẽ không cần tới gỡ lỗi (debug) nữa.

Chúng ta đã biết về ranh giới của các điều kiện cho từng test case, nhƣng chúng ta thƣờng dành nhiều thời gian triển khai để có thể soạn ra các test case. Luận văn giới thiệu 2 giải pháp đơn giản để tự động soạn test case, tiết kiệm thời gian để các kiểm thử viên tập trung vào các khu vực có nguy cơ cao, và để dành nhiều thời gian hơn vào các công việc kiểm thử thủ công. Khi cập nhật khả năng tự động hóa cho công cụ, các giải pháp cho vấn đề lặp đi lặp lại cuối cùng sẽ đƣợc tự động hóa xử lý. Chỉ có những vấn đề mới sẽ đƣợc kiểm thử thủ công và tự động hóa về sau.

Sử dụng ngôn ngữ nào để viết kịch bản kiểm thử là không quan trọng, kiểm thử viên phải có hiểu biết trong lĩnh vực kiểm thử và có kỹ năng lập trình. Các phƣơng thức minh hoạ trong Luận văn này có thể đƣợc chuyển qua bất cứ ngôn ngữ và nền tảng nào.

Trên thực tế C# đã đƣợc tạo ra để phát triển phần mềm, chứ không phải dành cho kiểm thử phần mềm. Dễ hiểu rằng một số chuyên gia C# sử dụng các công cụ kiểm thử phần mềm của bên thứ ba để kiểm thử cho các dự án phần mềm của họ. Bạn có thể tự hỏi làm thế nào một ngôn ngữ lập trình có thể đƣợc sử dụng để phát triển một công cụ kiểm thử. Vấn đề này sẽ đƣợc sáng tỏ trong nội dung của Luận văn.

Trong quá khứ, Visual Basic và Java đã đƣợc sử dụng thƣờng xuyên hơn các ngôn ngữ khác để viết kịch bản kiểm thử. Ví dụ, công cụ kiểm thử của Rational sử dụng một phƣơng thức reverse-engineering và tạo ra các kịch bản trong Visual Basic. Cuốn sách Visual Basic cho các kiểm thử viên (Sweeney 2001) giới thiệu một số kỹ thuật của việc tạo ra kịch bản kiểm thử, nhƣng nó không bao gồm các kỹ thuật cho tự động hóa kịch bản kiểm thử. Lập trình viên Java thƣờng dùng JUnit nhƣ một công cụ kiểm thử tự động. Sử dụng một ngôn ngữ lập trình nhƣ C # làm công cụ kiểm thử là một khái niệm mới. Luận văn sẽ không chỉ nghiên cứu cách làm thế nào để viết một kịch bản kiểm thử cho một assembly, mà còn chỉ ra cách làm thế nào để phát triển một công cụ để viết kịch bản kiểm thử một cách tự động. Về sau, các tổ chức khác nhau và các dự án phần mềm với chức năng khác nhau có thể sử dụng phƣơng pháp này cho việc phát triển phần mềm. Để thực hiện giải pháp sẽ tập trung vào giải quyết các vấn đề sau đây:

 Làm thế nào để sử dụng những chức năng định trƣớc của một ngôn ngữ (trong trƣờng hợp này là C #) mà lại trả về các thông tin liên quan tới assembly trong quá trình kiểm thử.

 Làm thế nào để tạo ra giao diện với những thành phần điều khiển đơn giản mà có thể thể hiện đƣợc thông tin cũng nhƣ kết quả kiểm thử.

 Làm thế nào để tạo và lƣu giữ test case trong cơ sở dữ liệu (trong trƣờng hợp này là MS Excel và XML) để tự động tạo các kịch bản kiểm thử.

 Làm thế nào để tạo một bản trình bày các thông tin của một thành phần trong quá trình kiểm thử (trong trƣờng hợp này là sử dụng một bảng tính Excel.)

 Làm thế nào thực hiện một cơ chế để tạo ra tập lệnh kiểm thử để thử nghiệm một lớp (class), một thành phần dữ liệu, và một phƣơng thức (trong trƣờng hợp này là sử dụng. NET CodeDom.)

 Làm thế nào để cho phép các kịch bản kiểm thử có thể kiểm thử các tham số thông qua việc truyền giá trị, truyền tham chiếu (references), và truyền đối tƣợng.

 Làm thế nào để cho phép các kịch bản kiểm thử có thể kiểm thử dựa vào hệ thống Windows system registry.

 Làm thế nào trình bày các kết quả kiểm thử để các nhà phát triển sẽ có thêm nhiều thông tin tốt nhất có thể để sửa chữa lỗi đƣợc tìm ra trong quá trình kiểm thử.

Một phần của tài liệu Nghiên cứu kỹ thuật kiểm thử phần mềm và ứng dụng trên môi trường DOT NET (Trang 29)