II. Kỹ nghệ phần mềm
2. Kiểm thử phần mềm
2.2.3 Tổ chức việc kiểm thử phần mềm
Người phỏt triển phần mềm bao giờ cũng phải cú trỏch nhiệm với việc kiểm thử riờng cỏc đơn vị modul chương trỡnh, để đảm bảo rằng mỗi modul chương trỡnh thực hiện đỳng chức năng nú đó được thiết kế. Trong nhiều trường hợp người phỏt triển cũng nờn tiến hành thờm cả kiểm thử tớch hợp là bước kiểm thử dẫn tới việc xõy dựng toàn bộ cấu trỳc chương trỡnh. Chỉ khi kiến trỳc phần mềm đó hoàn tất thỡ nhúm kiểm thử độc lập (ITG – Independent Testing Group) mới tham gia vào.
Vai trũ cuả nhúm kiểm thử độc lập là loại bỏ vấn đề cố hữu là để người xõy dựng kiểm thử những cỏi anh ta đó xõy dựng ra. Việc kiểm thử độc lập loại bỏ xung khắc lợi ớch mà nếu khụng cú nhúm này sẽ xảy ra. Cuối cựng, nhõn sự (tester) trong nhúm kiểm thử độc lập được trả tiền để tỡm ra lỗi.
Tuy nhiờn người phỏt triển phần mềm khụng chuyển giao chương trỡnh cho ITG rồi bỏ đi, mà làm việc chặt chẽ trong toàn bộ dự ỏn phần mềm để đảm bảo rằng những kiểm thử kỹ lưỡng sẽ được tiến hành. Trong khi kiểm thử người phỏt triển phải cú sẵn để sửa lỗi đó phỏt hiện ra.
2.2.3.1 Kiểm thử đơn vị
H4.4 Kiểm thử đơn vị
Modul giao diện được kiểm thử để bảo đảm rằng thụng tin chảy đỳng vào việc vào ra khỏi chương trỡnh đang kiểm thử. Cấu trỳc dữ liệu cục bộ được xem xột để đảm bảo rằng dữ liệu được lưu giữ tạm thời vẫn duy trỡ được tớnh toàn vẹn cuả nú trong tất cả cỏc bước khi thực hiện
Modul
Trường hợp kiểm thử Giao diện
Cấu trỳc dữ liệu cục bộ Điều kiện biờn
Đường độc lập Đường xử lý lỗi
thuật toỏn. Cỏc điều kiện biờn được kiểm thử để đảm bảo rằng modul vận hành đỳng tại cỏc biờn được thiết lập cho việc xử lý cú giới hạn. Tất cả cỏc đường độc lập đi qua cấu trỳc điều khiển đều được cho chạy qua để đảm bảo rằng tất cả cỏc cõu lệnh trong một modul đều được thực hiện qua ớt nhất một lần. Cuối cựng, tất cả cỏc đường xử lý lỗi cũng được kiểm thử.
Việc kiểm thử luồng dữ liệu đi qua giao diện modul là cần thiết trước khi bất kỳ kiểm thử nào khỏc được tiến hành. Nếu dữ liệu khụng đi vào/ra đỳng thỡ tất cả cỏc kiểm thử khỏc đều phải bàn cói lại.
Đối với cỏc phộp kiểm thử đơn vị cần xỏc định: 1. Số cỏc tham biến vào cú bằng đối số khụng?
2. Cỏc thuộc tớnh tham biến và đối số cú tương ứng với nhau khụng? 3. Hệ thống cỏc đơn vị tham biến và đối cú đỳng với nhau khụng?
4. Số cỏc đối số được truyền tới modul được gọi cú bằng số cỏc tham biến khụng?
5. Thuộc tớnh của cỏc đối được truyền cho modul được gọi cú bằng với thuộc tớnh của tham biến khụng?
6. Hệ thống cỏc đơn vị của đối được truyền tới modul được gọi cú bằng hệ thống đơn vị của tham biến khụng?
7. Cỏc thuộc tớnh số và trật tự tham biến của chức năng cú sẵn cú đỳng khụng? 8. Cú tham khảo nào tới cỏc tham biến khụng được gắn với điểm vào hiện tại khụng? 9. Cỏc đối chỉ vào cú bị thay đổi khụng?
10. Cỏc định nghĩa biến toạn cục cú nhất quỏn trong cỏc modul khụng? 11. Cỏc ràng buộc cú được truyền như đối số khụng?
2.2.3.2 Kiểm thử tớch hợp
Kiểm thử tớch hợp là một kỹ thuật hệ thống để xõy dựng cấu trỳc chương trỡnh trong khi đồng thời tiến hành cỏc kiểm thử để phỏt hiện lỗi liờn kết trong giao tiếp. Mục đớch là lấy cỏc modul đó kiểm thử đơn vị xong và xõy dựng nờn một cấu trỳc chương trỡnh được quy định bởi thiết kế.
a) Tớch hợp từ trờn xuống
H4.5 Tớch hợp trờn xuống
Tớch hợp từ trờn xuống là cỏch tiếp cận tăng dần tới việc xõy dựng cấu trỳc chương trỡnh. Cỏc modul được tớch hợp bằng cỏch đi dần xuống qua cấp bậc điều khiển, bắt đầu từ modul
M1
M1 M1 M1
M1 M1
M1
điều khiển chớnh (chương trỡnh chớnh). Cỏc modul phụ thuộc vào modul điều khiển chớnh sẽ được tổ hợp dần vào trong cấu trỳc theo chiều sõu hoặc chiều rộng trước.
Tiến trỡnh tớch hợp được thực hiện trong một loạt năm bước:
1. Modul điều khiển chớnh được dựng như một khiển trỡnh kiểm thử, cỏc cuống (là cỏc chương trỡnh con “cõm” thay thế cho cỏc modul phụ thuộc và modul đang được kiểm thử) được thay thế cho tất cả cỏc modul phụ thuộc trực tiếp vào modul điều khiển chớnh.
2. Tuỳ theo cỏch tớch hợp được lựa chọn (theo chiều sõu hay rộng) cỏc chương trỡnh con phụ thuộc được thay thế từng cỏi một mỗi lần bằng cỏc modul thực tại.
3. Việc kiểm thử được tiến hành khi từng modul được tớch hợp vào.
4. Khi hoàn thành từng tập cỏc phộp kiểm thử, cỏc chương trỡnh con cõm khỏc sẽ được thay thế bằng cỏc modul thực.
5. Kiểm thử hồi quy (tiến hành tất cả hay một số cỏc phộp kiểm thử trước) cú thể được tiến hành để đảm bảo rằng những lỗi mới khụng bị đưa thờm vào. Quay trở lại bước 2 cho tới khi toàn bộ cấu trỳc chương trỡnh được xõy dựng.
Nhận xột: Cuống thay thế cho cỏc modul cấp thấp khi bắt đầu kiểm thử từ trờn xuống, do đú khụng cú dữ liệu nào cú nghĩa cú thể chảy ngược lờn trong cấu trỳc chương trỡnh. Người kiểm thử đứng trước một số lựa chọn: (1) để trễ nhiều việc kiểm thử tới khi cuống được thay thế hết, (2) xõy dựng cỏc cuống thực hiện những chức năng giới hạn mụ phỏng cho modul thực tại, (3) tớch hợp phần mềm từ đỏy cấp bậc lờn.
Cỏch tiếp cận thứ nhất (để trễ kiểm thử cho tới khi cuống được thay thế bởi modul thực tại) gõy cho chỳng ta bị mất điều khiển đối với sự tương ứng giữa kiểm thử đặc biệt và việc tổ hợp cỏc modul đặc biệt. Điều này cú thể dẫn tới những khú khăn trong việc xỏc định nguyờn nhõn lỗi và cú khuynh hướng vi phạm ràng buộc của cỏch tiếp cận trờn xuống. Cỏch tiếp cận thứ hai ổn hơn nhưng cú thể dẫn tới kinh phớ khỏ lớn, vỡ cuống ngày càng phức tạp hơn. Cỏch tiếp cận thứ 3 được gọi là kiểm thử từ dưới lờn được thảo luận trong mục sau.
b) Tớch hợp dưới lờn
Bắt đầu xõy dựng và kiểm thử với cỏc modul nguyờn tử (cỏc modul ở mức thấp nhất trong cấu trỳc chương trỡnh). Vỡ cỏc modul này được tớch hợp từ dưới lờn nờn việc xử lý yờu cầu đối với cỏc modul phụ thuộc vào nú ở một mức nào đú bao giờ cũng cú sẵn và nhu cầu về cuống bị dẹp bỏ.
Chiến lược tớch hợp từ dưới lờn cú thể được thực hiện qua những bước sau:
1. Cỏc modul cấp thấp được tổ hợp vào cỏc chựm (đụi khi được gọi là kiểu kiến trỳc) thực hiện cho một chức năng con phần mềm đặc biệt.
2. Khiển trỡnh (một chương trỡnh điều khiển cho kiểm thử) được viết ra để phối hợp việc vào ra trường hợp kiểm thử.
3. Kiểm thử chựm
4. Loại bỏ khiển trỡnh và chựm được tổ hợp chuyển lờn trong cấu trỳc chương trỡnh
Khi việc tớch hợp đi lờn, nhu cầu về cỏc khiển trỡnh kiểm thử tỏch biệt ớt dần. Trong thực tế, nếu hai mức đỉnh của cấu trỳc chương trỡnh được tịch hợp theo kiểu trờn xuống thỡ số cỏc khiển trỡnh cú thể được giảm bớt khỏ nhiều và việc tớch hợp cỏc chựm được đơn giản hoỏ đỏng kể.
H4.6 Tớch hợp dưới lờn
Phạm vi kiểm thử túm tắt cỏc đặc trưng chức năng, sự hoàn thiện và thiết kế bờn trong cần được kiểm thử riờng biệt, gắn kốm cỏc tiờu chuẩn để hoàn tất từng giai đoạn, cỏc ràng buộc lịch biểu.
Phần kế hoạch kiểm thử mụ tả chiến lược chung cho việc tớch hợp, việc kiểm thử chia thành cỏc giai đoạn và khối, đề cập tới cỏc chức năng riờng của phần mềm.
Dàn bài đặc tả
I. Phạm vi kiểm thử II. Kế hoạch kiểm thử
A. Cỏc giai đoạn và khối kiểm thử B. Lịch biểu
C. Tổng phớ phần mềm D. Mụi trường và tài nguyờn
III. Thủ tục kiểm thử n. (mụ tả việc kiểm thử cho khối n) A. Thứ tự thớch hợp
1. Mục đớch
2. Modul cần kiểm thử
B. Kiểm thử đơn vị cho cỏc modul khối 1. Mụ tả kiểm thử cho modul m
2. Mụ tả tổng phớ phần mềm 3. Kết quả dự kiến N H ể M 1 N H ể M 3 NHểM 2
C. Mụi trường kiểm thử
1. Cụng cụ hay kỹ thuật đặc biệt 2. Mụ tả tổng phớ phần mềm D. Dữ liệu trường hợp kiểm thử E. Kết quả dự kiến cho khối n IV. Kết quả kiểm thử thực tế V. Tham khảo
Vớ dụ: Kiểm thử tớch hợp cho một hệ thống CAD được chia thành cỏc giai đoạn kiểm thử sau:
- Giao diện người dựng: chọn chỉ lệnh, tạo ra việc vẽ, biểu diễn hiển thị, xử lý lỗi và biểu diễn lỗi.
- Thao tỏc và phõn tớch dữ liệu: tạo ra ký hiệu, tầm hướng, quay, tớnh cỏc tớnh chất vật lý. - Xử lý và sinh hiển thị: hiển thị hai chiều, hiển thị ba chiều, đồ thị và sơ đồ
- Quản trị cơ sở dữ liệu: thõm nhập, cập nhật, tớnh toàn vẹn, hiệu năng
Trong mỗi giai đoạn và cỏc giai đoạn con đều nờu ra cỏc chức năng bờn trong phần mềm, núi chung cú thể liờn quan đến một lĩnh vực riờng của cấu trỳc chương trỡnh. Do đú, cỏc khối chương trỡnh (nhúm cỏc modul) được tạo ra để tương ứng với từng giai đoạn.
Cỏc tiờu chuẩn sau đõy và cỏc phộp kiểm thử tương ứng được ỏp dụng cho tất cả cỏc giai đoạn kiểm thử:
Tớnh thống nhất giao diện: Cỏc giao diện bờn trong và bờn ngoài được kiểm thử khi từng
modul (hay nhúm modul) được tổ hợp vào trong cấu trỳc.
Hợp lệ chức năng: Tiến hành cỏc kiểm thử đó được thiết kế để phỏt hiện ra lỗi chức năng.
Nội dung thụng tin: Tiến hành cỏc kiểm thử đó được thiết kế để phỏt hiện ra lỗi liờn kết
với cấu trỳc dữ liệu cục bộ hay toàn cục được sử dụng.
Sự hoàn thiện: Tiến hành cỏc kiểm thử đó được thiết kế để kiểm chứng cỏc cận hoàn
thiện đó được thiết lập trong thiết kế phần mềm.
Những tiờu chuẩn này và cỏc kỹ thuật kiểm thử liờn kết với chỳng được trỡnh bày trong bản Đặc tả kiểm thử.
2.2.3.3 Kiểm thử hợp lệ
Vào cao điểm của việc kiểm thử tớch hợp, phần mềm được lắp rỏp hoàn chỉnh thành một bộ, cỏc lỗi giao tiếp đó được phỏt hiện và sửa chữa, và loạt kiểm thử cuối cựng được bắt đầu – kiểm thử hợp lệ.
a) Tiờu chuẩn kiểm thử hợp lệ
Cả hai bản kế hoạch và thủ tục đều được thiết kế để đảm bảo rằng tất cả cỏc yờu cầu chức năng đều được thoả món, tất cả cỏc hiệu năng đều đạt được, tài liệu đỳng và cỏc yờu cầu khỏc cũng được đỏp ứng (tớnh khả chuyển, tớnh tương hợp, khắc phục lỗi, bảo trỡ)
Sau khi tiến hành mỗi trường hợp kiểm thử, một trong hai điều kiện cú thể tồn tại: (1) Cỏc đặc trưng chức năng và hiệu năng đỳng với đặc tả và được chấp nhận
(2) Một độ lệch so với đặc tả được phỏt hiện ra và một danh sỏch cỏc khiếm khuyết được tạo ra.
b) Xem xột cấu hỡnh
Một phần tử quan trọng của tiến trỡnh hợp lệ hoỏ là xột duyệt cấu hỡnh. Mục đớch để đảm bảo rằng tất cả cỏc phần tử của cấu hỡnh phần mềm đó được phỏt triển đỳng đắn và được phõn loại kốm theo mụ tả chi tiết cần thiết để hỗ trợ cho giai đoạn bảo trỡ vũng đời phần mềm. Việc xột duyệt cấu hỡnh đụi khi được gọi là kiểm toỏn
c) Kiểm thử alpha và beta
Phần lớn những người xõy dựng sản phẩm phần mềm đều dựng một tiến trỡnh gọi là: Kiểm thử alpha và beta để phỏt hịờn ra những lỗi mà dường như chỉ người dựng cuối cựng mới cú thể tỡm ra.
Kiểm thử alpha được khỏch hàng tiến hành tại cơ quan của người phỏt triển. Phần mềm được dựng theo sự sắp đặt người phỏt triển “nhỡn qua vai” người dựng và ghi lại những và cỏc vấn đề sư dụng. Kiểm thử alpha được tiến hành trong một mụi trường cú kiểm soỏt.
Kiểm thử beta được diễn ra tại một hay nhiều cơ quan của khỏch hàng, được tiến hành bởi những người dựng cuối cựng, người phỏt triển núi chung khụng cú mặt. Khỏch hàng ghi lại tất cả cỏc vấn đề (thực hay tưởng tượng) gặp phải trong khi kiểm thử beta và bỏo cỏo lại tất cả cỏc vấn đề đú cho người phỏt triển một cỏch đều đặn. Kết quả là, người phỏt triển sửa đổi cỏc lỗi được bỏo cỏo và chuẩn bị đưa ra sản phẩm phần mềm cho toàn bộ cơ sở khỏch hàng.