Mục tiêu chính của kiểm thử phần mềm là viết một kịch bản kiểm thử để tiến hành kiểm thử tất cả các class, các phƣơng thức và các thuộc tính của một assembly. Cốt lõi của công cụ kiểm thử tự động là kỹ thuật thực hiện tự động theo các task sau:
- Khám phá các class, các phƣơng thức và các thuộc tính trong một assembly.
- Định nghĩa các ca kiểm thử (test case) dựa vào bản chất tự nhiên của assembly.
- Viết một kịch bản kiểm thử để thực hiện kiểm thử. - Thực thi kịch bản kiểm thử.
- Trình diễn kết quả kiểm thử.
- Sử dụng test script assembly cho việc kiểm thử sau này nhƣ kiểm thử hồi quy (regression testing) và kiểm thử tích hợp (integration testing).
Trên thực tế, công cụ kiểm thử tự động có thể đảm bảo một quá trình kiểm thử suyên suốt để tìm bug một cách hiệu quả. Trong phần trƣớc, bạn đã tìm hiểu các công cụ kiểm thử tự động sử dụng không gian tên .NET Reflection, lớp .NET Type, MS Excel API, và tài liêu XML để hoàn thành task đầu tiên, tập hợp thông tin về các class, các phƣơng thức và các thuộc tính từ assemply dƣới tiến trình kiểm thử. Tiếp theo, ta cần cho phép công cụ kiểm thử tự động viết kịch bản kiểm thử. Để làm việc này, bạn cần tìm hiểu các kỹ thuật lập trình sử dụng không gian tên System.CodeDom.
CodeDom có nghĩa là Code Document Object Model. Nó có khả năng sinh tự động mã lệnh cho một công cụ builder. Các kiểm thử viên xây dựng các công cụ kiểm thử một cách lặp đi lặp lại, nó đƣợc dùng để sinh ra các kịch bản kiểm thử một cách tự động. Trên thực tế không gian tên CodeDom cung cấp cho các kiểm thử viên một công cụ mới có để dùng để sinh ra các kịch bản kiểm thử một cách tự động.
Bảng 3.11: Các kiểu cung cấp bởi CodeDom để xây dựng không gian tên [9]
Kiểu để xây dựng không gian tên Mô tả
CodeNamespace Xây dựng một không gian tên đơn lẻ
CodeNamespaceCollection Xây dựng một tập hợp các không gian tên
CodeNamespaceImport Xây dựng khột không gian tên đơn lẻ nhập lệnh
CodeNamespaceImportCollection Xây dựng tập hợp các không gian tên nhập lệnh
Bảng 3.2: Các kiểu cung cấp bởi CodeDom để xây dựng không gian tên [9]
Kiểu CodeDome để xây dựng kiểu (Type)
CodeTypeDeclaration Khai báo một lớp (class), cấu trúc (structure), liệt kê (enumeration), hoặc interface. Tương ứng với một trong nhứng thuộc tính như IsClass, IsInterface, IsStruct, và IsEnum.
CodeTypeDeclarationCollection Declares a type collection. Khai báo một kiểu tập hợp.
CodeTypeDelegate Khai báo một đại biểu (delegate).
Bảng 3.12: Cấu trúc của Test Script được sinh bởi không gian tên CodeDom [9]
namespace <TestNamespace> {
using System;
<more using statements> public class <TestClassName> {
private string <filedname> <more fields>
public <TestClassname> (string <cstorParameter>) {
<cstor Statements> }
public void <TestMethod> { <Method Statements> } <More methods> } <More Classes> }
Không gian tên System.CodeDom đƣợc sử dụng để viết mã lệnh một cách tự động. Luận văn sẽ nghiên cứu cách không gian tên CodeDom tự động sinh ra một
chƣơng trình C#. Sau đó ta sẽ thảo luận cách thức không gian tên CodeDom thực thi ở mức dƣới và thể hiện cho bạn thấy cách để tạo ra các ứng dụng của riêng mình với nó.