- Quá trình tích hợp và kiểm thử hệ thống được thực hiệntheo cách từ dưới lên.+ Đầu tiên kiểm thử các môđun nhỏ,+ Kế tiếp là các phân hệ, + Toàn bộ hệ thống.. + Có thể có nhiều thứ tự tí
Trang 1GIAI ĐOẠN KIỂM THỬ HỆ THỐNG
ThS Nguyễn Khắc Quốc
IT Department – Tra Vinh Univ ersity
Trang 2Mục đích
- Tích hợp tất cả các phần cùng hoạt động
- Kiểm tra cặn kẽ tất cả các phần, các môđun theo các chứcnăng đã ghi trong bản thiết kế bao gồm cả phần cứng vàphần mềm
Các công việc chính
- Tích hợp và kiểm thử từng phân hệ và các dự án con
- Tích hợp và kiểm thử đối với toàn bộ hệ thống lớn
Trang 3- Biên bản, tài liệu lưu giữ kết quả kiểm thử phần mềm (thứ
tự kiểm thử, các phép thử và dữ liệu kiểm thử)
- Sản phẩm sau khi kiểm thử là toàn bộ hệ thống đã làm việctốt, đã sữa lỗi xong
-Trong giai đoạn này, quản lý dự án thuần tuý từ khía cạnh kỹthuật
- Các nhà quản lý cần phải đôn đốc sao cho mỗi phân hệđược cài đặt đúng tiến độ và phối hợp nhịp nhàng
Trang 4- Quá trình tích hợp và kiểm thử hệ thống được thực hiệntheo cách từ dưới lên.
+ Đầu tiên kiểm thử các môđun nhỏ,+ Kế tiếp là các phân hệ,
+ Toàn bộ hệ thống
-Giai đoạn kiểm thử hệ thống chia làm 2 bước
+ Các phân hệ được tích hợp lại thành một môđunlớn hơn, các môđun này lại được ghép lại cho đến khi toàn
bộ hệ thống được tạo dựng
+ Hệ thống được kiểm thử nhằm kiểm tra xem các
Trang 5- Khó có thể ước lượng cần phải mất bao nhiêu thời gian đểkiểm thử toàn bộ hệ thống.
- Khó biết trước được sẽ có bao nhiêu lỗi và mỗi lỗi cần baonhiêu thời gian để xử lý
- Việc kiểm thử hệ thống thường chiếm 1/8 tổng thời gian đã
Trang 6Một câu hỏi đặt ra đối với chuyên gia quản lý dự án côngnghệ thông tin là:
- Làm thế nào để ráp nối một hệ thống lớn có nhiều chươngtrình con và nhiều môđun?
+ Không nên viết xong toàn bộ chương trình mới liênkết chúng lại, mà trong nhiều trường hợp nên tích hợp hệthống theo kiểu "từng mẫu một"
+ Có thể có nhiều thứ tự tích hợp các môđun, nhưngtrong mọi trường hợp các thứ tự này phải được trù tính từtrước trong giai đoạn đặt kế hoạch kiểm thử hệ thống
Trang 7Nội dung kế hoạch kiểm thử hệ thống
- Lịch trình kiểm thử, các nhân viên tham gia; các yêu cầu vềnhân lực và dữ liệu kiểm thử
- Kiểm tra cấu hình, tích hợp hệ thống và các công cụ trợgiúp kiểm thử được sử dụng
- Thứ tự kiểm thử các môđun và chương trình
- Danh sách các phép kiểm thử phải thực hiện tại mỗi bướctích hợp dữ liệu kiểm thử
- Danh sách các dữ liệu "sai" và các thủ tục cần thử nghiệm
- Kiểm thử hồi qui
- Tải hệ thống và các dữ liệu thử và các kiểm thử chất lượnghoạt động
- Danh sách các sản phẩm bàn giao (dữ liệu, tài liệu…)
Trang 86.3.1 Thứ tự tích hợp phần mềm
Có thể tích hợp theo một trong 3 cách như sau:
- Tích hợp từ trên xuống theo sơ đồ thiết kế mức trên của hệ thống
Trang 9Ví dụ: sơ đồ thiết kế mức trên - Đầu tiên ghép nối các môđun
trong phần thực đơn.
- Khi phần Menu làm việc, các chương trình gắn với phân hệ Thu-Thập-Dữ liệu được tích hợp, sau đó nối thêm vào
bộ quản lý, sau đó sang phầ n Thu-Thập-Dữ liệu, trình diễ n sau khi tích hợp và cứ như vậy đối với các môđun khác.
Trang 10- Cách tiếp cận dưới lên và "cuống" chương trình
- Bắt đầu từ môđun xử lý tệp, sau đó chuyển sang các môđunthu thập dữ liệu, cập nhật và tạo sinh báo cáo
- Môđun “Xử-Lý-Tệp” là môđun đơn giản nhất, trong khi đómôđun “Thực đơn” là phức tạp nhất
- Vấn đề nảy sinh là: Khi cần tích hợp một thành phần chươngtrình nào đó mà chưa có trong tay các thành phần khác, lậptrình viên buộc phải "tỉa" chúng và thay vào đó bằng các thủ tụcgiả, mô phỏng sự xuất hiện của những thành phần này
Trang 11- Đầu tiên môđun “Thực đơn” được tích hợp,
- Các môđun khác: Thu thập Dữ liệu, cập nhật, tạo lập báo cáođược thay bằng các thủ tục giả phục vụ cho việc kiểm thử
- Chẳng hạn, thủ tục “Thu thập dữ liệu” được thay bằng mộtthủ tục đơn giản chỉ gồm 4 dòng, mô phỏng đã nhận được điềukhiển, các tham số vào, kết xuất một bản ghi nào đó từ cơ sở
dữ liệu
- Gửi trở lại bản ghi giả vào vùng đệm
Trang 12Sơ đồ thiết kế mức trên
Trang 13Các chức năng con và các phiên bản theo giai đoạn
- Phương pháp này thường tích hợp với cách làm "Ra sảnphẩm càng nhanh càng tốt"
Ví dụ:
- Trong thiết kế ban đầu có thể có tới 20 thực đơn khác nhau,
50 thành phần thu thập dữ liệu về 50 môđun cập nhật dữ liệucùng 25 báo cáo
- Làm thế nào có thể tạo ra một phiên bản đầu tiên của hệthống chỉ gồm 10 thực đơn, 20 môđun thu thập dữ liệu, 10 báocáo?
+ Hệ thống thu gọn này được chấp nhận và cài đặt chongười sử dụng ở giai đoạn 1
+ Sau đó lại tiếp tục lập trình cho các môđun thu thập dữliệu, thực đơn, cập nhật dữ liệu và báo cáo để tạo ra phiên bản
ở giai đoạn 2
Trang 146.3.2 Quá trình tích hợp hệ thống (phần mềm)
- Những kiểm thử đầu tiên trong quá trình xây dựng sản phẩm,
sẽ do các chuyên gia phát triển hệ thống chịu trách nhiệm
- Họ còn phải tạo ra các bộ kiểm thử bao gồm các thủ tục kiểmthử và dữ liệu, nhằm kiểm tra một cách kỹ lưỡng toàn bộ cácmôđun
- Khi đưa chương trình vào tích hợp, lập trình viên phải đưa ramột tập các kiểm thử then chốt phục vụ cho việc tích hợp hệthống
Trang 15Ví dụ, thứ tự kiểm thử và tích hợp một hệ thống giả địnhđược đưa cho trong sơ đồ sau:
Trang 166.3.3 Một vài giải pháp
Giải pháp 1: Đưa ra các chương trình con có tất cả các
chức năng cần thiết
Giải pháp 2: Đưa ra các phiên bản theo giai đoạn Sau đó,
dần dần thêm vào một số đặc trưng cho các phiên bản sau
Giải pháp 3: Làm mẫu thử của các phần.
Giải pháp 4: Gối lên giai đoạn thực hiện.
Sau khi xây dựng xong một môđun nào đó tích hợp nó vào
hệ thống, tiến hành kiểm thử, sau đó tiếp tục chuyển sang
Trang 176.3.4 Thứ tự tích hợp phần cứng
- Quá trình tích hợp phần cứng được tiến hành từ dưới lên
- Đầu tiên, thực hiện ở mức thấp nhất, sau đó cứ tích hợpdần dần lên các mức trên:
+ Phần cứng máy khách (client) + Phần cứng máy phục vụ (server)
+ Phần cứng mạng+ Phần cứng mạng + máy phục vụ+ Phần cứng mạng + máy phục vụ + máy khách+ Phần cứng mạng + máy phục vụ + máy khách
(mạng cục bộ)
+ Phần cứng mạng + máy phục vụ + máy khách
(mạng rộng).
Trang 186.3.5 Thứ tự tích hợp hệ thống (phần cứng + phần mềm)
- Đối với các phần mềm phức tạp tiến hành kiểm thử và tích
hợp theo kiểu từ trên xuống dưới, (phần chính trước, phần
Trang 20nào đó xảy ra, nhưng chưa biết lý do, cần phải làm ngược
(qui hồi) quá trình kiểm thử và tích hợp để biết nó xuất hiện
trong môđun nào hay phần ghép nối nào giúp các môđun
- Nếu kiểm thử ở mức chạy lần 3, trên màn hình vẽ ta thấyrằng có thể kiểm thử ABCD sai
- Như vậy, có thể do các môđun A, B, C hay D
- Nếu các lập trình viên không khoanh vùng được lỗi ở đầuthì phải trở lại các bước trước và chạy thử lại có nghĩa là nó
Trang 22- Dữ liệu kiểm thử được chọn sao cho quá trình thực hiện
phải đi qua tất cả các liên kết lôgic (lời gọi) giữa các thủ tục
hoặc các lời gọi giữa chúng
- Mỗi dữ liệu kiểm thử gắn với một chức năng nào đó của hệthống cần rà soát
Trang 23- Kiểm thử hệ thống có thể cần tới sự tham gia của người sửdụng đầu cuối, cùng với các chuyên gia lập trình
- Cần phải bố trí lịch trình cụ thể và rõ ràng, trong đó chỉ rõ khinào kiểm tra gì, có ai tham gia
- Sự phân chia công việc cần phải phân định rõ trách nhiệm
từng thành viên (ai, làm gì), chuẩn bị trước khi bắt tay vào
công việc
- Người sử dụng có thể không tham gia vào các khâu kiểmthử quá sâu về kỹ thuật, tuy vậy họ đóng vai trò khá quantrọng khi kiểm thử với các dữ liệu thực tế cỡ lớn
Trang 24- Các kết quả kiểm thử hệ thống còn được các chuyên gia hệthống dùng để xây dựng các thống kê về lỗi và cách xử lý.
- Khó có thể xây dựng một hệ thống không sai một chút nàocả
- Do vậy, các tài liệu này sẽ giúp lập trình viên ngày càngnâng cao chất lượng hệ thống và ngăn ngừa những lỗi trầmtrọng dẫn tới những hậu quả xấu do những xử lý vô tình củangười sử dụng
- Các thông tin được tích luỹ bao gồm các thống kê lỗi về:
+ Phần cứng, phân hệ, các môđun+ Ngôn ngữ
+ Ai là người chịu trách nhiệm+ Lỗi khi chạy các ví dụ thực tế
Trang 25- Sau khi hệ thống tích hợp xong, tiến hành chạy thử một tậpchi tiết các kiểm thử để đảm bảo rằng các chức năng của hệthống đã đạt được như mong muốn.
- Thứ tự các kiểm thử lần cuối một cách cẩn thận:
- Nếu có một thay đổi nào đó, dẫu là chút ít, về phần cứng,phần mềm, môi trường và nhân sự, phải chạy thử một sốkiểm thử đã dùng trước đó cho đến khi tích hợp hệ thống
- Đưa ra một tập các kiểm thử thực tế nhằm mô phỏng cáchoàn cảnh thực tế khi sử dụng hệ thống
- Khi hệ thống phục vụ cho nhiều người sử dụng khác nhau
Có thể nhờ họ thao tác thực tế để kiểm tra
Trang 26- Tiến hành thử nghiệm các lệnh hay dùng nhất để xác địnhđược mức độ tải của hệ thống.
- Những thao tác căn bản như bật máy, sao lưu, lưu trữ phảiđược kiểm tra đầu tiên
- Tốt nhất là nhờ người sử dụng giúp cho công đoạn này
- Tìm cách gây quá tải đối với hệ thống để thấy được các yêucầu về chất lượng hệ thống đã đạt được
- Thử dùng các dữ liệu "sai" để xem hệ thống có gây ra dịthường gì không, chẳng hạn dữ liệu vào bị sai quy cách, vượtquá giới hạn cho phép
Trang 27- Kiểm tra các tài liệu người sử dụng.
- Đối với các dự án vừa và nhỏ, người chịu trách nhiệm tíchhợp và kiểm thử hệ thống phải là người chủ nhiệm hoặc điềuhành dự án
- Đối với các dự án lớn hoặc các dự án đặc biệt, có thể đề cửmột người nào đó độc lập, chịu trách nhiệm kiểm thử chi tiếtlần cuối
- Đôi lúc người ta gọi quá trình này là kiểm tra và đánh giá
- Họ sẽ xem xét những điểm đặc biệt có thể sai và chỉ kiểmtra những "phần cứng" trong mỗi chương trình và do vậy chỉxét những cái có thể hoạt động
- Trong khi đó mỗi chuyên gia kiểm thử siêu hạng còn phải cókhả năng tham chiếu đến các chức năng không hoạt động
- Hơn nữa, các chuyên gia kiểm thử độc lập sẽ kiểm thử hệthống giống như người sử dụng đầu cuối sẽ làm
Trang 28- Kế hoạch kiểm thử chấp nhận phải nêu được những dự kiến
và những gì trục trặc phát hiện được phải sửa ngay
Trang 296.9.1 Hệ quản lý mã (Code Management System CMS)
- Hệ QLCT có thể trợ giúp cho chuyên gia phát triển hệ thốngthông qua điều khiển và lần vết các thay đổi mã chương trìnhkhông được phép
- Giúp nhiều người có thể phát triển hệ cùng một lúc
- Giúp khống chế và kiểm tra các thay đổi mã chương trìnhkhông được phép
- Ngăn chặn những thay đổi không mong muốn làm chochương trình từ chỗ hầu như đã đạt như mong muốn đến chỗkhông còn gì và trợ giúp khôi phục phần bản cũ
Trang 30- Cho phép ngăn chặn mọi loại hình thay đổi, cảnh báo cácchuyên gia phát triển hệ thống rằng có một người khác hiệnđang làm việc với một môđun nào đó và xảy ra đụng độ giữacác thay đổi.
- Điểm hữu ích lớn nhất của hệ QLCT là dễ dàng truy hồi: hệQLCT không bao giờ tự xoá các dấu vết thay đổi trước đó
- Nếu có một sự thay đổi trên mã nguồn thì nó sẽ tiến hànhsửa đổi tệp có tên là thay đổi chứa các lệnh thay đổi giốngnhư các thay đổi khi biên tập mã nguồn
- Các tệp thay đổi sẽ tiếp lên chương trình mã nguồn
Trang 31- Các thay đổi có thể áp dụng liên tiếp lên mã nguồn, nhưngnếu thay đổi gây trục trặc đối với phần nào đó, đã làm trước
đó, người quản lý dự án có thể truy hồi một cách dễ dàng tớimức trên của mã chương trình
- Khi đó lịch sử các thay đổi với một môđun nguồn hay một
mức nào đó (tập các mã nguồn kích hoạt ở thời điểm nào đó)
hay toàn bộ hệ thống sẽ được phơi ra - thông tin này sẽ đượcdùng để tạo ra các thống kê chi phí, phục vụ cho các ướclượng các hệ tiếp theo
Trang 32- Hệ quản lý kiểm thử cho phép xác định lập các thủ tục và dữliệu thử cũng như các kết quả mong muốn hệ QLKT chạy cácphép thử và chỉ ra kết quả nào đó không đáp ứng như mongmuốn.
- Với các hệ loại tốt, có thể tạo ra các tệp kiểm thử (thủ tục),
rồi lưu và so sánh kết quả nhận được
- Hệ QLKT cũng cho phép kiểm thử qui hồi một cách đơngiản
- Hệ QLKT cũng cho phép tổ chức, ghi tóm lược và kiểm trakết quả kiểm thử một cách dễ dàng
- Khi cần đến các nguyên nhân của các lỗi gặp phải, các giải
Trang 336.9.3 Hệ phân tích mã nguồn (Source Code Analyzer)
- Hệ phân tích mã nguồn là công cụ dùng để tìm ra các xâu ký
tự xuất hiện trong nhiều tệp nguồn
- Có thể tìm tất cả các xuất hiện của một tên biến nào đó haytên một thủ tục nào đó
- Điều này khá tiện lợi khi có một biến nào đó bị nghi lànguyên nhân gây ra lỗi ở một điểm nào đó hay là tất cả lỗi gọicủa một thủ tục nào đó phải dõi vết
Trang 346.9.4 Hệ phân tích bao quát hiệu năng (Performance Coverage Analyzer)
- Thực hiện theo dõi vết, các phần trong hệ thống được thựchiện và tần suất của chúng
- Việc xác định này được dùng để nâng cao chất lượng hoạtđộng, chẳng hạn nên tối ưu hoá các phần được sử dụng vớitần suất cao nhất
- Dõi vết này nhằm bảo đảm rằng các kiểm thử đã đi qua tất
cả các phần trong hệ
-Hệ này còn có thể dùng để phân tích các giao diện chủ yếu
từ hệ thống với hệ điều hành như lời gọi các chức năng
Trang 356.9.5 Hệ quản lý Môđun (Môđun Management System)
-Tự động hoá việc xây dựng toàn bộ bộ phần mềm, cho phépdịch, kết quả các mã nguồn cũng như ghép nối các tệp kiểmthử phù hợp, dữ liệu kiểm thử và tài liệu
- Hệ này cho phép tiết kiệm một lượng thời gian khá lớn khikiểm thử hệ thống vì nó cho phép chỉ lập trình các môđun bịthay đổi so với lần trước
Trang 36Bảng kê công việc
Trang 371 Tại sao phải biên soạn kế hoạch kiểm thử hệ thống? Tại saophải biên sọan trước khi lập trình?
2 Giá cần tích hợp các môđun A, B, C Các kiểm thử A1, A2
đã thành công đối với môđun A, các kiểm thử B1, B2 đã thànhcông đối với môđun B, kiểm thử C1, C2 đối với môđun C Cácmôđun A, B được tích hợp thành AB và các kiểm thử A1, A2,B1, B2, AB1 đã tốt môđun C được ghép vào để tạo thành ABC,nhưng khi đó kiểm thử A1 trở thành sai Có phải là trục trặc tạimôđun A và C? hãy lý giải
3 Tại sao người kiểm thử độc lập lại khách quan hơn là ngườiphát triển hệ thống?
4 Các mốc quan trọng trong giai đoạn kiểm thử