Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 84 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
84
Dung lượng
4,34 MB
Nội dung
MỞ ĐẦU Lý chọn đề tài Làm luận văn thạc sỹ hội để học viên hệ thống lại kiến thức thu trình học, muốn tìm hiểu sâu số kỹ thuật kiểm định phần mềm, có hai kỹ thuật kiểm định kỹ thuật kiểm định hộp đen (black box testing) kỹ thuật kiểm định hộp trắng (while box testing) Ngày nay, tất nước phát triển phụ thuộc chủ yếu vào hệ thống phần mềm Và ngày có nhiều hệ thống điều khiển phần mềm Do đó, việc xây dựng, bảo trì đặc biệt kiểm định chất lượng hệ thống phần mềm yêu cầu cần thiết kinh tế toàn cầu quốc gia Hiện nay, lỗi phần mềm nguy hiểm, gây thiệt hại không nhỏ vật chất Trong bối cảnh hầu hết ngành kinh tế quan trọng sử dụng rộng rãi phần mềm Chất lượng phần mềm mục tiêu chung mà đối tượng liên quan việc sử dụng (người dùng), quản lý phát triển (người xây dựng, lập trình) đặt lên vị trí hàng đầu đưa vấn đề phát triển phần mềm Chất lượng phần mềm khái niệm mang tính chất mơ hồ, ước lượng; với phát triển ngành công nghệ thông tin vài thập kỷ, kết nghiên cứu để đạt đến hoàn thiện việc phát triển gặt hái nhiều kết quả, chuẩn hoá tiêu chuẩn phát triển phần mềm tiêu chuẩn ISO9000, ISO9001 ISO9004, SEI-CMM (Software Engineering Instistute - Capability Maturily Model) Trong mô hình phát triển dù với quy mô bé hay lớn, đơn giản hay phức tạp vấn đề kiểm định phần mềm đặt lên hàng đầu, có tầm quan trọng không so với vị trí phân tích phát triển, thực song song, xuyên suốt trình phát triển hệ thống phần mềm Hiện nay, việc áp dụng quy trình quản lý trình sản xuất phần mềm thực chặt chẽ Tuy nhiên, bên cạnh vị trí thiết kế lập trình, vị trí quản lý, điều khiển, kiểm tra chất lượng thực kiểm tra chất lượng phần mềm chưa quan tâm mức nội dung học tập chủ yếu tập trung vào việc tìm hiểu xây dựng phần mềm, riêng nội dung kiểm định lại giới thiệu sơ lược chức nhiệm vụ chính, hầu hết kỹ thuật kiểm định lại cá nhân tìm hiểu tham khảo thêm làm việc Đề tài nhằm mục đích tìm hiểu kỹ thuật kiểm định hộp trắng khả áp dụng việc kiểm định chất lượng phần mềm, giúp nâng cao hiệu sử dụng phầm mềm sản xuất góp phần nhỏ bé vào phát triển kinh tế đất nước Mục tiêu nhiệm vụ nghiên cứu - Mục tiêu luận văn tập trung nghiên cứu, tìm hiểu, đánh giá nguyên lý, kế hoạch kỹ thuật kiểm định phần mềm - Thiết kế trường hợp kiểm định áp dụng cho số chương trình cụ thể viết ngôn ngữ lập trình C Đối tượng phạm vi nghiên cứu Qui trình chất kỹ thuật kiểm định hộp đen kiểm định hộp trắng Kế hoạch kiểm định phần mềm Đặc tả việc thiết kế kiểm định, xây dựng chương trình kiểm định Phương pháp nghiên cứu - Nghiên cứu, tìm hiểu kỹ thuật, kế hoạch kiểm định phần mềm - Sử dụng phương pháp kiểm định theo kỹ thuật hộp trắng nghiên cứu, thiết kế kiểm định cho chương trình cụ thể, xây dựng chương trình kiểm định Dự kiến kết - Thiết kế kiểm tra sử dụng kỹ thuật hộp trắng cho chương trình cụ thể viết ngôn ngữ lập trình C - Tạo tài liệu kiểm định (đặc tả trường hợp kiểm định kết kiểm định.) Ý nghĩa khoa học thực tiễn Luận văn Kết nghiên cứu góp phần làm tài liệu tham khảo cho đối tượng sinh viên, nhà khoa học nghiên cứu kiểm định, công ty sản xuất phần mềm dần tiến tới việc đưa qui trình kiểm định phần mềm thành qui trình bắt buộc dự án phát triển phần mềm Tên đề tài “Kiểm định chương trình ngôn ngữ C kỹ thuật hộp trắng.” Bố cục Luận văn Toàn nội dung Luận văn chia thành chương sau: Chương 1: Vị trí vai trò kiểm định phần mềm Chương 2: Một số kỹ thuật kiểm định phần mềm Chương 3: Chiến lược kiểm định phần mềm Chương 4: Áp dụng kỹ thuật kiểm tra hộp trắng CHƯƠNG VỊ TRÍ VÀ VAI TRÒ CỦA KIỂM ĐỊNH PHẦN MỀM 1.1 Quy trình phát triển kiểm định phần mềm 1.1.1 Quy trình phát triển phần mềm Phần mềm (hệ thống) bao gồm nhiều chương trình cài đặt máy tính nhằm thực nhiệm vụ tương đối độc lập phục vụ cho ứng dụng cụ thể chạy máy tính áp dụng thực họat động kinh tế, quốc phòng, văn hóa, giáo dục giải trí,… Trong kỹ nghệ phát triển phần mềm, tạo phần mềm có ứng dụng rộng rãi, để phục vụ xã hội thu lợi nhuận mục tiêu hàng đầu doanh nghiệp phần mềm Tuy nhiên, phát triển dự án công nghệ thông tin, người quản lý dự án phải đặt mục tiêu là: “làm để hoàn thành dự án thời hạn, đáp ứng yêu cầu đặt người sử dụng quan trọng không vượt phần kinh phí dành để phát triển dụ án này.” Mục tiêu từ lâu trở thành đề tài nóng bỏng kỹ nghệ phần mềm, câu hỏi lớn đặt cho nhà quản lý dự án phần mềm Khó mà biết dự án thành công hay thất bại? Đó thực toán không đáp số Không có đảm bảo thành công công trình tiến hành Vậy có giải pháp giúp tránh yếu tố dẫn đến thất bại việc phát triển dự án không? Đi tìm đáp số cho câu hỏi dẫn đến việc đời khái niệm chu kỳ phát triển dự án đặc biệt kỹ nghệ phần mềm cách quản lý giai đoạn phát triển chu kỳ Một mô hình phát triển phần mềm thường trải qua giai đoạn sau Giai đoạn quy hoạch Trong giai đoạn dự án nghiên cứu học hỏi qua việc thu thập thông tin (phỏng vấn người sử dụng nhân viên bảo quản chương trình, nghiên cứu tài liệu quan sát trường) để thu thập yêu cầu đặt cho chương trình Điều quan trọng cần rút giai đoạn kết thúc là: - Tính khả thi công trình gồm: Khả thi mặt kỹ thuật , tác vụ kinh tế Liệu công trình thực không có phải giải pháp kỹ thuật giải pháp cho công trình hay không? - Một hồ sơ hoạch định yêu cầu phạm vi công trình Giai đoạn xác định Khi hoàn thành giai đoạn phải có: hồ sơ nêu rõ ràng công trình làm gì, làm, làm cho làm Sự bổ nhiệm giám đốc dự án, chuyên gia kỹ thuật bao gồm kiến trúc, thiết kế phần mềm, sở liệu vai trò trách nhiệm họ phát triển dự án Đối tượng tham gia giai đoạn gồm: người chịu trách nhiệm triển khai dự án (phía khách hàng), nhóm quản lý dự án (phía công ty phát triển), nhân viên nghiệp vụ (người sử dụng), chuyên viên tin học (người khảo sát) Giai đoạn phân tích Việc hiểu biết đầy đủ yêu cầu phần mềm điều chủ chốt cho thành công nỗ lực phát triển phần mềm Nhiệm vụ người phân tích tiến trình khám phá làm mịn, mô hình hoá đặc tả Giai đoạn có tham gia người phát triển khách hàng (người sử dụng) Kết giai đoạn danh sách chi tiết yêu cầu người sử dụng Đồng thời liệt kê chi tiết liệu liên quan chương trình Giai đoạn thiết kế Trong giai đoạn phân tích dùng để trả lời cho câu hỏi dự án làm gì, làm, làm cho giai đoạn thiết kế dùng để phương hướng cách phát triển dự án Giai đoạn nêu đòi hỏi kỹ thuật thiết kế công cụ để xây dựng phần mềm chẳng hạn Net, C#, C++, Windows hay Unix cho hệ điều hành, Oracle hay MS SQL Server cho sở liệu Giai đoạn quan trọng có ảnh hưởng đến giai đoạn sau xây dựng (lập trình) cài đặt phần mềm Đối tượng tham gia giai đoạn này: nhóm quản lý dự án, chuyên viên tin học Giai đoạn xây dựng Giai đoạn lúc kỹ sư thiết kế lập trình viên dựa thảo từ giai đoạn thiết kế thảo chương trình phần mềm cần thiết cho hoàn thành dự án qua thoả mãn yêu cầu người sử dụng Ngoài có tham gia chuyên viên kiểm tra duyệt xét (Quality Assurance) phần mềm giai đoạn nhằm đảm bảo chất lượng sản phẩm phần mềm Giai đoạn kiểm định Tiến trình kiểm định bao gồm việc + Phát sửa lỗi phần logic bên chương trình hay gọi lỗi lập trình + Kiểm tra xem phần mềm có hoạt động mong muốn không, tức phát sửa lỗi chức thiếu hụt, sai sót chức năng; kiểm tra xem phần mềm có đảm bảo tính hiệu thực hay không Giai đoạn bảo trì Bao gồm công việc sửa lỗi phát sinh áp dụng chương trình thích ứng với thay đổi môi trường bên (hệ điều hành mới, thiết bị ngoại vi mới, yêu cầu người dùng) yêu cầu bổ sung chức hay nâng cao hiệu cần có Giai đoạn cài đặt Đây giai đoạn cuối chu kỳ phát triển dự án phần mềm Giai đoạn đỏi hỏi quy hoạch việc chuyển giao sản phẩm tới người sử dụng việc cài đặt sản phẩm môi trường làm việc người sử dụng Trong giai đoạn hệ thống sử dụng thức Người sử dụng có nhiệm vụ ghi nhận phản ánh tất vấn đề khó khăn trở ngại trình sử dụng phần mềm tới nhóm quản lý dự án để khắc phục kịp thời cho biết định chấp nhận hay từ chối sản phẩm làm qua khâu kiểm tra duyệt xét xem chương trình có thoả mãn đòi hỏi theo hồ sơ lập từ giai đoạn xác định phân tích Đối tượng tham gia giai đoạn này: Nhóm quản lý dự án, người sử dụng, chuyên viên tin học Xác định Hình 1.1: Quy trình phát triển phần mềm 1.1.2 Lỗi phần mềm Có nhiều định nghĩa khác lỗi phần mềm, nhìn chung sau: “Lỗi phần mềm không khớp chương trình đặc tả nó.” Dựa vào định nghĩa, thấy lỗi phần mềm xuất theo ba dạng sau: Sai: Sản phẩm xây dựng khác với đặc tả Thiếu: Một yêu cầu đặc tả lại sản phẩm xây dựng Thừa: Một yêu cầu đưa vào sản phẩm mà đặc tả Cũng có trường hợp yêu cầu thuộc tính người dùng chấp nhận khác với đặc tả nên coi có lỗi Lỗi xảy tất công đoạn từ “Mô tả yêu cầu”, “Thiết kế” đến “Lập trình” Từ công đoạn chuyển sang công đoạn khác thường nảy sinh sai sót (do dư thừa thiếu theo mô tả yêu cầu) Đến công đoạn kiểm định phát hậu (các kết không mong muốn) Quá trình sửa lỗi bao gồm “phân loại lỗi”, “cô lập lỗi” (tìm nguyên nhân nơi gây lỗi), đề “giải pháp sửa lỗi” cuối khắc phục lỗi 1.1.3 Tại phần mềm có lỗi Khác với cảm nhận thông thường, lỗi xuất nhiều lập trình Nhiều nghiên cứu thực dự án từ nhỏ đến dự án lớn kết giống Số lỗi đặc tả gây nhiều nhất, chiếm khoảng 80% Có số nguyên nhân làm cho đặc tả tạo nhiều lỗi Trong nhiều trường hợp, đặc tả không viết Các nguyên nhân khác đặc tả không đủ cẩn thận, hay thay đổi, chưa phối hợp tốt toàn nhóm phát triển Sự thay đổi yêu cầu khách hàng nguyên nhân dễ gây lỗi phần mềm Khách hàng thay đổi yêu cầu không cần quan tâm đến tác động sau thay đổi yêu cầu phải thiết kế lại, lập lại kế hoạch, làm lại việc hoàn thành Nếu có nhiều thay đổi, khó nhận biết hết phần dự án phụ thuộc phần không phụ thuộc vào thay đổi Nếu không giữ vết thay đổi dễ phát sinh lỗi Ví dụ: Trong đặc tả toán phân số: Với việc đặc tả phi hình thức: Phân số cặp t/m, t số nguyên, m số tự nhiên lớn 0; t gọi tử số, m gọi mẫu số phân số Đặc tả hình thức đặc tả sử dụng ký hiệu toán học để mô tả Một phân số đặc tả sau: + Phân số = {(t,m) | t Z, m N+} Trong đó: N = {0, 1, 2, 3, …} N+ = {1, 2, 3, …} Z = {0, 1, 2, 3, …} (*) + Phép chia hai phân số: (t1,m1):(t2,m2) = Reduce(t1 m2, t2 m1), Reduce(t, m) = (t/d, m/d) với d = gcd(t, m) Hàm gcd hàm tìm ước số chung lớn hai số tự nhiên Đặc tả phép chia sai với đặc tả phân số (*) Chẳng hạn, thực chia hai phân số (1,3):(-2,5) = (5,-6), mẫu số trường hợp lại số âm, không đặc tả Đây ví dụ đơn giản việc đặc tả sai không đủ cẩn thận Với toán lớn việc đặc tả khó dễ nhầm lẫn, sai sót Nguồn gây lỗi lớn thứ hai thiết kế Đó tảng mà lập trình viên dựa vào để nỗ lực thực kế hoạch cho phần mềm Lỗi lập trình gây dễ hiểu Ai mắc lỗi lập trình Thời kì đầu, phát triển phần mềm có nghĩa lập trình, công việc lập trình nặng nhọc, lỗi lập trình gây chủ yếu Ngày nay, công việc lập trình phần việc trình phát triển phần mềm, cộng với hỗ trợ nhiều công cụ lập trình cao cấp, việc lập trình trở nên nhẹ nhàng hơn, độ phức tạp phần mềm lớn nhiều Do đó, lỗi lập trình gây Tuy nhiên, nguyên nhân để lập trình tạo lỗi lại nhiều Dó độ phức tạp phần mềm, tài liệu nghèo nàn, sức ép thời gian đơn giản lỗi “không nói lên được” Một điều hiển nhiên nhiều lỗi xuất bề mặt lập trình thực lại lỗi đặc tả thiết kế Một nguyên nhân khác tạo lỗi thân công cụ phát triển phần mềm có lỗi công cụ trực quan, thư viện lớp, biên dịch,… 1.1.4 Chi phí cho việc sửa lỗi Bảo trì phần mềm thường phần chi phí kiểm định hoạt động chi phí đắt thứ hai, ước tính khoảng 40% chi phí trình phát triển ban đầu sản phẩm phần mềm với phần mềm thiết kế để bẻ gãy phòng thủ xây dựng; làm tê liệt hệ thống từ chối phục vụ cho yêu cầu khác; cố ý gây lỗi hệ thống thâm nhập hệ thống khôi phục; xem liệu không bảo mật để tìm chìa khoá thâm nhập hệ thống; … Với tài nguyên thời gian cho, hệ thống bảo mật dù tốt cuối bị thâm nhập trái phép Vai trò người thiết kế hệ thống làm cho chi phí thâm nhập lớn giá trị thông tin bị lấy cắp bị phá hủy 3.6.3 Kiểm định ứng suất Trong suốt trình kiểm định phần mềm trước, kỹ thuật hộp trắng hộp đen dẫn đến ước lượng triệt để chức khả thực chương trình chuẩn tắc Kiểm định ứng suất thiết kế để đối chiếu chương trình với trạng thái không chuẩn tắc Kiểm định ứng suất thực hệ thống với mục đich tìm giới hạn hệ thống thất bại yêu cầu tài nguyên với chất lượng, tần suất, số lượng không bình thường, chẳng hạn: Các kiểm định cụ thể thiết kế cho trường hợp tỷ lệ ngắt cao bình thường Tốc độ liệu đầu vào tăng cường độ để xác định chức đáp ứng đầu vào Thực trường hợp kiểm định mà yêu cầu nhớ tối đa tài nguyên khác, thí dụ yêu cầu mở nhiều tập tin chiếm dụng đồng thời nhiều thiết bị ngoại vi Thiết kế trường hợp kiểm định gây nên thất bại hệ điều hành ảo Thực trường hợp kiểm định gây nên tìm kiếm mức cho liệu đĩa Một dạng khác kiểm định ứng suất kỹ thuật gọi kiểm định độ nhạy Trong hoàn cảnh (phổ biến thuật toán toán học) miền liệu nhỏ chứa biên liệu hợp lệ chương trình gây nên xử lý đặc biệt xử lý sai sót ảnh hưởng suy giảm khả thực Kiểm định độ nhạy cố gắng để phát tổ hợp liệu lớp liệu hợp lệ mà gây nên xử lý không ổn định không hợp lệ 3.6.4 Kiểm định khả thực Với hệ thống nhúng thời gian thực, phần mềm cung cấp chức yêu cầu không tuân theo yêu cầu khả thực không chấp nhận Kiểm định khả thực thiết kế để kiểm định khả thực theo thời gian thực phần mềm ngữ cảnh hệ thống tích hợp Kiểm định khả thực xuất tất bước trình kiểm định Thậm chí mức đơn vị, khả thực module riêng biệt đánh việc thực kiểm định hộp trắng Tuy nhiên, điều không xảy thành phần hệ thống tích hợp đầy đủ mà khả thực hệ thống biết CHƯƠNG ÁP DỤNG KỸ THUẬT KIỂM TRA HỘP TRẮNG 4.1 Kiểm định chương trình chèn xếp mảng 4.1.1 Thủ tục chèn xếp mảng Ư tưởng thuật toán Insert_Sort: Lấy dần phần tử dãy nguồn, chèn vào dãy đích cho đảm bảo dãy đích có thứ tự Xem phần tử ban đầu a[0] dãy có thứ tự dãy xếp tăng dần Bước 1: Chèn phần tử a[1] vào danh sách có thứ tự a[0] cho a[0], a[1] danh sách có thứ tự Bước 2: chèn phần tử a[2] vào danh sách có thứ tự a[0], a[1] cho a[0], a[1], a[2] danh sách có thứ tự Bước i: chèn phần tử thứ a[i] vào danh sách có thứ tự a[0], a[1], a[i-1] cho a[0], a[1], a[i-1], a[i] danh sách có thứ tự Phần tử xét a[j] chèn vào vị trí thích hợp danh sách phần tử trước a[1], a[2], , a[j-1] cách so sánh a[j] với a[j-1] đứng trước Nếu a[j]