Chương 3 : Kiểm thử trên cơ sở các mô hình UML
3.3. Kiểm thử phần mềm trên cơ sở cấu phần
Khi kiểm thử hệ thống phần mềm trên cơ sở cấu phần, ta giả sử rằng mỗi cấu phần riêng lẻ đều đã được kiểm thử một cách đầy đủ. Như vậy, chìa khóa để xây dựng một hệ thống thành công đó là cần đảm bảo được độ tin cậy, tính chính xác khi tương tác các cấu phần với nhau. Các cấu phần trong hệ thống có thể tương tác với nhau một cách trực tiếp, hoặc gián tiếp.
Xuất phát từ ý tưởng xây dựng sản phẩm phần mềm mới dựa trên các cấu phần có sẵn hoặc sử dụng lại, thay vì phát triển một cách đơn thuần. Các cấu phần sử dụng lại mang lại kết quả đầu tư lớn hơn so với việc phát triển phần mềm truyền thống.
Trong hệ thống phần mềm cấu phần, chất lượng hệ thống phụ thuộc vào chất lượng cấu phần, cấu phần có lỗi sẽ ảnh hưởng đến toàn bộ hệ thống xây dựng trên đó. Như vậy, việc xác thực và điều khiển chất lượng cấu phần thuộc về cả nhà cung ứng và người dùng cấu phần. Để xác thực chất lượng cấu phần một cách nghiêm ngặt cho tất cả các cấu phần phần mềm tạo ra, người dùng cấu phần thông qua các quy trình cụ thể để đánh giá, xác thực và chấp nhận các cấu phần trước khi sử dụng nó trong hệ thống.
Một trong những cách đầu tiên để xem xét các vấn đề khác nhau trong kiểm thử cấu phần là phân chia các miền cấu phần theo nhà sản xuất, người dùng cấu phần hoặc nhà cung ứng. Cả 3 bên đều có các hiểu biết, những kiến thức và tầm nhìn khác nhau về cấu phần. Kiểm thử các cấu phần của nhà sản xuất là vô cùng phức tạp. Cấu phần càng có khả năng tái sử dụng lại cao thì dải ứng dụng nó càng rộng. Vì vậy, việc kiểm thử cần được thực hiện trong bối cảnh độc lập.
Vấn đề lớn nhất của người dùng cấu phần là kiểm thử mã nguồn của cấu phần trong hệ thống [19]. Bất kỳ kỹ thuật kiểm thử truyền thống nào như kiểm thử luồng nghiệp vụ, tính toán sự phụ thuộc điều khiển, hoặc kỹ thuật phân tích các định danh đều cần đến mã nguồn của hệ thống phần mềm thử nghiệm. Vấn đề thứ 2 là: khi mã nguồn là có sẵn, các cấu phần và ứng dụng phát triển có thể sử dụng 2 ngôn ngữ phát triển khác nhau. Cuối cùng, để kiểm thử được mức ứng dụng cao nhất, cấu phần người dùng sẽ cần xác định chính xác các chức năng cấu phần được sử dụng trong ứng dụng, đó là nhiệm vụ rất khó khăn. Tập các tiêu chí tuyệt đối theo định nghĩa sẽ không được đáp ứng trước khi tiến hành bước kiểm thử.
Trong công nghệ phần mềm trên cơ sở cấu phần(CBSE), [5] cả nhà cung ứng và người dùng cấu phần phải kiểm thử các cấu phần phần mềm. Kiểm thử cấu phần bao gồm 2 loại là hoạt động và hiệu suất kiểm thử.
Kiểm thử cấu phần hướng – nhà cung ứng, là một bước của quy trình phát triển cấu phần. Nó liên quan đến một quy trình kiểm thử cấu phần và các hoạt động được thực hiện bởi một nhà cung ứng để xác thực một cấu phần trên cơ sở các đặc tả của nó.
Kiểm thử cấu phần hướng – người dùng, là một phần của quy trình phát triển phần mềm trên cơ sở cấu phần được đưa vào dự án ứng dụng. Nó liên quan đến quy trình xác thực cấu phần và các hoạt động kiểm thử trong ngữ cảnh xác định để bàn giao cấu phần đó, bao gồm các khía cạnh về đặc tả chức năng, giao diện, và sự thực thi. Hơn nữa, cấu phần sử dụng lại phải được xác thực trong môi trường vận hành và đáp ứng ngữ cảnh đưa ra.
Kiểm thử cấu phần hướng – nhà cung ứng: nhằm mục đích là trả lời các câu hỏi cho các đối tượng phát triển cấu phần:
Cấu phần được xây dựng trên cơ sở đặc tả đưa ra có đảm bảo chất lượng
không?
Cấu phần được xây dựng có dựa trên các chuẩn đặc tả và mô hình cấu
phần đưa ra hay không?
Nhà cung ứng sẽ kiểm tra sự tuân thủ các chức năng trong cấu phần theo đặc tả có từ trước. Cấu phần được xem xét trên cơ sở logic bên trong, dữ liệu, cấu
trúc chương trình có tuân thủ theo đúng thuật toán đưa ra hay không. Từ đó, nhà cung ứng sẽ đưa ra đầy đủ thông tin về cấu phần. Việc kiểm thử cấu phần này sẽ không chỉ tập trung vào các dịch vụ riêng lẻ mà cấu phần đó cung cấp và liên kết các dịch vụ. Mục đích của nhà cung ứng cấu phần là cho ra sản phẩm có chất lượng cao, có thể sử dụng lại. Kiểm thử cấu phần hướng – nhà cung ứng thể hiện được 3 mục tiêu chủ yếu:
o Bao quát một số lỗi trong phạm vi cấu phần đặc tả.
o Xác thực các giao diện, chức năng, hành vi, hiệu năng để đảm bảo
rằng các đặc tả cấu phần được đáp ứng.
o Kiểm tra về việc sử dụng lại, đóng gói, và triển khai cấu phần trên nền
và môi trường vận hành đã định nghĩa sẵn.
Kiểm thử cấu phần hướng - người dùng: được thực hiện để trả lời các câu hỏi cho người dùng cấu phần:
Chúng ta có lựa chọn và triển khai cấu phần có sẵn vào trong hệ thống
không?
Chúng ta có đang sử dụng lại một cấu phần đúng trong một hệ thống?
Chúng ta có đang thực hiện tích hợp hoặc cập nhật một cấu phần đúng
cho dự án?
Người dùng cấu phần sẽ đưa ra đánh giá xem một mô-đun được xét có phù hợp với nền tảng ứng dụng trên cơ sở cấu phần kết hợp hay không. Việc xem xét cấu phần này cũng giống như đối với đối tượng hộp đen. Mục đích của người dùng cấu phần là tích hợp cấu phần có sẵn vào khung cấu phần, và đánh giá sự cộng tác theo vai trò mà nhà sản xuất đưa ra thông qua kiểm thử. Kiểm thử nhằm kiểm tra sự thích ứng các cấu phần gồm: kết hợp thành phần phát triển thứ ba, và hiển thị các tương tác qua lại giữa các cấu phần.
Kiểm thử cấu phần hướng người dùng liên tưởng đến quy trình xác thực cấu phần và các hoạt động kiểm thử cấu phần đó để đảm bảo chất lượng của các cấu phần phần mềm trong hệ thống đặc tả. Người dùng thực hiện kiểm thử trên cấu phần nhằm đảm bảo các mục tiêu:
o Xác thực các chức năng và sự thực hiện các cấu phần sử dụng lại để
đảm bảo rằng cấu phần đó đáp ứng được đầy đủ các yêu cầu dự án và toàn hệ thống.
o Xác nhận khả năng sử dụng lại và triển khai cấu phần trên nền đặc tả
và môi trường vận hành.
o Kiểm tra chất lượng của các tùy biến cấu phần dựa trên cấu phần sử
Ba loại cấu phần được sử dụng trong dự án phát triển phần mềm trên cơ sở cấu phần:
Các cấu phần được sử dụng lại hoàn toàn.
Các cấu phần được lắp ghép và cập nhật.
Các cấu phần được phát triển mới.
Kiểm thử cấu phần phần mềm đem lại hiệu quả kinh tế và chất lượng sản phẩm trong sản xuất phần mềm là điều khẳng định chắc chắn.
Chất lượng của chương trình phát triển trên cơ sở cấu phần: phụ thuộc vào chất lượng các cấu phần kết hợp với chương trình và hiệu quả của việc thực hiện kiểm thử từng đơn vị cấu phần đó, kiểm thử tích hợp và kiểm thử hệ thống [20]. Trong quy trình kiểm thử, hoặc ca kiểm thử các cấu phần, cán bộ kiểm thử đã
gặp phải một số các khó khăn & thách thức:
Các khó khăn trong kiểm thử đơn vị các cấu phần phần mềm: Kiểm thử cấu
phần liên quan đến các câu hỏi về loại kiểm thử, và nhà cung ứng nên thực hiện việc kiểm thử cấu phần đó bao lâu, cách thức, kỹ thuật để xây dựng các tình huống kiểm thử và khi nào thì cấu phần có thể đưa vào vận hành.
Tập các tình huống kiểm thử các cấu phần phần mềm được xây dựng là
Add-hoc.
Kiểm thử thỏa đáng các cấu phần.
Khả năng kiểm thử các cấu phần tái sử dụng kém.
Tăng thêm chi phí vào việc kiểm thử các cấu phần tích hợp.
Việc quản lý tập các tình huống kiểm thử tích hợp các cấu phần là ad-
hoc.
Các khó khăn trong tích hợp cấu phần: làm giảm đi khả năng có thể điều khiển
và kiểm tra được; khả năng truy xuất đến các lời gọi là yếu, dẫn đến các tiếp cận yêu cầu kém hiệu quả.
Khó định dạng các bộ kiểm thử tích hợp dựa trên bộ kiểm thử cấu phần.
Chi phí xây dựng môi trường tích hợp là cao.
Thiếu mô hình kiểm thử tích hợp cấu phần ứng với tiêu chuẩn kiểm thử.
Khó khăn trong kiểm thử hệ thống phần mềm cấu phần: Các cấu phần được
phát triển trong ngữ cảnh đưa ra bởi nhà cung ứng và được đưa vào sử dụng lại trong ngữ cảnh phát triển khác nhau.
Khó kiểm soát được các hành vi hệ thống: tách biệt lỗi, xử lý, debug lỗi
một cách độc lập.
Yếu trong việc điều phối và xác thực nguồn lực hệ thống.
Sự khác nhau cơ bản nhất giữa kiểm thử truyền thống và kiểm thử trên cơ sở cấu phần nằm ở tại cách nhìn của hệ thống với cấu phần, giữa nhà cung ứng và người dùng. Sự khác nhau căn bản nằm trong chính sự xác thực các hệ thống
phần mềm truyền thống và các sự phát triển phần mềm trên cơ sở cấu phần.
Khi tiến hành kiểm thử tích hợp các cấu phần, các kỹ thuật được áp dụng trong kiểm thử phần mềm truyền thống đều được áp dụng đối với phần mềm phát triển trên cơ sở cấu phần. Ngoài ra, khi tiến hành kiểm thử việc tích hợp các cấu phần ta có thể thực hiện cả ở mức kiểm thử hộp đen, và hộp trắng khi tích hợp cấu phần lại với nhau.
Các kỹ thuật có thể áp dụng khi tiến hành kiểm thử hệ thống phần mềm như: Kiểm thử chức năng.
Kiểm thử cấu trúc.
Kiểm thử luồng nghiệp vụ. Kiểm thử giao diện.
Như vậy, kiểm thử bao gồm việc cấu hình đúng đầu vào, thực hiện phần mềm dựa trên thao tác nhập liệu đầu vào, và phân tích đầu ra. “Cấu hình phần mềm” bao gồm các quá trình đặc tả yêu cầu, thiết kế, mã nguồn, …Trên cơ sở các luồng thông tin kiểm thử, một kỹ thuật kiểm thử cần đặc tả chiến lược được sử dụng để xây dựng các tình huống kiểm thử, từ đó tiến hành bước kiểm thử dựa trên đầu vào và phân tích kết quả kiểm thử dựa trên đầu ra. Kỹ thuật kiểm thử được áp dụng cho phần mềm làm bộc lộ các khía cạnh khác nhau về chất lượng phần mềm.