Vai trò của kiểm thử tự động trong quy trình kiểm thử phần mềm
Vai trị kiểm thử tự động quy trình kiểm thử phần mềm Nguyễn Thị Huệ Trường Đại học Công nghệ Luận văn Thạc sĩ ngành: Công nghệ phần mềm; Mã số: 60 48 10 Người hướng dẫn: TS Đặng Văn Hưng Năm bảo vệ: 2012 Abstract: Nghiên cứu tự động hóa kiểm thử phần mềm gồm khái niệm, lợi ích cách thức thực tự động hóa, số cơng cụ kiểm thử phần mềm tập trung vào việc tìm hiểu công cụ kiểm thử TestComplete - công cụ sử dụng phổ biến Trình bày phương pháp sử dụng công cụ kiểm thử TestComplete kiểm chứng thiết kế phần mềm Keywords: Công nghệ thông tin; Công nghệ phần mềm; Thiết kế phần mềm; Kiểm thử phần mềm Content Chương – GIỚI THIỆU 1.1 Đặt vấn đề 1.2 Nô ̣i dung nghiên cứu Luận văn tập trung nghiên cứu tự động hóa kiểm thử phần mềm gồm khái niệm, lợi ích cách thức thực tự động hóa, số công cụ kiểm thử phần mềm tập trung vào việc tìm hiểu cơng cụ kiểm thử TestComplete – công cụ sử dụng phổ biến Ngồi ra, luận văn có trình bày phương pháp sử dụng công cụ kiểm thử TestComplete kiểm chứng thiết kế phần mềm 1.3 Cấ u trúc luâ ̣n văn Phần lại luận văn có cấu trúc sau: Chương 2: Quy trình kiểm thử phần mềm Chương trình bày mơ hình phát triển phần mềm quy trình kiểm thử mơ hình phát triển phần mềm Chương 3: Các kỹ thuật kiểm thử phần mềm Chương trình bày sơ qua hai kỹ thuật kiểm thử: Hộp đen (Black box), Hộp trắng (White box) việc lựa chọn kiểu kiểm thử cho hệ thống phần mềm Chương 4: Tự động hóa kiểm thử phần mềm Chương trình bày khái niệm, mơ hình chung tự động hóa kiểm thử, lợi ích cách thức thực tự động hóa kiểm thử phần mềm Giới thiệu số công cụ kiểm thử tự động sâu vào việc tìm hiểu cơng cụ kiểm thử TestComplete Trình bày phương pháp sử dụng cơng cụ kiểm thử kiểm chứng thiết kế Chương – QUY TRÌNH KIỂM THỬ PHẦN MỀM 2.1 Quy trình phát triển phần mềm: Quy trình phát triể n phầ n mề m hay cò n go ̣i là vòng đời phát triể n phầ n mề m là mô ̣t cấ u trúc dùng để phát triển sản phẩm phần mềm Các thuật ngữ tương tự gồm vịng đời phần mềm quy trình phần mềm Nó coi tập vịng đờ i phát triể n ̣ thớ ng Có nhiều mơ hình quy trình phát triển phần mềm Mỗi mô hiǹ h mô tả cách tiế p câ ̣n với mô ̣t loa ̣t các nhiê ̣m vu ̣ hay hoa ̣t đô ̣ng diễn suố t quy trình phầ n mề m 2.2 Quy trình kiểm thử phần mềm Quy trình kiểm thử gồm hoạt động sau: − Kế hoạch kiểm thử (test planning) − Thiết kế kiểm thử (test design) − Triển khai kiểm thử (test implementation) − Thực thi kiểm thử (test execution) − Đánh giá kiểm thử (test evaluation) Quy trình kiểm thử mơ tả hình vẽ đây: Hình 2.1: Quy trình kiểm thử phần mềm 2.3 Giai đoạn kiể m thử phần mềm vòng đời phát triể n phầ n mề m 2.4 Các kỹ thuật kiểm thử phần mềm 2.4.1 Kiểm thử hộp trắng 2.4.2 Kiể m thử hô ̣p đen 2.4.3 Lư ̣a cho ̣n kiể u kiể m thử cho ̣ thố ng phầ n mềm Chương –TỰ ĐỘNG HÓA KIỂM THỬ PHẦN MỀM 3.1 Định nghĩa: Tự động hóa kiểm thử phần mềm thực kiểm thử phần mềm chương trình đặc biệt với khơng có tương tác người.Việc thực tự động phải đảm bảo khơng có hoạt động kiểm thử bị bỏ qua Nó giúp kỹ sư kiểm thử (tester) lặp lặp lại bước nhàm chán 3.2 Mơ hình chung tự động hóa kiểm thử phần mềm Tự động hóa kiểm thử phần mềm bao gồm chuỗi trình, hoạt động, thao tác quy tụ với để thực phần mềm cần kiểm thử ghi lại kết kiểm thử Phần lớn kiến trúc kiểm thử thường những hệ thống mở yêu cầu kiểm thử tổ chức xác định Hình 3.1: Mơ hình chung tự động hóa kiểm thử Trong đó, cơng cụ dùng để tự động hóa quy trình kiểm thử mơ hình kiểm thử thực chức năng: Test Manager: quản lý việc thực kiểm thử chương trình, theo dõi dữ liệu kiểm thử, kết mong đợi chức năng, tiện ích chương trình kiểm thử Test data generator: sinh dữ liệu kiểm thử cho chương trình Oracle: tạo phán đốn kết mong đợi Nó phiên chương trình trước hệ thống prototype Chú ý, sở dư liệu Oracle File comparator: Đối chiếu kết kiểm thử chương trình với kết kiểm thử trước ghi lại khác vào tài liệu Report generator: cung cấp mẫu báo cáo tiện ích cho kết kiểm thử Dynamic analyzer: thêm mã cho chương trình để tính lượng thời gian lệnh thực Simulator: mô môi trường kiểm thử cho sản phẩm phần mềm 3.3 Công cụ kiểm thử tự động Công cu ̣ kiể m thử phầ n mề m (Test Tool) liñ h vực phát triể n phầ n mề m là công cu ̣ giúp thực viê ̣c phát triể n phầ n mề m mô ̣t cách tự đô ̣ng Tuy nhiên không phải mo ̣i viê ̣c kiể m thử đề u có thể tự đô ̣ng hóa , câu hỏi đă ̣t là điề u kiê ̣n hay tình huố ng nào dùng công cụ kiểm thử thích hợp ? 3.3.1 Lý sử dụng công cụ kiểm thử Viê ̣c dùng công cụ kiểm thử đươ ̣c xem xét mô ̣t số tiǹ h huố ng sau: Không đủ tài nguyên: Kiể m tra hồ i quy: Kiể m tra khả vâ ̣n hành phầ n mề m môi trường đă ̣c biêṭ 3.3.2 Các bước thực kiểm thử tự động Giố ng phá t triể n phầ n mề m , để thành công kiểm thử tự động nên thực hiê ̣n các bước bản sau : − Thu thập đặc tả yêu cầu test case; lựa chọn những phần cần thực kiểm thử tự động − Phân tích thiết kế mơ hình phát triển kiểm thử tự động − Phát triển lệnh đặc tả cho kiểm thử tự động − Kiểm tra theo dõi lỗi đặc tả kiểm thử tự động 3.3.3 Công cụ hỗ trợ quy trình kiểm thử phần mềm Cơng cụ kiểm thử tự động phần mềm đa dạng sử dụng nhiều giai đoạn kiểm thử khác Hình vẽ 3.2 loại cơng cụ khác việc sử dụng chúng vòng đời phát triển phần mềm Hình 3.2: Cơng cụ hỗ trợ quy trình kiểm thử phần mềm 3.4 Chuyên mơn hóa người 3.5 Chi phí kiểm thử tự động phần mềm So với kiểm thử thủ công chi phí kiểm thử tự động cao hơn, đặc biệt thời điểm bắt đầu quy trình tự động hóa Từ cơng cụ kiểm thử trang thiết bị cần thiết đắt đỏ Tuy nhiên, vốn đầu tư hoàn lại sau khoảng thời gian dùng kiểm thử tự động Khơng có so sánh rõ ràng giữa chi phí thực kiểm thử tự động kiểm thử thủ công, ngụ ý chi phí cho lần ca kiểm thử thực Tổng chi phí kiểm thử xác định tổng chi phí kiểm thử thủ công tự động: bao gồm phí phát sinh khác 3.6 Một số hạn chế tự động hóa kiểm thử Khơng thể thay kiểm thử thủ cơng Kiểm thử thủ cơng có khả phát lỗi tốt kiểm thử tự động Tự động hóa kiểm thử khơng cải thiện nhiều tính hiệu Tự động hóa kiểm thử làm hạn chế phát triển phần mềm Các cơng cụ khơng có trí tưởng tượng Chương – TÌM HIỂU CƠNG CỤ TESTCOMPLETE 4.1 Loại phần mềm hỗ trợ 4.2 Hỗ trơ ̣ các loa ̣i kiể m thử 4.3 Các thành phần quan trọng TestComplete 4.4 Ngôn ngữ sử du ̣ng viế t Script 4.5 Sử du ̣ng TestComplete Chọn loại kiểm thử Dự án thành phần dự án kiểm thử Giao diện người dùng (TestComplete User Interface) Mô hình đối tượng kiểm thử (TestComplete Test Object Model) Đặt điểm kiểm tra và lưu giữ liệu kiểm tra (Checkpoints and Stores) 4.6 Các bước tạo dự án kiểm thử với TestComplete Bao gồm bước sau: Tạo dự án kiểm thử Xác định ứng dụng cần kiểm thử Hoàn thành việc tạo dự án kiểm thử Tạo ca kiểm thử Phân tích ca kiểm thử ghi Chạy ca kiểm thử ghi Phân tích kết kiểm thử 4.7 Ví dụ Ứng dụng cần kiểm thử : Ứng dụng Patients Management hiể n thi ̣mô ̣t danh sách các bê ̣nh nhân và có các tí nh đă ̣c biê ̣t là thêm , sửa, xóa xem thơng tin chi tiết bê ̣nh nhân Hình 4.7: Giao diện Patients Management 4.8 Đánh giá công cụ kiểm thử TestComplete 4.8.1 So với mơ hình chung kiểm thử tự động TestComplete cung cấp tính đặc biệt để tự động hóa thao tác kiểm thử, tạo ca kiểm thử, xác định dữ liệu kiểm thử, thực kiểm thử ghi lại kết Nó thuộc công cụ thực thi đối chiếu kiểm thử (Test execution and comparison) cho phép kiểm thử thực thi tự động kết kiểm thử đối chiếu với kết mong đợi Công cụ sử dụng mức: kiểm thử đơn vị, tích hợp, hệ thống chấp nhận thường dùng kiểm thử hồi quy Là công cụ Capture and Replay với yêu cầu kiểm thử chương trình hoạt động Cơng cụ sử dụng giai đoạn Program being tested mơ hình kiến trúc chung tự động hóa kiểm thử Hình 4.33: TestComplete mơ hình chung tự động hóa kiểm thử 4.8.2 So với cơng cụ kiểm thử khác 4.9.1 Mô ̣t số khái niêm ̣ Kiể m chứng thiế t kế (Design checking) Mô hin ̀ h trừu tươ ̣ng 4.9.2 Kiể m chứng thiế t kế với TestComplete Cơ sở việc sử dụng kỹ thuật Việc thực kiểm chứng thiết kế trình tạo sản phẩm phần mềm đặc biệt những phần mềm phức tạp giúp làm tăng hiệu kinh tế nhờ việc phát lỗi sớm – từ bước thiết kế phần mềm rút ngắn thời gian chi phí hồn thành sản phẩm, đảm bảo tính tin cậy, an tồn hệ thống làm Tuy nhiên, thiết kế thường không dạng chương trình cài đăt chạy Chính vậy, để kiểm chứng thiết kế công cụ TestComplete ta thực việc chuyển thiết kế thành mơ hình /chương trình chạy được, sau sử dụng cơng cụ kiểm thử để kiểm thử vét cạn chương trình Các bước thực hiện: - Bước 1: Chọn nhánh thiết kế cần kiểm chứng - Bước 2: Chuyển thiết kế sang mô hình trừu tượng (chẳng hạn dạng máy hữu hạn trạng thái) - Bước 3: Tạo giả chương trình mô hoạt động máy hữu hạn trạng thái bước gồm: o Tập hữu hạn trạng thái o Các hàm chuyển trạng thái - Bước 4: Vét cạn kịch kiểm thử giả chương trình ngôn ngữ script TestComplete - Bước 5: Sử dụng TestComplete để kiểm thử tìm lỗi thiết kế 4.9.3 Ví dụ minh họa: Mơ tả tốn Mong muốn phát triển hệ thống theo dõi điện tim đồ (ECG) thông qua thiết bị điện thoại thông minh để yêu cầu ghi lại những thông tin liên quan nhịp tim biết nguyên nhân ta thấy có dấu hiệu loạn nhịp tim xảy Các thành phần hệ thống: - Một thiết bị không dây, mô đun để lưu trữ thu thập thông tin - Một thuật toán kiểm tra nhịp tim theo thời gian thực hiệu - Một hệ thống tương tác có qui tắc (Sự kiện – Điều kiện – Giải pháp) - Một hệ thống giao diện người dùng đơn giản giúp ta yêu cầu bổ sung thêm thơng tin từ người dùng Phân tích tốn Các thành phần hệ thống - Hệ thống sử dụng Bluetooth kênh không dây để nhận tín hiệu ECG chuyển thành tín hiệu nhịp tim đập ghi nhận đồng thời ghi lại thông tin liên quan để giúp cho việc phân tích sau tốt - Hệ thống theo dõi biến thiên nhịp tim từ tín hiệu ECG dựa vào để tìm những thay đổi tần số nhịp tim liên quan đến hoạt động hàng ngày người dùng Những tần số khác phụ thuộc vào hoạt động khác ghi lại những nhãn (label, subject)như: Làm việc, chơi thể thao, đọc báo, xem phim, … 10 Hình 4.34: Nền tảng kiến trúc hệ thống Hình 4.36 những thành phần hệ thống thực tế Ta chia hệ thống thành phần là: Truyền liệu, thu nhận tín hiệu xử lý tín hiệu (dựa thơng tin ngữ cảnh sử dụng quy tắc E-C-A) Trong phạm vi nghiên cứu không sử dụng thiết bị đo ECG thực, thay vào thiết bị mơ để đọc dữ liệu ECG từ tệp tin gửi đến thiết bị cầm tay (PDA) thông qua thiết bị thu phát Bluetooth máy tính cá nhân (PC) Tổng quan hệ thống hình 4.37 Hình 4.35: Tổng quan hệ thống Khi những tín hiệu ECG gửi đến PDA, chúng phân tích thuật toán kiểm tra nhịp ECG Sau nhịp kiểm tra, coi tín hiệu đầu vào 11 cho mức (tương tác kiện nhịp sinh thuật toán kiểm tra nhịp), làm chuỗi phân tích kiện, qua đánh giá điều kiện yêu cầu thông tin ngữ cảnh tương ứng với hoạt động người dùng (ADL: Active Daily Living), sau có đầy đủ thông tin hệ thống lưu trữ ngữ cảnh thực thi những hành động tương ứng với tình trạng nhịp tim bệnh nhân Thiết kế hệ thống Với mục đích ví dụ phục vụ cho việc kiểm thử tự động, xét đến giao thức lý thuyết hệ thống SAECA viết tắt Tín hiệu (Signal) – Thuật tốn (Algorithm) – ECA Khi tín hiệu thu nhận được, thuật tốn tương ứng xử lý dữ liệu đến truyền kết tính tốn vào cho ECA để đưa định nhận những hành động tương ứng với tình − Pha 1: Gửi thơng tin Trước dữ liệu ECG truyền đi, chia chuyển thành dạng “số nguyên” Để tăng cường độ xác dữ liệu, hệ thống kết hợp ID bệnh nhân, tần suất lấy mẫu số mẫu với dữ liệu ECG sau: Hình 4.37: Phân tích dữ liệu ECG chèn thêm thông tin mẫu − Pha 2: Nhận xử lý dữ liệu: Khi nhận dữ liệu ECG đến hệ thống tạo mẫu rỗng để lưu trữ thông tin đến Hệ thống biết trước thông tin người dùng (do người dùng nhập vào) bao gồm: ID bệnh nhân Nếu kết phân tích trùng với thông tin 12 bệnh nhân, hệ thống phân tích để lấy mã số mẫu dữ liệu ECG Dữ liệu ECG lưu trữ tệp tin phân tích thuật tốn Hình 4.38: Sơ đồ xử lý dữ liệu ECG Chú ý: Sai lầm mơ hình nằm chỗ: khơng tính đến tần suất lấy mẫu mà sử dụng ID bệnh nhân, xảy trường hợp tràn nhớ hệ thống! Bởi có thể, trường hợp lỗi, phận thu nhận gửi lặp gửi liên tục mẫu! Đây lỗi mơ hình cần tìm thơng qua vét cạn thực stress test TestComplete 9! Hình 4.39: Mơ hình trạng thái hệ thống 13 Hình 4.40: Mơ hình trạng thái module lưu trữ dữ liệu Xây dựng giả chương trình Giả chương trình mơ ứng dụng web viết ASP NET MVC 4.0 ngôn ngữ C# chạy máy chủ ứng dụng web IIS 8.0 Hình 4.41: Ứng dụng mơ máy chủ IIS Chúng ta tạo thêm chương trình client để mơ việc thu nhận gửi dữ liệu đến server 14 Hình 4.45: Giao diện chương trình khách Kiểm thử vét cạn TestComplete Dựa thông tin đầu vào (PatientID, SampleRate, ECGData) vả trạng thái ta xây dựng vét cạn tập ca kiểm thử sau (được chia thành nhóm chính): − Trường hợp 1: Mã bệnh nhân đúng, tần suất chuẩn, dữ liệu thay đổi (từ thấp (40) đến cao (200)) gồm ca kiểm thử − Trường hợp 2: Mã bệnh nhân khơng xác, tần suất chuẩn, dữ liệu thay đổi (từ thấp (40) đến cao (200)) gồm ca kiểm thử − Trường hợp 3: Mã bệnh nhân đúng, tần suất cực tiểu (0), dữ liệu thay đổi (từ thấp (40) đến cao (200)) gồm ca kiểm thử Với ca kiểm thử, ta sử dụng TestComplete để nhập trước kết mong đợi (expected result) sau tiến hành chạy tự động Phân tích kết Có 01 ca kiểm thử trường hợp thất bại có tập trạng thái sau: 15 - Mã bệnh nhân - Tần suất cực tiểu - Tập liệu gồm mẫu trạng thái (thấp nhất, trung bình, cao nhất) Hình 4.46: Kết mong đợi xây dựng trước Hình 4.47: Kết chạy thực tế TestComplete 16 Hình 4.48: Kết chạy kiểm thử TestComplete Có tập trạng thái, tiến hành lần ngược (debug) giả chương trình phát lỗi hệ thống thời điểm kiểm tra lưu trữ dữ liệu Chương – KẾT LUẬN Kiểm thử phần mềm, nội dung nghiên cứu triển khai từ sớm mẻ giới, vấn đề cấp thiết cho việc nâng cao chất lượng phần mềm Trong luận văn này, tác giả trình bày tổng quan quy trình kiểm thử phần mềm, sâu vào nghiên cứu tự động hóa kiểm thử phần mềm nghiên cứu công cụ kiểm thử TestComplete – công cụ kiểm thử phổ biến Luận văn trình bày cách tiếp cận áp dụng công cụ kiểm thử vào việc iểm thử thiết kế mà cụ thể công cụ kiểm thử TestComplete Dùng kỹ thuật trừu tượng hóa, biến đổi thiết kế thành mơ hình tiến hành để kiểm thử công cụ kiểm thử nhằm phát lỗi giai đoạn sớm Hướng phát triển luận văn nghiên cứu ngôn ngữ mơ hình phù hợp, từ kết hợp với nghiên cứu cơng cụ sinh giả chương trình tự động thực kiểm thử vét cạn công cụ TestComplete cho giả chương trình References Tiếng Việt 17 Nguyễn Xuân Huy (1994), Công nghệ phần mềm, Đại học Tổng hợp Tp Hồ Chí Minh Tiếng Anh Kanglin Li and Menqi Wu (2004), Effective Software Test Automation: Developing an Automated Software Testing Tool, Sybex, San Francisco Mark Fewster and Dorothy Graham (1994), Software Test Automation Effective use of test execution tools, Copyright @ by ACM Press, Great Britain Myers and Glenford (1979), The Art of Software Testing, Willey, New York Pettichord and Bret (1996), Success with test automation, in Proceedings of the Ninth International Quality Week, Sofware Research, San Francisco, California, Available at http://www.io.com/~waznio/succpap.htm Ron Patton (2005), Software Testing, Sams Publishing, the United States of America http://smartbear.com/support 18 ... chung tự động hóa kiểm thử phần mềm Tự động hóa kiểm thử phần mềm bao gồm chuỗi trình, hoạt động, thao tác quy tụ với để thực phần mềm cần kiểm thử ghi lại kết kiểm thử Phần lớn kiến trúc kiểm thử. .. trợ quy trình kiểm thử phần mềm 3.4 Chun mơn hóa người 3.5 Chi phí kiểm thử tự động phần mềm So với kiểm thử thủ cơng chi phí kiểm thử tự động cao hơn, đặc biệt thời điểm bắt đầu quy trình tự động. .. lượng phần mềm Trong luận văn này, tác giả trình bày tổng quan quy trình kiểm thử phần mềm, sâu vào nghiên cứu tự động hóa kiểm thử phần mềm nghiên cứu cơng cụ kiểm thử TestComplete – công cụ kiểm