Tổng quan về kiểm thử tự động
Khái niệm về kiểm thử tự động
Kiểm thử tự động là một khái niệm liên quan đến các hoạt động và kỹ thuật tự động hóa trong tiến trình kiểm thử phần mềm Kiểm thử tự động sử dụng các công cụ và giải pháp để nhằm đạt được các mục tiêu về tốc độ, chất lượng, hiệu quả và chi phí trong tiến trình kiểm thử [10].
Lợi ích
Dưới đây là một số lợi ích của kiểm thử tự động [4]:
Kiểm thử hồi qui cho một phiên bản mới của chương trình Điều này là hiển nhiên, đặc biệt là trong điều kiện các chương trình thường xuyên bị thay đổi Giả thiết rằng các test cases đã tồn tại và đã được chạy tự động ở một phiên bản trước đó, thì ở các phiên bản tiếp theo, chỉ cần lựa chọn các test cases phù hợp và một chút chi phí cho việc hướng dẫn sử dụng công cụ là có thể thực hiện được việc kiểm thử
Chạy được nhiều ca kiểm thử và thường xuyên hơn Với việc kiểm thử tự động, sẽ có nhiều ca kiểm thử được thực hiện trong khoảng thời gian ít hơn, và do đó các ca kiểm thử cũng được thực hiện thường xuyên hơn Điều này sẽ làm tăng cường tính tin cậy của hệ thống [8]
Cho phép hoàn thành kiểm thử đối với các test cases mà rất khó hoặc không thể khi thực hiện bằng tay Ví dụ: việc cố gắng hoàn thành đúng như thực tế một ca kiểm thử của hệ thống với 200 người dùng cùng trực tuyến (online) có thể không thực hiện được nếu thực hiện kiểm thử bằng tay Nhưng 200 người dùng này có thể được giả lập bằng các công cụ kiểm thử tự động
Khi kiểm thử bằng tay, kết quả mong muốn thường là những nội dung rõ ràng mà người kiểm thử có thể quan sát Tuy nhiên, có những thuộc tính rất khó để có thể xác nhận theo cách bình thường Ví dụ đối tượng GUI có thể gây ra một sự kiện nào đó, mà ảnh hưởng của nó không được output ngay lập tức Nhưng nếu sử dụng công cụ kiểm thử thì ta có thể kiểm tra được sự kiện như vậy [11]
Sử dụng tài nguyên (resources) tốt hơn Tự động hóa giúp nâng cao độ chính sác và giải tỏa tinh thần cho người thực hiện kiểm thử Giúp kiểm thử viên có có nhiều thời gian hơn cho việc lập kế hoạch, thiết kế test case…
Mặt khác, với kiểm thử tự động thì máy kiểm thử có thể được sử dụng để chạy kiểm thử vào những lúc rảnh rỗi Đảm bảo tính nhất quán của kiểm thử Kiểm thử tự động sẽ được thực hiện lặp đi lặp lại một cách chính xác ở tất cả các lần kiểm thử (ít nhất là dữ liệu đầu vào sẽ không bị thay đổi, kết quả đầu ra thì có thể khác nhau do thời gian thực hiện) Điều này tạo ra sự nhất quán giữa các lần kiểm thử, điều rất khó đạt được nếu thực hiện bằng tay
Các test cases giống nhau có thể được thực hiện trên các phần cứng, hệ điều hành hoặc cơ sở dữ liệu khác nhau Điều này tạo nên sự nhất quán về chất lượng trên các nền tảng khác nhau của sản phẩm Điều rất khó đạt được nếu thực hiện kiểm thử bằng tay (kiểm thử thủ công)
Việc áp dụng chế độ kiểm thử tốt có thể đảm bảo các tiêu chuẩn phù hợp cho kiểm thử và phát triển Ví dụ, công cụ kiểm thử có thể được sử dụng để kiểm tra cùng một loại tính năng đã được thực hiện theo cùng một cách ở tất cả các ứng dụng hoặc chương trình khác nhau
Tái sử dụng các ca kiểm thử Có thể thực hiện kiểm thử nhiều lần mà không mất chi phí để quyết định cái gì sẽ được kiểm thử, thiết kế ca kiểm thử, xây dựng các ca kiểm thử hay đảm bảo tính chính xác của kiểm thử
Rút ngắn thời gian phát triển sản phẩm Khi mà các test cases được kiểm thử tự động, nó có thể được thực hiện lặp đi lặp lại một cách nhanh chóng, vì vậy sẽ rút ngắn được thời gian kiểm thử Và qua đó cũng có thể rút ngắn được thời gian phát triển sản phẩm và đưa sản phẩm ra thị trường (Điều này còn tùy thuộc vào việc khắc phục lỗi, tính khả dụng của chương trình) [9]
Tăng tính tin cậy Khi một số lượng lớn các ca kiểm thử tự động được thực hiện thành công, nó sẽ tăng cường mức độ đảm bảo rằng hệ thống sẽ được phát hành mà không có vấn đề gì
Tóm lại, với kiểm thử tự động, chúng ta có thể thực hiện kiểm thử với chi phí ít hơn, và chất lượng, năng suất cao hơn.
Sự khác nhau giữa kiểm thử và kiểm thử tự động
Kiểm thử là một kỹ năng Đối với bất kỳ một hệ thống nào, đều có một số trường hợp mà nếu thực hiện kiểm thử sẽ phát hiện được hầu hết các lỗi của phần mềm Vì vậy, việc lựa chọn test case nào để chạy là một vấn đề quan trọng Thực tiễn cũng như kinh nghiệm đã chỉ ra rằng việc lựa chọn ngẫu nhiên các test cases là cách tiếp cận không hiệu quả Nên tiếp cận một cách thận trọng, có hệ thống để có thể tạo ra được các test cases tốt
Vậy, thế nào là một test case tốt Có bốn thuộc tính miêu tả chất lượng của một test case:
- Khả năng phát hiện lỗi
- Tính chuẩn (exemplary): một test case chuẩn nên thực hiện kiểm thử nhiều hơn một tiêu chí, như vậy sẽ làm giảm thiểu tổng số test cases cần thiết
- Chi phí thực hiện: chi phí bỏ ra để thực hiện test case, điều tra, phân tích nguyên nhân lỗi
- Chi phí cập nhật test case: chi phí bỏ ra cho việc cập nhật nội dung test case mỗi khi phần mềm thay đổi
Bốn thuộc tính này cần phải cân bằng với nhau Vì nếu một test case thực hiện kiểm thử quá nhiều tiêu chí, cũng đồng nghĩa với việc sẽ mất nhiều chi phí cho việc thực hiện, điều tra, phân tích hay cập nhật test case mỗi khi phần mềm thay đổi [1]
Vì vậy, các kỹ năng kiểm thử không chỉ đơn thuần là làm sao để thiết kế các test cases có khả năng phát hiện được lỗi cao nhất mà còn là làm sao để thiết kế các test cases với chi phí thấp nhất [3]
Kiểm thử tự động cũng là một kỹ năng nhưng nó khác với kỹ năng kiểm thử
Việc kiểm thử tự động thì tốn kém hơn kiểm thử bằng tay rất nhiều nếu chỉ thực hiện một lần Để đạt được lợi ích, kiểm thử tự động cần phải được lựa chọn và thực thi một cách cẩn thận
Cho dù kiểm thử là tự động hoặc bằng tay thì đều ảnh hưởng đến chất lượng của quá trình kiểm thử Khi đề cập đến kiểm thử tự động, vấn đề quan tâm không phải là thực hiện nó như thế nào mà là quá trình tự động hóa kiểm thử sẽ ảnh hưởng như thế nào tới chi phí và khả năng nâng cấp về sau Mỗi lần thực hiện tự động hóa sẽ làm phát sinh rất nhiều chi phí, chi phí cho việc chạy nó chỉ là một phần nhỏ đối với chi phí để thực hiện bằng tay Tuy nhiên, kiểm thử tự động thường mất nhiều chi phí cho việc tạo và bảo trì Cách tiếp cận tốt để làm giảm chi phí cho việc tự động hóa kiểm thử là thực thi nó trong một thời gian dài
Hình 2.1 thể hiện 4 thuộc tính chất lượng của một test case trong sơ đồ Keviat
Trường hợp thực hiện kiểm thử bằng tay được thể hiện bằng đường đậm Khi được tiến hành lần đầu, kiểm thử tự động sẽ kém hiệu quả (mất nhiều chi phí để tự động), nhưng sau một số lần thực hiện thì nó sẽ hiệu quả hơn việc thực hiện kiểm thử bằng tay Để đạt được tính hiệu quả và đưa ra bộ test case (test suite) phù hợp, cần phải bắt đầu với các thành phần thô của một bộ test case tốt, sử dụng các kỹ năng kiểm thử để tạo nên bộ test case thực hiện những thứ quan trọng nhất Sau đó phải ứng dụng các kỹ thuật tự động để tự động hóa theo cách mà chúng có thể được tạo và bảo trì với chi phí hợp lý
Hình 2.1 Bốn thuộc tính của test case
Người phát triển và bảo trì công cụ kiểm thử tự động gọi là “Test automator”
Một “Test automator” có thể/không phải là Kiểm thử viên, có thể/không phải làm một thành viên của nhóm kiểm thử Ví dụ, một nhóm kiểm thử bao gồm các Kiểm thử viên có hiểu biết về nghiệp vụ và không có kỹ năng về việc phát triển Một Người phát triển (Developer) có thể hỗ trợ nhóm kiểm thử xây dựng và bảo trì các công cụ kiểm thử tự động theo thiết kế kiểm thử bởi nhóm kiểm thử Người phát triển này là một “Test automator”
Chất lượng kiểm thử có thể tốt hoặc kém, điều này phụ thuộc vào kỹ năng kiểm thử của người kiểm thử
Kiểm thử bằng tay Lần đầu kiểm thử tự động Kiểm thử tự động (sau nhiều lần)
Chí phí cập nhật (evolvable)
Chất lượng tự động cũng có thể tốt hoặc kém Nó phụ thuộc vào kỹ năng của test automator, làm sao để có thể tạo và bảo trì tự động kiểm thử một cách dễ dàng, làm sao để việc tự động kiểm thử đem lại lợi ích, hiệu quả [2, 7].
Các bước thực hiện kiểm thử tự động
2.4.1 Đánh giá mức độ tự động hóa
Trước khi tiến hành tự động hóa, chúng ta cần phải kiểm tra tiến trình kiểm thử phần mềm hiện tại và các hoạt động kỹ thuật để xem phần nào (bộ phận nào) có thể tiến hành kiểm thử tự động Dưới đây là lược đồ được đề xuất, bao gồm 5 mức cơ bản để làm cơ sở đánh giá [5]:
- Mức 0: Không có công cụ kiểm thử Một tiến trình kiểm thử ở mức độ này hoàn toàn thực hiện bằng tay mà không có bất kỳ công cụ kiểm thử nào
- Mức 1: Khởi tạo Một tiến trình kiểm thử ở mức độ này cung cấp các kỹ thuật, giải pháp và các công cụ cho phép tạo, cập nhật và quản lý tất cả các thông tin của kiểm thử phần mềm, bao gồm yêu cầu, test cases, dữ liệu, kết quả, kịch bản và báo cáo về các vấn đề Không có công cụ và giải pháp nào hỗ trợ kỹ thuật trong việc thiết kế kiểm thử, sinh test case và thực hiện kiểm thử
- Mức 2: Lặp lại (repeatable) Một tiến trình kiểm thử ở mức này không chỉ cung cấp kỹ thuật và công cụ để quản lý các thông tin đa dạng của kiểm thử phần mềm, mà nó còn cung cấp các giải pháp cho phép thực hiện kiểm thử phần mềm một cách hệ thống Giải pháp này cho phép sử dụng các kỹ thuật để thực hiện kiểm thử và kiểm tra kết quả kiểm thử Tuy nhiên, không có các giải pháp và công cụ cho phép hỗ trợ thiết kế kiểm thử và sinh test case Không có các công cụ để đo khả năng kiểm thử phần mềm và hiệu quả của tiến trình kiểm thử phần mềm theo các tiêu chuẩn được xác định từ trước
- Mức 3: Tự động Một tiến trình kiểm thử ở mức độ này không chỉ sử dụng các công cụ quản lý và thực thi kiểm thử, mà nó còn bao gồm cả các công cụ cho phép sinh test case và kịch bản kiểm thử Tuy nhiên, tiến trình kiểm thử không có giải pháp cho việc đo khả năng và hiệu quả của kiểm thử phần mềm
- Mức 4: Tối ưu Đây là mức độ tối ưu của tự động hóa kiểm thử phần mềm Ưu điểm chính của tiến trình kiểm thử ở mức độ này là giải pháp hệ thống (systematic solution) cho 3 loại độ đo kiểm thử, bao gồm: khả năng kiểm thử, phân tích mức độ bao phủ của test case (test coverage), và đánh giá hiệu quả kiểm thử Lợi ích chính của mức độ này là giúp các kỹ thuật viên hiểu như thế nào là một tiến trình kiểm thử tốt và đâu là vấn đề chất lượng của phần mềm
Sinh kiểm thử Điều khiển quá trình kiểm thử
Thực hiện bằng tay Đo và đánh giá
Mức 0: Không sử dụng công cụ Mức 1: Khởi tạo
Mức 2: Lặp lại Mức 3: Tự động
Hình 2.2 Lược đồ đánh giá mức độ tự động hóa
Lược đồ này có thể được sử dụng để đánh giá trạng thái của tự động kiểm thử cho một tiến trình kiểm thử đối với một dòng sản phẩm hoặc trong một tổ chức nào đó
2.4.2 Tiến trình tự động hóa Để thực hiện tự động hóa kiểm thử, cần phải có một tiến trình hiệu quả để thực hiện các hoạt động tự động hóa kiểm thử và phát triển giải pháp tự động Một tiến trình hiệu quả phải bao gồm các bước sau [6]:
- Bước 1: Lập kế hoạch tự động hóa Đây là bước khởi tạo Mục đích chính của bước này là lập kế hoạch xác định các đối tượng cần phải tự động, mục đích, chiến lược, yêu cầu, lịch trình, kinh phí Trong thực tế, kế hoạch tự động hóa thường được tạo cho một sản phẩm, hoặc một dòng sản phẩm ngay ở giai đoạn đầu của tiến trình phát triển phầm mềm
- Bước 2: Thiết kế kiểm thử tự động Mục tiêu chính của bước này là tạo ra một giải pháp tự động hóa chi tiết, phù hợp với yêu cầu và mục tiêu trong kế hoạch đã vạch ra Bao gồm 2 nhiệm vụ chính Thứ nhất là xác định và lựa chọn các công cụ có sẵn (các sản phẩm thương mại hoặc tự làm) để hỗ trợ tiến trình tự động hóa Để thực hiện nhiệm vụ này, người tự động hóa cần phải có thông tin hướng dẫn và đánh giá về công cụ được lựa chọn Thứ hai là thiết kế giải pháp tự động hóa
- Bước 3: Phát triển công cụ kiểm thử tự động Ở bước này, sẽ thực hiện phát triển công cụ dựa theo giải pháp tự động hóa đã đưa ra Điểm mấu chốt ở bước này là phải chắc chắn rằng công cụ đã được phát triển là đáng tin cậy và dễ sử dụng, có tài liệu hướng dẫn tốt Rất nhiều dự án tự động kiểm thử đã thất bại bởi vì chất lượng kém và tài liệu không tốt
- Bước 4: Triển khai công cụ tự động Giống như một sản phẩm thương mại, công cụ tự động và các lợi ích của nó cần phải được giới thiệu và triển khai sử dụng cho một sản phẩm nào đó Ở bước này, việc đào tạo cho người dùng và hỗ trợ họ là thiết yếu
- Bước 5: Rà soát lại (review) và đánh giá Bất cứ khi nào một công cụ mới được triển khai, thì đều phải tiến hành rà soát lại để xác định các vấn đề và hạn chế của công cụ, đánh giá các tính năng mà nó cung cấp Kết quả của việc rà soát này là bài học cho các lần triển khai về sau
Lập kế hoạch tự động hóa
Thiết kế hệ thống tự động
Lựa chọn và đánh giá các công cụ tự động
Giới thiệu và triển khai hệ thống
Rà soát lại và đánh giá
Hình 2.3 Tiến trình tự động hóa
Mô tả bài toán và yêu cầu
Giới thiệu hệ thống thông tin SEC
SEC là một ứng dụng bảo mật thông tin, hoạt động trên nền windows, cho phép thực hiện các chức năng sau:
- Quản lý việc sao chép dữ liệu: copy dữ liệu tới thiết bị ngoại vi: usb, thẻ nhớ, đĩa CD/DVD…
- Chia sẻ dữ liệu qua mạng
- Quản lý quyền truy cập của người dùng
SEC bao gồm hai phần:
- SEC Server: quản lý quyền của người dùng, cho phép tạo người dùng và cấp phát quyền cho người dùng đó
- SEC Client: quản lý thao tác của người dùng dựa theo quyền mà người dùng được cấp ở server Để có thể sử dụng SEC, người dùng cần phải tiến hành các bước như sau:
Bước 1 Cài đặt SEC server
Người quản trị tiến hành cài đặt SEC server, sau đó tạo người dùng User và cấp phát quyền cho User
Bước 2 Tạo bộ cài đặt SEC client
Tại các máy cần phải bảo mật thông tin, cần phải cài đặt SEC client trên các máy đó Để thực hiện cài đặt, người quản trị sẽ tạo bộ cài đặt SEC client từ SEC server Có hai phương pháp để tạo bộ cài đặt SEC client:
- Tạo trực tiếp từ máy SEC server
- Tạo bộ cài đặt SEC client thông qua công cụ tạo bộ cài đặt Khi đó, cần phải cung cấp thông tin về SEC server trong quá trình tạo bộ cài đặt
Bước 3 Cài đặt SEC client
Sau khi tạo bộ cài đặt SEC client, người dùng phải tiến hành cài đặt SEC client tại máy cần phải bảo mật thông tin
Sau khi cài đặt SEC client, thì thông tin dữ liệu trên máy đã cài đặt sẽ được bảo mật Để có thể sử dụng dữ liệu, người dùng cần phải đăng nhập và máy SEC Client bằng tài khoản người dùng User đã đã được cấp phát quyền ở SEC Server
Nếu không đăng nhập, người dùng sẽ không thể hoặc bị hạn chế quyền đối với dữ liệu muốn sử dụng
Trong trường hợp không muốn sử dụng SEC client, người dùng có thể gỡ SEC client khỏi máy Sau khi gỡ, máy sẽ được khôi phục về trạng thái như lúc chưa cài đặt và người dùng có thể sử dụng máy bình thường mà không chịu sự chi phối của SEC.
Định nghĩa các giai đoạn cài đặt
Do nội dung của đề tài là “Xây dựng hệ thống kiểm thử tự động cho các giai đoạn cài đặt phần mềm” nên cần phải hiểu thế nào là “giai đoạn cài đặt phần mềm”?
Trong luận văn này, các giai đoạn cài đặt phần mềm được hiểu là các bước để cài đặt SEC Client đã được đề cập trong mục 3.1, bao gồm các bước sau:
- Tạo bộ cài đặt SEC client (tạo bộ cài đặt)
- Cài đặt SEC client (cài đặt)
- Gỡ cài đặt SEC client (gỡ cài đặt).
Vấn đề của hệ thống SEC
SEC là một sản phẩm bao gồm nhiều phiên bản (version) khác nhau, khi một phiên bản mới ra đời, cần phải thực hiện kiểm thử cho sản phẩm, bao gồm việc kiểm thử cho các giai đoạn cài đặt SEC client
Mỗi phiên bản SEC hỗ trợ nhiều nền tảng Windows khác nhau như: Windows98, WindowsXP/2000/2003/2008, Windows Vista, Window 7… Trên mỗi một môi trường Windows mà sản phẩm hỗ trợ, đều cần phải thực hiện kiểm thử cho các giai đoạn cài đặt SEC client Đối với mỗi phiên bản, trong quá trình hoạt động, sẽ phát sinh lỗi Đội phát triển sẽ phải tập hợp các lỗi được phát triển, sửa lỗi và phát hành bản Patch (bản sửa lỗi cho sản phẩm) để sửa lỗi cho sản phẩm Mỗi một bản Patch sẽ sửa nhiều lỗi khác nhau
Trước khi gửi bản Patch cho khách hàng, sản phẩm cần phải được kiểm thử các chức năng liên quan (degrage function), bao gồm việc kiểm thử cho các giai đoạn cài đặt SEC client
Mặt khác, nếu một lỗi xuất hiện trên một phiên bản, thì nó cũng có thể phát sinh lỗi trên các phiên bản khác Vì vậy cũng cần phải có bản Patch để vá lỗi cho các phiên bản đó Và thực hiện kiểm thử trước khi gửi sản phẩm cho khách hàng
Như vậy, mỗi khi một phiên bản mới ra đời, hay đưa ra các bản sửa lỗi Thì đều cần phải tiến hành kiểm thử cho sản phẩm, bao gồm việc kiểm thử cho các giai đoạn cài đặt SEC client Chi phí cho việc thực hiện kiểm thử là rất lớn
Vì vậy, vấn đề đặt ra là làm sao để có thể tự động hóa quá trình kiểm thử, mà cụ thể là tự động hóa kiểm thử cho các giai đoạn cài đặt, nhằm làm giảm thiểu nhất chi phí cho việc kiểm thử mà vẫn đảm bảo về chất lượng cho sản phẩm?
Yêu cầu
Cần phải xây dựng một hệ thống giúp cho Kiểm thử viên thực hiện kiểm thử tự động các giai đoạn cài đặt phần mềm Gọi hệ thống này là “Hệ thống kiểm thử tự động” (HTKTTĐ) Dưới đây là các yêu cầu mà HTKTTĐ phải đáp ứng:
- Công cụ cung cấp file mẫu, cho phép Kiểm thử viên thực hiện thiết lập test case dựa theo các điều kiện của test case
- Kiểm thử viên có thể tạo một bộ test case (test suite) bao gồm các test cases cần thiết để kiểm thử
- Công cụ cung cấp các thao tác để thực hiện test case dựa theo thông tin của bộ test case Công cụ cũng cho phép Kiểm thử viên có thể tạo lịch trình nhiệm vụ (Windows Scheduled Task) để thực hiện các thao tác trên
- Các giai đoạn cài đặt (tạo bộ cài đặt/cài đặt/gỡ cài đặt SEC) sẽ thực hiện một cách tự động Kết quả của mỗi test case sẽ được xuất ra CSV file, để Kiểm thử viên có thể kiểm tra được kết quả thực hiện kiểm thử.
Thiết kế chương trình
Chi tiết về chức năng
HTKTTĐ nhằm mục tiêu phát triển kịch bản kiểm thử cho các test cases liên quan đến cài đặt và gỡ cài đặt hệ thống SEC Các test cases này được lựa chọn từ các file kiểm thử (file check list) nhằm kiểm tra chức năng liên quan của chương trình
Công cụ cung cấp chức năng, cho phép Kiểm thử viên thực hiện các test cases này một cách tự động Dưới đây là các chức năng mà HTKTTĐ sẽ hỗ trợ:
- Cung cấp kịch bản kiểm thử cho test cases được lựa chọn từ các file kiểm thử nhằm xác nhận chức năng liên quan của chương trình
- Cung cấp một file Excel có chứa các thiết lập cho các test cases thực sự có thể thực thi một cách tự động
- Cho phép Kiểm thử viên lựa chọn test case từ file Excel để tạo bộ cài đặt hoặc cài đặt/gỡ cài đặt
- Giúp Kiểm thử viên tạo bộ cài đặt, cài đặt và gỡ cài đặt hệ thống SEC một cách tự động
- Cho phép Kiểm thử viên thực hiện kiểm thử liên tục
- Giúp Kiểm thử viên xác nhận kết quả thực hiện của mỗi test case bằng file báo cáo kết quả kiểm thử và các file bằng chứng khác
- Cho phép Kiểm thử viên lần dấu lỗi trong quá trình thực hiện test case bằng cách cung cấp file ảnh của lỗi, file log
- Hỗ trợ nhiều phiên bản SEC khác nhau.
Phạm vi
- Về file kiểm thử: HTKTTĐ được phát triển để kiểm thử tự động cho các test cases liên quan đến cài đặt và gỡ cài đặt SEC
- Về các công cụ liên quan:
Capture/Replay tool: Phiên bản 05-00-IR5
TestController/TestAgent tool: Phiên bản 01-00-IR1
4.2.3 Phạm vi tự động hóa
Hình 4.1 mô tả phạm vi tự động hóa của HTKTTĐ
Máy điều khiển (Controller PC)
Máy khách Thực thi script
Thao tác bằng tay Thao tác tự động
-Thông tin của 220 test case -Macro để xuất setting -Nút thực thi
- Tạo bộ cài đặt từ server
- Cài đặt/gỡ cài đặt
Tự động tạo bộ cài đặt
Thư mục chứa bộ cài đặt
Tự động gỡ cài đặt
Tạo báo cáo kết quả kiểm thử
Gửi kết quả kiểm thử
Lưu lại Tạo bộ cài đặt
Cài đặt/ Gỡ cài đặt
Có tiếp tục thực hiện kiểm thử tự động không? Được gửi tới Đọc Được gửi tới
Hình 4.1 Phạm vi tự động hóa
Trong hình 4.1, đường mũi tên màu trắng thể hiện thao tác phải thực hiện bằng tay Đường mũi tên màu xanh thể hiện thao tác được tự động hóa Theo đó, người dùng sẽ phải lựa chọn các test cases bằng tay sau đó bấm nút để thực hiện kiểm thử
Quá trình kiểm thử sau khi người dùng bấm nút sẽ được thực hiện tự động Mỗi khi kết thúc một test case, người dùng phải xác nhận bằng tay việc thực hiện test case tiếp theo Sau khi quá trình kiểm thử kết thúc, người dùng sẽ thao tác bằng tay để xem báo cáo kết quả kiểm thử.
Cài đặt và đánh giá
Một số giao diện của hệ thống
Hình 5.1 Giao diện quản lý file kiểm thử
Giao diện quản lý file kiểm thử (MASTER sheet) là một Excel worksheet, bao gồm bảng chứa danh sách các file kiểm thử Mỗi file trong bảng này được liên kết tới worksheet chứa các test cases tương ứng với file kiểm thử đó
Mỗi file kiểm thử sẽ liên kết đến worksheet tương ứng với Windows 2000 hoặc Windows XP
Trong trường hợp Kiểm thử viên muốn tạo bộ cài đặt hoặc kiểm thử đồng thời nhiều file kiểm thử, thì chỉ cần lựa chọn “○” trong cột “Select”, sau đó bấm nút
“Create Media” hoặc “Execute Test” trong MASTER sheet
5.1.2 Giao diện quản lý test case
Hình 5.2 Giao diện quản lý test case
Giao diện quản lý test case là một Excel worksheet, chứa thông tin test case của file kiểm thử Mỗi file kiểm thử sẽ có hai sheet tương ứng với Windows XP và Windows 2000
Mỗi test case có một ID được chỉ ra bởi trường “TestCase ID” Tương ứng với test case này sẽ có một mã bộ cài đặt được chỉ ra bởi trường “Media ID” Một số test cases có thể kiểm thử với cùng một bộ cài đặt Trong trường hợp này, Kiểm thử viên chỉ cần cập nhật nội dung của “Media ID” cho test case
Có hai nút là “Create Media” và “Execute Test” Khi bấm vào “Create Media”, chương trình sẽ nhảy tới sheet “Media” Trong “Media” sheet, Media ID của test case được chọn sẽ được lựa chọn tự động Kiểm thử viên xác nhận lại bộ cài đặt (media) được chọn rồi bấm vào nút “Create Media’ để tạo bộ cài đặt
Sau khi tạo bộ cài đặt, Kiểm thử viên bấm nút “Execute Test” để kiểm thử cho test case được chọn
Ngoài ra, sheet này còn cung cấp nút “Go to Master sheet” cho phép Kiểm thử viên quay trở lại MASTER sheet
5.1.3 Giao diện quản lý bộ cài đặt
Hình 5.3 Giao diện quản lý bộ cài đặt
Giao diện quản lý bộ cài đặt là một Excel worksheet (Media sheet), quản lý thông tin bộ cài đặt của tất cả các test case
Tất cả thiết lập cho việc tạo bộ cài đặt được sắp xếp theo hàng Kiểm thử viên có thể sử dụng chức năng Filter của Excel để chỉ ra các test cases có thiết lập giống nhau
Media sheet cho phép Kiểm thử viên lựa chọn bộ cài đặt để tạo, mỗi bộ cài đặt được xác định bởi trường “Media ID”
Sau khi cập nhật các thông tin cần thiết, Kiểm thử viên bấm vào nút “Create Media” để tạo bộ cài đặt
Ngoài ra, Media sheet còn cung cấp nút “Go to Master sheet”, cho phép Kiểm thử viên quay trở lại Master sheet.
Đánh giá năng suất
5.2.1 Các bước thực hiện kiểm thử
Dưới đây là các bước thực hiện kiểm thử trong thực tế đối với hệ thống SEC
- Cài đặt phần mềm virus
Cập nhật test case nếu cần
Thực hiện kiểm thử Điền kết quả tới check list Đã kết thúc tất cả test case
Tổng hộp kết quả Yes No
Hình 5.4 Các bước thực hiện kiểm thử
- Chuẩn bị môi trường: trước khi kiểm thử, kiểm thử viên phải tiến hành chuẩn bị môi trường kiểm thử theo test case được giao Bao gồm việc cài đặt Windows, cài đặt các phần mềm yêu cầu như: phần mềm diệt virus, Microsoft Office…
- Cập nhật test case: Kiểm thử viên phải tiến hành kiểm tra nội dung của test case xem có cần phải update thông tin gì không; ví dụ như Windows, phần mềm virus…
- Thực hiện kiểm thử: Kiểm thử viên tiến hành kiểm thử nội dung của mỗi test case; Sau khi mỗi test case đã được xác nhận, Kiểm thử viên sẽ điền kết quả kiểm thử, thông tin về thời gian thực hiện vào file kiểm thử (check list) Sau đó sẽ tiến hành kiểm thử test case tiếp theo
- Tổng hợp kết quả: Sau khi kiểm thử xong tất cả các test cases được giao,
Kiểm thử viên tổng hợp kết quả kiểm thử của mình và báo cáo với người quản lý
Dựa trên thời gian thực hiện kiểm thử thì có thể tính được chi phí thực hiện cho hoạt động kiểm thử Vì vậy để đánh giá hiệu quả của việc kiểm thử bằng HTKTTĐ so với kiểm thử bằng tay, sẽ thực hiện đánh giá thông qua thời gian thực hiện kiểm thử
Thời gian thực hiện kiểm thử sẽ được tính là thời gian để thực hiện toàn bộ các bước kiểm thử trong mục 5.2.1, trong đó thời gian thực hiện một test case được tính như sau:
t1: thời gian tạo bộ cài đặt
t4: thời gian gỡ cài đặt Đối với mỗi t1, t2, t3, t4, sẽ thực hiện tính toán xem thời gian thực hiện bằng tay và tự động tương ứng là bao nhiêu Từ đó, sẽ tính ra thời gian để thực hiện của một test case
Nếu gọi thời gian thực hiện toàn bộ test case bằng tay là T1, thời gian thực hiện toàn bộ test case bằng HTKTTĐ là T2 Khi đó năng suất đạt được sẽ là:
Dựa vào giá tri [Năng suất] thì có thể xác định được hiệu quả của việc sử dụng HTKTTĐ
Trong điều kiện bình thường, Kiểm thử viên chỉ có một máy để thực hiện kiểm thử tự động, thì kết quả đạt được như sau:
Thực hiện bằng tay Thực hiện tự động
Chuẩn bị môi trường Chuẩn bị môi trường
Cài đặt phần mềm virus 10
Cài đặt phần mềm virus
Thao tác khác 15 Thao tác khác
Cập nhật test case 234 Cập nhật test case và file thông tin kiểm thử 468
Thực hiện kiểm thử 3646 Thực hiện kiểm thử
2731 Điền kết quả test tới file kiểm thử 0 Điền kết quả test tới file kiểm thử 0
Báo cáo kết quả kiểm thử 351 Báo cáo kết quả kiểm thử 351
Tổng thời gian 4271 Tổng thời gian 3600
Bảng 5.1 Kết quả thực nghiệm trong điều kiện bình thường
Trong điều kiện tối ưu, Kiểm thử viên sẽ có hai máy để thực hiện kiểm thử tự động Giả thiết rằng, khi máy một đang cài đặt/gỡ cài đặt tự động thì Kiểm thử viên thực hiện thao tác kiểm thử ở máy hai Sau khi thực hiện xong thao tác, thì máy hai sẽ gỡ cài đặt/cài đặt tự động, lúc này việc cài đặt tự động ở máy một cũng hoàn thành và Kiểm thử viên sẽ thực hiện thao tác ở máy một Quá trình này được lặp đi, lặp lại Như vậy Kiểm thử viên sẽ chỉ mất thời gian cho việc thực hiện thao tác test case và sẽ tiết kiệm được thời gian cài đặt/gỡ cài đặt test case Khi đó, kết quả đạt được như sau:
Thực hiện bằng tay Thực hiện tự động
Chuẩn bị môi trường Chuẩn bị môi trường
Cài đặt phần mềm virus 10
Cài đặt phần mềm virus
Thao tác khác 15 Thao tác khác
Cập nhật test case 234 Cập nhật test case và file thông tin kiểm thử 468
Thực hiện kiểm thử 3646 Thực hiện kiểm thử
1414 Điền kết quả test tới file kiểm thử 0 Điền kết quả test tới file kiểm thử 0
Báo cáo kết quả kiểm thử 351 Báo cáo kết quả kiểm thử 351
Tổng thời gian 4271 Tổng thời gian 2283
Bảng 5.2 Kết quả thực nghiệm trong điều kiện tối ưu
Mỗi lần sử dụng HTKTTĐ cho hoạt động kiểm thử, chắc chắn sẽ tiết kiệm được 15,7% chi phí Nếu tính riêng trong một lần chạy thì chi phí tiết kiệm được này không đáng kể Nhưng vì hoạt động kiểm thử là liên tục và lâu dài, nên chi phí tiết kiệm được tích lũy qua mỗi lần kiểm thử là rất lớn Điểm này cũng phù hợp với đặc điểm của kiểm thử tự động: chỉ đem lại giá trị qua quá trình sử dụng lâu dài
Trong điều kiện lý tưởng, thì việc sử dụng HTKTTĐ có thể tiết kiệm được tới 46,5% chi phí Tuy nhiên, để đạt được con số lý tưởng này thì cần phải đáp ứng được một số điều kiện như:
- Kiểm thử viên phải thực sự thành thạo và có kinh nghiệm, am hiểu về hệ thống
- Chuẩn bị điều kiện môi trường tốt
- Công cụ kiểm thử tự động hoạt động ổn định
Tuy khó có thể đạt được năng suất lý tưởng (46,5%), tuy nhiên việc đạt được năng suất từ 15,7% ~ 46,5% là hoàn toàn khả thi, và theo thời gian, khi Kiểm thử viên ngày càng có kinh nghiệm hơn, hệ thống kiểm thử hoạt động ổn định hơn, thì năng suất (chi phí tiết kiệm được) sẽ tiệm cận được con số lý tưởng Điểm này càng khẳng định rằng, công cụ kiểm thử chỉ có thể đem lại giá trị và lợi ích qua quá trình sử dụng lâu dài
Thông qua việc tìm hiểu lý thuyết về kiểm thử tự động, cũng như áp dụng lý thuyết vào việc xây dựng một hệ thống kiểm thử tự động thực tế Luận văn đã đạt được các kết quả như sau:
Trước hết, chúng tôi đã tìm hiểu và trình bày lại một cách nhìn tổng quan, vai trò và lợi ích về kiểm thử tự động Các yêu cầu cần thiết để xây dựng một hệ thống kiểm thử cũng như các vấn đề có thể gặp phải
Chúng tôi cũng đã môt tả từng bước quá trình phân tích thiết kế một hệ thống kiểm thử tự động cho một hệ thống phần mềm khác
Kết quả quan trọng nhất là đã xây dựng thành công một hệ thống kiểm thử tự động và áp dụng thành công vào hoạt động kiểm thử trong thực tế, góp phần giảm chi phí cho hoạt động kiểm thử phần mềm
Thông qua việc thực hiện luận văn này, chúng tôi nhận thấy rằng kiểm thử tự động thực sự là một giải pháp cho phép nâng cao năng suất, chất lượng kiểm thử Qua đó có thể rút ngắn thời gian phát triển và nâng cao chất lượng sản phẩm