Chương 1 mục 1.1 giới thiệu tổng quan về khái niệm automated testing.2 trình bày mục đích nghiên cứu của đề tài, các yêu cầu đặt ra, các tính năng đã đạt được, cũng như khả năng mở rộng trong tương lai. Mục này có một số từ thuật ngữ liên quan được trình bày chi tiết trong chương 2.1 Tổng quan Kiểm tra thủ công (manual testing) là hoạt động của con người trước máy tính cẩn thận thực hiện kiểm tra từng bước một. Tự động hóa kiểm tra (automated testing) có nghĩa là dùng công cụ tự động để thực hiện công việc kiểm tra, kiểm định. Phần mềm tự động có thể nhập dữ liệu kiểm tra, chạy các bước theo quy trình, so sánh kết quả thực tế với kết quả dự kiến và phát sinh ra báo cáo kiểm định.
Kiểm tra yêu cầu việc đầu tư đáng kể tiền bạc và nguồn nhân lực. Dùng công cụ kiểm tra tự động có thể ghi nhận lại quá trình kiểm tra và chạy lại nếu có yêu cầu. Một khi việc kiểm tra được tự động hóa, không cần có sự can thiệp của con người. Tại sao dùng test automation: • Kiểm tra thủ công tốn thời gian, chi phí và nguồn lực.
• Khó khăn để kiểm tra nhiều ứng dụng một lúc thủ công. • Tự động không yêu cầu sự can thiệp của con người, có thể chạy bất cứ lúc nào (chạy qua đêm chẳng hạn). • Kiểm tra tự động tăng tốc độ kiểm tra ứng dụng, tăng phạm vi kiểm tra. • Kiểm tra thủ công có thể dẫn đến sự lặp lại nhàm chán và phát sinh lỗi.
Các trường hợp có thể kiểm tra tự động: • Các trường hợp kiểm tra có tính lặp lại. • Các trường hợp kiểm tra khó thực hiện thủ công hoặc rất chán ngắt cho con người. • Các trường hợp kiểm tra tiêu tốn quá nhiều thời gian. Các trường hợp không thích hợp cho việc kiểm tra tự động: • Các công việc mới và chưa thực hiện thủ công ít nhất một lần.
• Các công việc yêu cầu thay đổi thường xuyên. GVHD: LƯU THANH TRÀ HVTH: LÊ TRƯỜNG ANH TIẾN LUẬN VĂN TỐT NGHIỆP 10 Các lợi ích của việc kiểm tra tự động: • Nhanh hơn kiểm tra thủ công rất nhiều lần. • Kết quả đáng tin cậy. • Kết quả đảm bảo tính nhất quán.
• Tiết kiệm thời gian và tiền bạc. • Đảm bảo sự chính xác cao. • Không cần sự can thiệp của con người. • Nâng cao hiệu suất.
• Các kịch bản kiểm tra có thể sử dụng lại. • Có thể kiểm tra một cách thường xuyên.2 Mục đích nghiên cứu đề tài Có nhiều ứng dụng test automation hiện nay trên thị trường rất mạnh và nhiều tính năng phong phú. Tuy nhiên, các phần mềm này có thu phí bản quyền hàng năm và chi phí sử dụng rất đắt. Mục đích nghiên cứu của đề tài là xây dựng ứng dụng test automation đơn giản nhưng hiệu quả.
Đáp ứng yêu cầu cơ bản của một hệ thống tự động kiểm định, kiểm tra nhưng phần mã nguồn mở, công khai cho mọi người. Có thể dựa vào nghiên cứu và sử dụng mã nguồn này để từ đó phát triển thêm, tạo nên một hệ thống hoàn thiện sau này.1 Yêu cầu Có nhiều loại test automation khác nhau trong nhiều lĩnh vực khác nhau. Mục đích nghiên cứu của đề tài là xây dựng một hệ thống test automation trên ứng dụng Windows gồm 2 phần chính: • Phần bắt các UI Element (User Interface Element) trên ứng dụng test một cách chính xác, kết hợp với một số lệnh để tương tác với Element này tạo thành một kịch bản (script) để tùy biến thực hiện nhiều việc khác nhau, kết hợp với lệnh điều kiện If tùy theo giá trị thực tế trả về như thế nào sẽ có hành động khác nhau phù hợp. Script là ngôn ngữ được thể hiện với những câu lệnh đơn giản và lưu ở định dạng văn bản dễ đọc.
Ví dụ test automation trên web: tự động điền username, điền password và nhấn nút đăng nhập GVHD: LƯU THANH TRÀ HVTH: LÊ TRƯỜNG ANH TIẾN LUẬN VĂN TỐT NGHIỆP 11 trên một website. Tùy theo giá trị trả về là đăng nhập thành công hay thất bại ta sẽ có các bước tiếp theo khác nhau. • Phần biên dịch, đọc và phân tích các lệnh từ file script. Trình biên dịch thực hiện chức năng phân tích từ vựng và phân tích cấu trúc ngữ pháp của từng dòng lệnh, từ đó chạy các dòng lệnh trong file scrip theo nội dung yêu cầu.
Đồng thời cũng có hệ thống logs ghi nhận lại các bước chạy thành công hoặc thất bại để người sử dụng kiểm tra và xử lý.2 Tính năng Đề tài phát triển một hệ thống tự động kiểm định (test automation) có các tính năng như sau: • Xác định và highlight các thành phần UI (UI Element) theo vị trí và kích thước trên ứng dụng cần test. • Xác định được tất cả các đặc tính (Properties) của mỗi thành phần UI Elelement, sử dụng kết hợp một trong số những đặc tính này để xác định duy nhất một giá trị ID đại diện cho UI Element này. • Xây dựng các UI Element theo cấu trúc cây phân nhánh với gốc là desktop và các nhánh con là các UI Element thành phần. • Cơ chế tìm kiếm UI Element dựa theo chuỗi ID đã xác định từ gốc ứng dụng xuống các nhánh con nhanh và chính xác.
• Ghi nhận tương tác người sử dụng đối với các UI Element trên ứng dụng cần test theo 2 chế độ manual và tự động để lưu vào script. • Thực hiện được Invoke (click) đối với các UI Element có ControlType là button, lấy giá trị và đặt giá trị cho các ControlType là dạng text. • Xây dựng được một trình biên dịch gồm có phần phân tích từ vựng, phân tích cú pháp với cấu trúc lệnh rẽ nhánh có điều kiện If, kết hợp với một số lệnh tương tác cơ bản với UI Element. • Có hệ thống logs để lưu lại quá trình biên dịch nhằm mục đích kiểm tra và xác định lỗi.
GVHD: LƯU THANH TRÀ HVTH: LÊ TRƯỜNG ANH TIẾN LUẬN VĂN TỐT NGHIỆP 12 1.3 Độ phức tạp Để xây dựng một hệ thống test automation hoàn chỉnh, yêu cầu nhận diện, xác định và tương tác được tất cả các kiểu điều khiển (Control Pattern) của các thành phần UI Element như bảng 2. Phần trình biên dịch yêu cầu nhiều lệnh khác nhau để tương tác với mỗi UI Element khác nhau, cùng với nhiều lựa chọn và xuất kết quả báo cáo. Có một hệ thống báo cáo hoàn chỉnh, chi tiết để hỗ trợ người sử dụng.4 Mở rộng Hiện đề tài chỉ hỗ trợ kiểu điều khiển (Control Pattern) là InvokePattern và TextPattern. Có thể mở rộng cho tất cả các kiểu điều khiển trong bảng 2.
Mở rộng thêm nhiều lệnh cho trình biên dịch, cũng như các lệnh tùy chọn và xuất báo cáo. Mở rộng xây dựng một hệ thống báo cáo chuyên nghiệp hơn, hiệu quả, thân thiện với người sử dụng.5 Ứng dụng Ứng dụng cụ thể của đề tài trong việc kiểm định đo thời gian quay số kết nối giữa client và server trong hệ thống tổng đài Voice IP. Hệ thống sẽ tự động chạy ứng dụng softphone trên Windows, quay số kết nối đến tổng đài và chờ đến khi kết nối thành công hoặc thất bại trong khoảng thời gian cho phép. Việc kiểm tra tự động được thực hiện trên rất nhiều số điện thoại khác nhau sẽ tiết kiệm rất nhiều thời gian so với thao tác bằng tay, đây cũng là một ví dụ ứng dụng thực tế của hệ thống test automation.
Mở rộng việc ứng dụng hệ thống test automation cho nhiều mục đích khác nhau như tự động hóa kiểm định sản phẩm phần mềm, tự động hóa các chương trình ứng dụng trên Windows, các ứng dụng hỗ trợ người dùng, … 1.3 Phạm vi nghiên cứu và phương pháp nghiên cứu 1.1 Phạm vi nghiên cứu Giới hạn đối với các ứng dụng chạy trên môi trường Windows nền tảng WinForm, Dot Net và Windows Presentation Foundation (WPF). GVHD: LƯU THANH TRÀ HVTH: LÊ TRƯỜNG ANH TIẾN LUẬN VĂN TỐT NGHIỆP 13 Giới hạn thao tác đối với các điều khiển Control Type dạng nút nhấn (Button) và trường Edit box dạng text. Đối với trình biên dịch, xây dựng một số lệnh cơ bản để tương tác với ứng dụng cần test như: RunApp, GetID, PushID, WaitID, SetID, ShowID và lệnh điều kiện rẽ nhánh If.2 Phương pháp nghiên cứu Dùng công cụ lập trình Visual C# trong bộ Microsoft Visual Studio 2015, chỉ sử dụng các thư việc sẵn có của Microsoft. Ứng dụng chạy yêu cầu máy tính cài.
Đề tài được phát triển bởi tham khảo các tài liệu nghiên cứu, các sách kỹ thuật liên quan được giới thiệu trong phần tài liệu tham khảo; diễn đàn cho các nhà phát triển ứng dụng của công ty Microsoft. GVHD: LƯU THANH TRÀ HVTH: LÊ TRƯỜNG ANH TIẾN LUẬN VĂN TỐT NGHIỆP 14 Chương 2: Lý thuyết tổng quan và tình hình nghiên cứu Trong lĩnh vực automated software testing có hai mảng lớn là kiểm định tự động các ứng dụng trên nền Windows và trên nền Web. Chương 2 mục 2.1 trình bày chi tiết công nghệ User Interface Automation (UIA) của Microsoft trên nền Windows mà đề tài nghiên cứu. Tất cả các từ thuật ngữ viết tắt trong mục này được công ty Microsoft định nghĩa và sử dụng trong các tài liệu kỹ thuật của họ.2 trình bày hệ thống automation mã nguồn trên nền Web là Selenium cũng như một số ví dụ ứng dụng hệ thống này trong thực tế.3 so sánh các đặc điểm, tính năng, ưu khuyết điểm giữa hai hệ thống automated testing rất nổi tiếng hiện nay, HP Quick Test Pro là hệ thống được thương mại hóa và Selenium là một hệ thống mã nguồn mở.
Đối với một hệ thống automated testing, sau khi ghi nhận lại các thành phần giao diện của ứng dụng và các tương tác trên các thành phần này thành các dòng lệnh lưu vào một kịch bản dạng text đơn giản (file script), hệ thống cần phải có một trình biên dịch để dịch ngược lại các lệnh và thực thi các lệnh theo yêu cầu.1 chương 2 giới thiệu thế nào là một trình biên dịch cơ bản, mục 2.2 trình bày cách ứng dụng trình biên dịch vào hệ thống automated testing mà đề tài đang xây dựng.1 Giới thiệu công nghệ Automation trên Windows Công nghệ User Interface Automation (UIA) kế thừa MS Active Accessibility (MSAA) của Microsoft, cung cấp các truy cập có thể lập trình đến tất cả các thành phần giao diện người dùng (User Interface element – UI element) trên desktop, nhằm mục đích hỗ trợ người sử dụng (assistive) và tự động hóa kiểm tra (test automation). Hỗ trợ các ứng dụng được viết trên nền WPF, WinForm, ASP.NET, Win32, trong đó WPF mặc định hỗ trợ UIA.