Lý thuyết Tin học 11 Bài 23 (Kết nối tri thức): Kiểm thử và đánh giá chương trình

Tóm tắt lý thuyết Tin học lớp 11 Bài 23: Kiểm thử và đánh giá chương trình hay, chi tiết sách Kết nối tri thức sẽ giúp học sinh nắm vững kiến thức trọng tâm, ôn luyện để học tốt Tin học 11.

1 2,484 20/09/2024


Lý thuyết Tin học 11 Bài 23: Kiểm thử và đánh giá chương trình

A. Lý thuyết Kiểm thử và đánh giá chương trình

1. Vai trò của kiểm thử chương trình

- Phương pháp 1: Sử dụng bộ dữ liệu kiểm thử để kiểm tra tính đúng của chương trình. Nếu phát hiện lỗi thì kết luận chương trình không đúng, nhưng nếu không có lỗi thì chưa chứng minh được tính đúng của chương trình.

- Mục đích của phương pháp 2 và 3 là tìm và sửa lỗi để tăng tính tin cậy của chương trình, nhưng không chứng minh được tính đúng của thuật toán và chương trình.

- Một thuật toán được thiết kế đúng sẽ cho ra kết quả đúng với mọi bộ dữ liệu đầu vào tương ứng. Phương pháp kiểm thử không có khả năng chứng minh tính đúng của một thuật toán.

2. Kiểm tra tính đúng của chương trình

- Phương pháp 1 sử dụng các bộ dữ liệu kiểm thử để kiểm tra tính đúng của chương trình. Tuy nhiên, việc kiểm tra với các bộ dữ liệu kiểm thử không chứng minh được tính đúng của thuật toán hay chương trình, chỉ làm tăng khả năng đúng của chương trình.

- Phương pháp 2 và 3 nhằm tìm và sửa lỗi của chương trình để chương trình trở nên tin cậy hơn. Tuy nhiên, điều đó không chứng minh được tính đúng của thuật toán và chương trình.

- Việc chứng minh tính đúng của thuật toán đều phải dựa trên logic toán học. Bắt biến vòng lặp là một phương pháp thường được sử dụng. Ví dụ với thuật toán sắp xếp chèn, bằng bất biến vòng lặp, ta có thể chứng minh tính đúng của thuật toán.

- Trong trao đổi 1, việc sử dụng các bộ dữ liệu kiểm thử chưa chứng minh được tính đúng của thuật toán và chương trình. Tuy nhiên, việc thử nhiều bộ dữ liệu kiểm thử sẽ tăng độ tin cậy của chương trình.

- Trao đổi 2 là một luận điệu logic vì nó dựa trên ý tưởng chính của thuật toán sắp xếp chèn. Đây là cách lập luận đơn giản thường được sử dụng để chứng minh tính đúng của thuật toán.

- Trong trao đổi 3, việc chứng minh tính đúng của chương trình thường được thực hiện bằng lập luận toán học, sử dụng phương pháp quy nạp toán học. Đây là cách tốt nhất để chứng minh tính đúng của một thuật toán.

3. Đánh giá hiệu quả chương trình

- Độ phức tạp tính toán (computational complexity) là lượng tài nguyên (amounts of resources) cần thiết để thực hiện chương trình, được sử dụng để đánh giá hiệu quả hoặc tính tối ưu của chương trình.

- Độ phức tạp thời gian (time complexity) được xác định là thời gian thực hiện chương trình/thuật toán, phụ thuộc vào khối lượng dữ liệu cần xử lý và các bước giải quyết vấn đề.

- Độ phức tạp không gian (space complexity) là lượng bộ nhớ máy tính cần sử dụng để thực hiện chương trình/thuật toán.

- Một chương trình/thuật toán được coi là hiệu quả nếu độ phức tạp của nó thấp, tức là tốn ít thời gian và bộ nhớ cần thiết để thực hiện.

- Các tiêu chí như tính dễ hiểu, rõ ràng, ngắn gọn, dễ bảo trì, dễ cài đặt,... của chương trình cũng được quan tâm trong đánh giá hiệu quả chương trình.

- Độ phức tạp thời gian của chương trình/thuật toán phụ thuộc vào số lần thực hiện các phép toán/câu lệnh trong chương trình/thuật toán. Đối với các bài toán kĩ thuật, thiết kế, nghiên cứu khoa học đòi hỏi khối lượng tính toán lớn, việc thiết kế chương trình/thuật toán có độ phức tạp thời gian thấp là mối quan tâm hàng đầu.

- Đối với các bài toán chạy liên tục như các dịch vụ trực tuyến thì tính dễ cài đặt, dễ duy trì và độ tin cậy của phần mềm cũng cỏ vai trò quan trọng.

- Trong phạm vi kiến thức phổ thông, ta chỉ quan tâm đến độ phức tạp thời gian của chương trình/thuật toán. Việc xác định độ phức tạp thời gian dựa trên ước lượng thời gian thực hiện các bước (câu lệnh) trong chương trình/thuật toán sẽ được trình bày trong các bài học sau.

Sơ đồ tư duy Kiểm thử và đánh giá chương trình

Lý thuyết Tin học 11 Bài 23 (Kết nối tri thức): Kiểm thử và đánh giá chương trình (ảnh 1)

B. Bài tập Kiểm thử và đánh giá chương trình

Câu 1: Chương trình chạy phát sinh lỗi ngoại lệ ZeroDivision, nên xử lí như thế nào?

A. Kiểm tra lại giá trị số chia.

B. Kiểm tra lại chỉ số trong mảng.

C. Kiểm tra giá trị của số bị chia.

D. Kiểm tra kiểu dữ liệu nhập vào.

Câu 2: Chương trình sau bị lỗi ở dòng lệnh thứ bao nhiêu ?

>>> fruits = ['Banana', 'Apple', 'Lime']

>>> loud_fruits = [fruit.upper() for fruit in fruits]

>>> print(loud_fruits)

>>> list(enumerate(fruits))

A. 2.

B. 3.

C. 4.

D. Không phát sinh lỗi

Câu 3: Chương trình sau phát sinh lỗi gì?

>>> 1 / 0

0.5

>>> 2 ** 3

8

A. NameError.

B. TypeError.

C. ZeroDivisionError.

D. Syntax Error.

Câu 4: Chương trình chạy phát sinh lỗi ngoại lệ IndexError, nên xử lí như thế nào?

A. Kiểm tra lại giá trị số chia.

B. Kiểm tra lại chỉ số trong mảng.

C. Kiểm tra giá trị của số bị chia.

D. Kiểm tra kiểu dữ liệu nhập vào.

Câu 5: Chương trình sau có lỗi ở dòng lệnh nào?

n = int(input("Nhập số tự nhiên n: "))

s = ""

for i in range(10):

s = s + i

A. 1.

B. 2.

C. 3.

D. 4.

Câu 6: Hoàn thành phát biểu sau: “Có rất nhiều công cụ và phương pháp khác nhau để kiểm thử chương trình. Các công cụ có mục đích … của chương trình và …, … các lỗi phát sinh trong tương lai”

A. Tìm ra lỗi, phòng ngừa, ngăn chặn.

B. Tìm ra lỗi, phòng ngừa, xử lí.

C. Phòng ngừa, ngăn chặn, xử lí lỗi.

D. Xử lí lỗi, phòng ngừa, ngăn chặn.

Câu 7: Đâu không là công cụ để kiểm thử chương trình?

A. Công cụ in biến trung gian.

B. Công cụ sinh các bộ dữ liệu test.

C. Công cụ thống kê dữ liệu

D. Công cụ điểm dừng trong phần mềm soạn thảo lập trình.

Câu 8: Trong các phát biểu sau, phát biểu nào chưa chính xác về kiểm thử chương trình?

A. Hiện nay, có ít phương pháp và công cụ khác nhau để kiểm thử chương trình.

B. Chương trình cần được thử với một số bộ dữ liệu test gồm đầu vào tiêu biểu và kết quả đầu ra biết trước.

C. Các bộ test phụ thuộc vào các tiêu chí khác nhau.

D. Các bộ test dữ liệu nên có nhiều bộ test ngẫu nhiên,...

Câu 9: Phát biểu nào sau đây đúng nhất khi nói về các bộ dữ liệu test khi kiểm thử chương trình?

A. Các bộ test có thể có đầu vào theo các tiêu chí khác nhau.

B. Các bộ test có đầu vào theo một số tiêu chí nhất định.

C. Các bộ test có thể có đầu vào theo các tiêu chí khác nhau như độ lớn, tính đa dạng của dữ liệu.

D. Các bộ test có đầu vào phải theo các tiêu chí về độ lớn, tính đa dạng của dữ liệu.

Câu 10: Số phát biểu đúng trong các phát biểu sau:

1) Cần chú ý nên có nhiều bộ test khi test các bộ dữ liệu.

2) Việc sinh ngẫu nhiên dữ liệu đầu vào trong miền xác định của chương trình làm tăng khả năng tìm lỗi.

3) Thực tế cho thấy ít khi phát sinh lỗi tại các vùng biên hoặc lân cận biên.

4) Không thể sử dụng các lệnh print() để in ra các biến trung gian.

A. 2.

B. 3.

C. 1.

D. 4.

Xem thêm các bài lý thuyết Tin học 11 sách Kết nối tri thức hay, chi tiết tại:

Lý thuyết Bài 21: Các thuật toán sắp xếp đơn giản

Lý thuyết Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Lý thuyết Bài 26: Phương pháp làm mịn dần trong thiết kế chương trình

Lý thuyết Bài 28: Thiết kế chương trình theo Mô đun

Lý thuyết Bài 30: Thiết lập thư viện cho chương trình

1 2,484 20/09/2024


Xem thêm các chương trình khác: