CHƯƠNG 2. KỸ THUẬT LÀM TĂNG TÍNH KHẢ KIỂM THỬ
2.1 Tính khả kiểm thử của tài liệu đặc tả
Một trong những giai đoạn đầu của thiết kế phần mềm là mô tả yêu cầu kỹ thuật. Yêu cầu kỹ thuật mô tả các chức năng hệ thống phải thực hiện, các đặc điểm đáng chú ý về và cần thiết của hệ thống, các ràng buộc về hoạt động của hệ thống và quy trình phát triển phần mềm.
Chú ý là có hai mức độ yêu cầu là yêu cầu người dùng (user requirements) và yêu cầu hệ thống (system requirements). Yêu cầu người dùng mô tả rõ ràng về những gì hệ thống nên làm. Còn yêu cầu hệ thống mở rộng yêu cầu người dùng, mô tả chức năng hệ thống một cách chi tiết và súc tích hơn, kỹ
thuật hơn. Tuy nhiên, nó vẫn chỉ mô tả chức năng và các ràng buộc nhìn từ phía ngoài của hệ thống chứ chƣa nêu chi tiết cần cài đặt nhƣ thế nào.
Các yêu cầu hệ thống này có thể đƣợc viết bằng các đặc tả ngôn ngữ có cấu trúc, sử dụng các biểu mẫu với các trường dữ liệu chuẩn. Ngoài ra, tài liệu yêu cầu hệ thống còn thường mô tả các trường hợp/ca sử dụng (use case) và biểu đồ tuần tự. Tài liệu này là đặc tả yêu cầu phần mềm (SRS - Software Requirements Specification).
Các yêu cầu hệ thống thường không được sử dụng để thiết kế và cài đặt phần mềm ngay, mà trước khi đó chúng ta cần kiểm tra/kiểm thử tính đúng đắn và chất lƣợng của chúng, để các việc phát triển sau đó đƣợc thuận lợi hơn. Do đó để tăng tính khả kiểm thử, các tài liệu yêu cầu cần được viết rõ ràng, không mơ hồ để tránh bị người lập trình và người thiết kế hiểu sai hay hiểu không giống nhau.
Nghiên cứu cũng khuyến cáo kiểm thử viên nên đƣợc tham gia ở pha thu thập tài liệu yêu cầu để giúp cho việc đặc tả các yêu cầu đƣợc rõ ràng hơn vì ở giai đoạn này. Các kỹ sư kiểm thử thường giúp phát hiện các thiếu sót trong yêu cầu mà có thể ảnh hưởng đến việc kiểm thử ở giai đoạn sau.
Với các qui trình phát triển hiện đại ngày nay người ta thường lấy các ví dụ trong qua trình thu thập yêu cầu để sử dụng chúng làm ca kiểm thử. Các ví dụ này cũng giúp cả người khách hàng và đội phát triển cùng hiểu đúng yêu cầu cần đạt của các chức năng phần mềm. Theo phương pháp phát triển hướng hành vi [8] (BDD -behaviour driven development) người ta còn sử dụng một ngôn ngữ chuyên dụng là gherkin 3 để viết các kịch bản làm ví dụ cho các tính năng của sản phẩm nhƣ ví dụ sau.
3 http://cukes.info/gherkin.html
Ở ví dụ này tính năng quản lý tài khoản (Password mangement) có một kịch bản (ví dụ) khi người sử dụng có email cukes@cukes.info quên mật khẩu và chọn chức năng reset thì hệ thống sẽ gửi email với link để đặt lại mật khẩu mới cho người dùng.
Thông thường một tính năng (feature) này có thể có nhiều kịch bản (scenario) chính là các ví dụ hay tương đương một ca kiểm thử. Theo cách này chúng ta vừa sử dụng mô tả này làm tài liệu yêu cầu, đồng thời cũng sử dụng nó để viết kiểm thử chấp nhận hay kiểm thử chức năng ở mức người sử dụng và chúng sẽ đƣợc chạy tự động.
Lỗi về giao diện phần mềm (không phải giao diện người dùng) là một trong những vấn đề phổ biến nhất trong quá trình xây dựng phần mềm. Do đó chúng ta cần tập trung đặc biệt vào đặc tả giao diện khi xây dựng đặc tả yêu cầu kỹ thuật. Đặc tả giao diện phải đƣợc mô tả rõ ràng trong tài liệu đặc tả yêu cầu.
Đặc tả giao diện bao gồm: các đặc tả thủ tục/hàm (giao diện lập trình ứng dụng, API) và các cấu trúc dữ liệu. Giao diện phải đƣợc đặc tả cho cả hệ thống đang thiết kế và các hệ thống đã có mà sẽ tương tác với hệ thống này.
Các yêu cầu đƣợc sử dụng để tạo ra các artifact nhƣ thiết kế, cài đặt, các ca kiểm thử, v.v. Nếu chúng ta lưu giữ thông tin yêu cầu nào được thể hiện ở trong artifact nào thì việc này giúp chúng lần xuôi, và lần ngƣợc lại giữa các artifact để kiểm tra xem thiết kế có phù hợp với yêu cầu. Tương tự, chúng ta có thể biết mô-đun nào cài đặt yêu cầu nào theo thiết kế nào. Khái niệm này gọi là khả năng truy vết (traceability). Khả năng truy vết là cơ sở để kiểm tra chất lượng sản phẩm và là phương tiện để chứng minh rằng các yêu cầu đã được
Feature: Password management Scenario: Forgot password
Given a user with email "cukes@cukes.info" exists When I ask for a password reset
Then an email with a password reset link should be sent
hiểu rõ, tuân thủ và không có các tính năng/chức năng thừa, không cần thiết.
Khả năng truy vết cho biết các ca kiểm thử đã đƣợc tạo ra ở giai đoạn mô tả yêu cầu có thể đƣợc thực hiện trên phần mềm. Nói cách khác, khả năng truy vết hỗ trợ đắc lực cho việc tăng tính khả kiểm thử của hệ thống.