Một .NET Assembly tổ chức một sản phẩm phần mềm theo cấu trúc namespace, class type, và class member. Các assemby đƣợc xây dựng bởi ngôn ngữ thông dịch của .NET (MSIL). Sau đó, trình Microsoft disassembler có thể dịch ngƣợc các assembly này. Chúng ta sẽ ứng dụng đƣợc những thế mạnh của .NET để lập trình một công cụ mà có khả năng nhận ra những class và member trong assembly (file DLL hoặc EXE)
và tự động viết ra một kịch bản kiểm thử để kiểm thử mỗi method của thành phần (component) này.
Không gian tên (namespace) .NET Reflection cho phép dịch ngƣợc các assembly có sẵn. Không gian tên .NET CodeDom có thể viết ra các kịch bản kiểm thử một cách động. Sau đó có thể triệu gọi (invoke) một method. Dữ liệu kiểm thử và kết quả kiểm thử sẽ đƣợc thể hiện dƣới dạng XML và MS Excel Worksheet. Trên thực tế, sẽ sử dụng các công cụ, kỹ thuật .NET Reflection, .NET CodeDom, lập trình XML, và MS Excel API cho việc xây dựng công cụ kiểm thử tự động.
Mối quan hệ giữa không gian tên .NET Reflection và assembly trong việc kiểm thử tƣơng tự nhƣ mối liên hệ giữa một lăng kính và ánh sáng mặt trời. Lăng kính phản xạ ánh sáng mặt vào thành các quang phổ của nó theo bƣớc sóng ánh sáng. Tƣơng tự các không gian tên .NET Reflection sẽ dịch ngƣợc một assembly thành các lớp (class), thuộc tính (attribute), và các phƣơng thức thành viên (method). Do đó nó sẽ tự động hoàn thiện quá trình thu thập thông tin. Quá trình này tƣơng tự nhƣ việc các kiểm thử viên giành thời gian để nghiên cứu sản phẩm. Nhờ có những không gian tên Reflection, các kiểm thử viên có thể dành thời gian để xác định các rủi ro khác.
Sau khi thông tin đã đƣợc tập hợp, cần quan tâm tới .NET CodeDom, đây là một khái niệm công nghệ mới trong lĩnh vực phát triển phần mềm. Không gian tên này đƣợc sử dụng để ghi các tập lệnh kiểm thử dựa trên thông tin dịch ngƣợc của assembly do không gian tên .NET Reflection cung cấp.
Các kỹ sƣ kiểm thử phần mềm đã sửa dụng các công cụ trên thị trƣờng mà có khả năng dịch ngƣợc (reverse-engineering) một sản phẩm phần mềm. Tuy nhiên, đôi khi việc viết một công cụ kiểm thử cho mỗi thành phần của một assembly trở lên nhàm chán. Điều này càng đƣợc thể hiện rõ khi một nhóm hàng trăm thành viên cùng kiểm thử một assembly. Với sự kết hợp của. NET Reflection và. NET CodeDom, các công cụ kiểm thử tự động kết hợp các thông tin thu thập đƣợc và các quy trình viết kịch bản với một yêu cầu tối thiểu nhất về sự tƣơng tác của các kiểm thử viên.
Để kích hoạt tính năng chỉnh sửa dữ liệu, công cụ kiểm thử phát triển trong Luận văn này có thể sử dụng một tài liệu XML hoặc một bảng tính MS Excel để lƣu trữ dữ liệu. XML đã đƣợc chấp nhận rộng rãi trong nhiều tiêu chuẩn công nghiệp. Sử dụng
XML để lƣu trữ dữ liệu cho phép tăng cƣờng khả năng tự động hóa của công cụ kiểm thử phần mềm. Nó cũng có thể đƣợc áp dụng trong các môi trƣờng phát triển và các nền tảng khác nhau.
Các bảng tính Excel đƣợc sử dụng để lƣu trữ dữ liệu kiểm thử vì tính phổ biến của nó trên các hệ điều hành MS Windows. Các MS Excel API cung cấp khả năng linh hoạt cao giúp cho các kiểm thử viên trong việc tổ chức dữ liệu kiểm thử. Sau cùng, cùng một MS Excel API đƣợc kết hợp trong việc viết kịch bản kiểm thử, sẽ kiểm thử assembly dựa vào các test case và trả về kết quả kiểm thử.
Trong môi trƣờng tích hợp (IDE) của Microsoft Visual Studio. NET, các assembly đƣợc xây dựng bằng cách sử dụng MSIL assembler. Để chạy các kịch bản kiểm thử, kiểm thử viên có thể triệu gọi tiến trình kiểm thử thông qua việc lập trình với late binding - một khả năng để khám phá các loại biến, phƣơng thức, và các thuộc tính của một đối tƣợng và gọi các phƣơng thức tại runtime. Sử dụng kỹ thuật late binding giúp cho các công cụ kiểm thử tự động đƣợc hoạt động hiệu quả hơn. Vì thế, bạn có đƣợc một công cụ kiểm thử tự động dƣới sự hỗ trợ của môi trƣờng lập trình MS. NET.
Bảng 3.1: Không gian tên .NET System [3]
Không gian tên Chức năng
System Gồm các lớp (class) chứa những tính năng cơ
bản, như chuyển đổi kiểu dữ liệu, các phép tính toán học, lời gọi chương trình, tập hợp garbage, và quá trình quản lý môi trường. Không gian tên System là một không gian tên lớn nhất mà .NET cung cấp.
System.CodeDom Bao gồm các lớp chứa các thành phần của mã
nguồn liên quan tới văn bản. Trong luận văn thành phần này được dùng để sinh ra các kịch bản kiểm thử tự động.
System.Collections Chứa các lớp định nghĩa tập hợp các đối tượng,
như danh sách (list), hàng đợi (queue), danh sách được sắp xếp (sorted list), các mảng
(array), ArrayList, bảng băm (hash table), và từ điển (dictionnaries). Công cụ kiểm thử tự động và kịch bản kiểm thử sử dụng không gian tên này để lưu trữ dữ liệu tạm thời.
System.ComponentModel Chứa các lớp sẽ tạo ra các component và control
trong runtime và design-time.
System.Data Chứa các lớp định nghĩa kỹ thuật truy suất dữ
liệu ADO.NET. Kỹ thuật ADO.NET cho phép ta xây dựng các component có thể quản lý dữ liệu từ nhiều nguồn dữ liệu trong chế độ kết nối hoặc ngắt kết nối.
System.Diagnostics Chứa các lớp có thể dùng để debug các chương
trình .NET, để trace sự thi hành của mã nguồn của ta, để quản lý việc thực thi chương trình của chúng ta sử dụng bộ đếm thực thi và đọc và viết chúng vào event log, và để start hoặc stop các tiến trình.
System.Drawing Chứa các lớp sẽ thêm các chức năng tổ chức
giao diện (GDI).
System.IO Chứa các lớp có thể đọc và viết ra data stream
và file vật lý trên ổ cứng với phương thức xử lý vào/ra đồng bộ và không đồng bộ.
System.Net Chứa các lớp cung cấp một phương thức bao
hàm nhiều phương thức mạng khổ biến hiện nay để handle các request DNS, HTTP, và FTP. Nếu sử dụng cho kiểm thử Web ta sẽ nhận thấy lợi ích của không gian tên này.
System.Reflection Chứa các lớp cung cấp một cái nhìn tổng quan
của các kiểu, các phương thức với những tham số, thuộc tính, và các trường dữ liệu của một ứng dụng .NET. Thậm chí ta có thể tạo và triệu gọi
các kiểu trong runtime một cách phương thức hóa.
System.Resources Chứa các lớp giúp cho lập trình viên tạo, lưu trữ
và quản lý culture trong một ứng dụng.
System.Runtime.InteropServices Cung cấp tính năng cho “unmanaged code.”
System.Text Cung cấp các lớp có thể dùng để làm việc với các
phương thức mã hóa ký tự ASCII, Unicode, UTF- 7, và UTF-8.
System.Threading Chứa các lớp cho phép tạo nhiều luồng trong các
ứng dụng .NET, bằng cách tạo ra một ứng dụng đa luồng.
System.Timers Chứa các lớp để phát sinh một sự kiện trong một
khoảng thời gian hoặc trong một lịch sự kiện phứ tạp.
System.Web Chứa các lớp để thực thi giao thức HTTP.
System.Windows.Forms Chứa các lợp để xây dựng các ứng dụng
Windows với đầy đủ tính năng như box, menu, và button.
System.XML Chứa các lớp để thực thi dữ liệu XML. Hỗ trợ
cac không gian tên XML 1.0, XML, XML
schemas, XPath, XSL và XSLT, DOM Level 2, và SOAP 1.1.