Tính khả kiểm thử của thiết kế kiến trúc

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu tính khả kiểm thử của ứng dụng trên nền web (Trang 28 - 32)

CHƯƠNG 2. KỸ THUẬT LÀM TĂNG TÍNH KHẢ KIỂM THỬ

2.2 Tính khả kiểm thử của thiết kế kiến trúc

Kiến trúc phần mềm của một hệ thống tính toán là cấu trúc tổng thể của hệ thống, bao gồm các thành phần của hệ thống, các quan hệ/liên kết giữa các thành phần đó và các thuộc tính có thể quan sát từ bên ngoài của các thành phần và các liên kết đó [9]. Kiến trúc tập trung giải quyết các yêu cầu chất lƣợng nhƣ hiệu năng (performance), tính dễ dùng (usability), độ an toàn (security), của hệ thống. Tính khả kiểm thử cũng là một trong các thuộc tính chất lƣợng của hệ thống phần mềm.

Thông thường người khách hàng không đưa ra được các yêu cầu thuộc tính chất lƣợng cụ thể chính xác. Việc này sẽ gây khó khăn khi bàn giao, nghiệm thu sản phẩm. Do đó khi xác định yêu cầu chất lượng người ta sử dụng các kịch bản thuộc tính chất lƣợng. Một kịch bản thuộc tính chất lƣợng là một yêu cầu chất lượng cụ thể, nó thường gồm sáu yếu tố sau đây: tác động, nguồn tác động, môi trường, thành phần của hệ thống (artifact), phán ứng cần có, lƣợng hóa phản ứng bằng giá trị cụ thể. Ví dụ về một kịch bản thuộc tính chất lượng khả năng kiểm thử như trong Bảng 1 hay tương đương là Hình 4 [9].

Hình 4 Một kịch bản thuộc tính chất lượng cho tính khả kiểm thử

Ví dụ này nói rằng trong giai đoạn phát triển (development), khi người thực hiện kiểm thử đơn vị (unit tester) hoàn thành mã (code unit completed) và thực hiện việc chạy kiểm thử thì kết quả kiểm thử phải chạy xong trong 3 giờ và bao phủ 85% số đường đi trong chương trình.

Môi trường Môi trường phát triển Nguồn kích thích Người làm kiểm thử đơn vị Kích thích Hoàn thành mã kiểm thử Sản phẩm (artifact) Đơn vị chương trình Phản ứng Ghi lại kết quả kiểm thử

Đo phản ứng Chạy trong 3 giờ và bao phủ 85% đường đi.

Bảng 1 Kịch bản thuộc tính chất lượng dạng bảng

Đạt đƣợc các thuộc tính chất lƣợng phụ thuộc vào việc áp dụng các chiến thuật thiết kế. Hình 5 liệt kê các chiến thuật giúp làm tăng tính khả kiểm thử [9].

Các chiến thuật khả kiểm đƣợc chia thành hai loại: kiểm soát và quan sát trạng thái hệ thống và giảm độ phức tạp hệ thống.

Hình 5 Các chiến thuật khả kiểm thử

Chiến thuật giao diện đặc biệt (specialized interfaces): Việc sử dụng các giao diện đặc biệt cho phép tách biệt giao diện và chi tiết cài đặt của thành phần, giúp kiểm thử dựa trên giao diện sẽ ổn định và độc lập với thay đổi bên trong của thành phần. Giao diện kiểm thử có thể đƣợc khai báo và dùng lại ở nhiều thành phần khác nhau giúp việc tương tác với giao diện khi kiểm thử cũng có thể sử dụng lại đƣợc.

Chiến thuật ghi và lặp lại (capture/playback): ghi lại thông tin đƣợc truyền vào qua giao diện. Thông tin được ghi, lưu trữ và sử dụng với hai mục đích: để so sánh với đầu ra của thành phần ở giai đoạn sau và để cung cấp đầu vào cho thành phần khác.

Chiến thuật cục bộ hóa lưu trữ: lưu các dữ liệu phân tán vào ổ cứng của máy chạy kiểm thử để dễ kiểm soát, xem xét thông tin đƣợc dễ dàng.

Chiến thuật trừu tượng nguồn dữ liệu: cho phép thay đổi cơ sở dữ liệu dễ dàng để có thể sử dụng cơ sở dữ liệu kiểm thử riêng thay vì phải sử dụng cơ sở dữ liệu thật.

Chiến thuật hộp cát: cho hệ thống chạy trong một hệ thống cô lập mô phỏng đúng hệ thống trên thực tế. Ví dụ sử dụng máy ảo trong lập trình trên điện thoại di động Android là đã áp dụng chiến thuật này.

Chiến thuật chèn mã kiểm tra: đây là cách chèn thêm các đoạn mã khẳng định tính chất của các biến trong chương trình thông qua các công thức logic. Ví dụ khi tính toán một biến xong ta biết nó phải là số dương, thì ta có thể chèn lệnh (ví dụ assert trong Java) để khẳng định công thức logic đó phải đúng. Khi chương trình chạy sẽ kiểm tra giá trị của công thức này và nếu sai thì dừng chương trình hoặc in các thông báo cho người sử dụng hoặc ghi vào file log lỗi.

Chiến thuật hạn chế phức tạp cấu trúc: là kỹ thuật chia nhỏ các cấu trúc phức tạp thành các cấu trúc con để giảm độ phức tạp của từng phần. Ví dụ một lớp có quá nhiều trường cần tách thành các lớp nhỏ hơn, một bảng có quá nhiều trường cũng có thể chia thành các bảng nhỏ hơn, một mô-đun quá lớn cũng cần chia nhỏ hơn, hay mức độ lồng nhau của các thành phần trong một hệ thống quá lớn thì cần chia thành các hệ thống nhỏ hơn để hạn chế độ phức tạp về chiều sâu.

Chiến thuật hạn chế tính không đơn định (non-deterministic): Khi hệ thống có thể chạy theo nhiều cách khác nhau không phụ thuộc vào ngữ cảnh, ví dụ khi hai luồng chạy độc lập thì có nhiều khả năng chạy xen kẽ nhau nên ví dụ chúng cùng in kết quả ra màn hình thì mỗi lần chạy có thể cho ra các kết quả khác nhau. Việc này gây khó khăn khi có lỗi cũng khó lặp lại (reproduce) lỗi đó để điều tra.

Cuối cùng, ngoài việc áp dụng các chiến thuật, khi xây dựng một phần mềm, người ta thường sử dụng một số mẫu kiến trúc có sẵn và chỉnh sửa thêm cho phù hợp với yêu cầu bài toán hoặc kết hợp với một số mẫu kiến trúc khác.

Khi này người thiết kế phải cân nhắc thêm tính khả kiểm thử của thiết kế kiến trúc để đảm bảo hệ thống dễ dàng kiểm thử về sau.

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu tính khả kiểm thử của ứng dụng trên nền web (Trang 28 - 32)

Tải bản đầy đủ (PDF)

(56 trang)