KỸ THUẬT KIỂM THỬ 1 Các nguyên lý 2 Vòng đời 4 Kiểm thử chức năng 3 Kỹ thuật kiểm thử 5 Kiểm thử cấu trúc 6 Quản lý chất lượng KIỂM THỬ VÀ ĐẢM BẢO CHẤT LƯỢNG PHẦN MỀM Chương 3 1 Nội dung Tổng quan về[.]
KIỂM THỬ VÀ ĐẢM BẢO CHẤT LƯỢNG PHẦN MỀM Chương KỸ THUẬT KIỂM THỬ Các nguyên lý Vòng đời Kỹ thuật kiểm thử Kiểm thử chức Kiểm thử cấu trúc Quản lý chất lượng Kỹ thuật kiểm thử Kiểm thử phần mềm Nội dung Tổng quan lỗi phần mềm Thực hành kiểm thử Kiểm thử tĩnh Tổng quan thiết kế trường hợp kiểm thử Lỗi phần mềm (Bug) Một lỗi phần mềm là sự không trùng khớp giữa chương trình và đặc tả của nó, nếu đặc tả phần mềm tồn tại và được cho là đúng Đặc tả sai phần mềm sai Một lồi phần mềm hiện diện chương trình không làm cái mà người sử dụng đầu cuối mong muốn nó làm Cá c nhó m lỗ i phầ n mề m phô ̉ biêLỗ́ingiao diện người dùng - User interface errors 1) 2) Lỗi xử lý - Error handling 3) Lỗi liên quan tới ranh giới/biên - Boundary-related errors 4) Lỗi tính toán - Calculation errors 5) Lỗi các trạng thái đầu và sau - Initial and later states 6) Lỗi luồn kiểm soát - Control flow errors 7) Lỗi xử lý hoặc dịch dữ liệu - Errors in handling or interpreting data 8) Tranh đoạt điều khiển - Race conditions 9) Điều kiện tải - Load conditions 10) Phần cứng – Hardware 11) Kiểm soát phiên bản và mã nguồn – Source and version control 12) Tài liệu – Document 13) Các lỗi kiểm thử – Testing errors 1) User interface errors Có nhiều cách để làm cho chương trình làm việc một cách khó khăn, người ta quy chúng vào một nhóm lỗi có tên là “Lỗi giao diện người dùng” Lỗi giao diện người dùng chia thành nhiều nhóm nhỏ Functionality: chương trình không làm những thứ như nó nên làm, hoăc la ̣ ̀m môt ca ̣ ́ch khô s ̉ ở hay không hoàn chinh ̉ Communication: Làm thế nào đê ti ̉ ̀m ra cách sử dung ch ̣ ương trình? Nó có chính xác không? Có gì đó nhầm lẫn, sai lêch không? ̣ Command structure: Có dễ bi lac trong ch ̣ ̣ ương trình không? Có lênh na ̣ ̀o dễ bi ̣ nhầm lẫn không? Có lỗi nào làm ban la ̣ ̃ng phí thời gian không? Vì sao? Missing commands: chương trình thiếu lênh, c ̣ ứng nhắc và khó điều chinh đê ̉ ̀ phù hợp với từng đối tượng người sử dung. VD phi ̣ ́m tắt Performance:chương trình chay bi châm h ̣ ̣ ̣ ơn mong đợi người dùng Output: không có đu thông tin đâ ̉ ̀u ra mong muốn. VD người sử dung muô ̣ ́n xuất đầu ra qua thiết bi đâ ̣ ̀u cuối, têp, ma ̣ ́y in 2) Error handling Không lường trước hết các sai sót của chương trình và bảo vệ chương trình trước các sai sót này Thiếu thông báo lỗi hoặc điều kiện sinh lỗi Giải quyết lỗi được phát hiện không hợp lý Vd việc bảo vệ chống lại liệu bị corrupt, kiểm tra liệu đầu vào người dùng, kiểm soát phiên bản, bỏ qua lỗi tràn nhớ, so sánh liệu, không phục lỗi, phục hồi có lỗi phần cứng 3) Boundaryrelated errors Bất kỳ thành phần nào của chương trình được mô tả có sự xuất hiện của miền giá trị: từ nhiều đến ít hơn, từ lớn nhất tới nhỏ nhất, từ sớm nhất tới muộn nhất, đầu tiên tới cuối cùng, ngắn nhất tới dài nhất đều cần kiểm tra ranh giới miền giá trị Chương trình thường chạy đúng và ổn định với các giá trị nằm miền xác định và hay bị gặp lỗi/ sự cố tại các giá trị nằm ngoài biên của miền xác định Tìm kiếm lỗi ranh giới: vịng lặp, khơng gian nhớ, thời gian, xử lý sai trường hợp nằm ranh giới VD Số lượng sinh viên tối thiêu cua 1 l ̉ ̉ ớp tín chi la ̉ ̀ 15 tối đa là 40 sinh viên Dung lượng bô nh ̣ ớ chiếm dung cua ch ̣ ̉ ương trình khi thực thi tối thiêu la ̉ ̀ 2MB tối đa là 50MB … 4) Calculation errors Hiểu sai cơng thức Sai số tính toán Tính toán sai sai thuật toán Sử dụng sai công thức Sử dụng sai kiểu dữ liệu cho công thức tính toán 5) Initial and later states Nhiều chương trình chỉ sai ở lần chạy đầu tiên, ở những lần chạy sau các thông tin khởi tạo đã được lưu trữ lại nên việc chạy chương trình không gặp lại lỗi này nữa Tìm kiếm lỗi: thiết lập mục liệu khơng, khởi tạo biến kiểm sốt vịng lặp, khởi tạo lại trỏ, … VD Lỗi lần đầu chạy file chưa được khởi tạo, 6) Control flow errors Luồng kiểm soát của một chương trình miêu tả cái mà chương trình sẽ làm tiếp theo những hoàn cảnh cụ thể Lỗi luồng kiểm soát xẩy chương trình thực hiện sai việc làm tiếp theo Lỗi thường xuất giả định trạng thái trả sai, xử lý ngoại lệ dựa cách thoát, tràn tràn đệm, thất bại việc chặn bỏ chặn ngắt, so sánh, lỗi kiểu liệu, thiếu sai mặc định - default Vd Lỗi luồng kiểm soát xẩy câu lệnh rẽ nhánh 10 7) Errors in handling or interpreting data Một modun có thể truyền dữ liệu tới modun hoặc chương trình khác Một tập dữ liệu có thể được truyền và nhận lại nhiều lần Trong quá trình này tập dữ liệu có thể bị corrupt (hỏng) hoặc dịch sai Những thay đổi cuối cùng tới dữ liệu có thể bị mất hoặc thất lạc tới một vài phần khác của hệ thống 11 8) Race conditions Khi làm việc với liệu chia sẻ, dù dạng tệp, sở liệu, kết nối mạng, nhớ dùng chung hay dạng khác truyền thơng liên tiến trình, có số lỗi dễ tạo làm tổn thương tới tính bảo mật của hệ thống, đặc biệt là các hệ thống đa xử lý Ví dụ, bạn mở tệp sau đọc nó, ứng dụng bạn khơng làm hai hoạt động, vài quy trình khác thay tệp sau tệp mở trước đọc Nếu hai tiến trình khác (trong khác ứng dụng) ghi lên chung tệp, khơng có cách để biết ghi trước, ghi đè lên liệu ghi tiến trình Tình gây lỗ hổng bảo mật 12 9) Load conditions Chương trình có thể hoạt động sai bị quá tải, nó có thể bị lỗi chạy một thời gian quá dài hoặc thực thi quá trọng tải cho phép, chiếm dụng quá vùng nhớ cho phép, thất bại cố chia sẻ vùng nhớ hoặc thời gian sử dụng CPU với chương trình khác hoặc giữa hai tiến trình của nó Ghi nhớ rằng tất cả mọi chương trình đều có giới hạn Vấn đề là nó có đáp ứng được các giới hạn đã đề hoặc cách xử lý thất bại vượt quá giới hạn cho phép 13 10) Hardware Vd chương trình gửi dữ liệu tới các thiết bị rồì lờ các mã lỗi phản hồi lại, và cố gắng sử dụng thiết bị phần cứng bận hoặc không tồn tại gây lỗi về phần cứng Hoặc trường hợp khác, nếu phần cứng hỏng, phần mềm cũng bị hỏng nếu nó không nhận và khôi phục lại từ phần cứng hỏng 14 11) Source and version control Cần kiểm soát phiên bản và toàn vẹn mã nguồn, tránh trường hợp kiểm thử kiểm thử lại một phần mã nguồn phiên bản cũ QA đưa những quy định chặt chẽ về toàn vẹn mã nguồn và kiểm soát phiên bản mã nguồn Có thể dùng công cụ hỗ trợ để kiểm soát, vd GitHub, SVN, 15 12) Document Các tài liệu cũng là một phần của sản phẩm phần mềm Tài liệu nghèo nàn, kém chất lượng có thể làm người sử dụng tin là sản phẩm làm việc không chính xác 16 13) Testing errors Các lỗi được tạo bởi kiểm thử viên là một các lỗi phổ biến nhất được pha kiểm thử, chẳng qua là người kiểm thử không báo cáo lại chi tiết các ca kiểm thử đó Nhưng kiểm thử viên nên ghi nhớ một số lỗi những lỗi bạn mắc phải sử dụng chương trình hoặc việc bạn gặp quá nhiều lỗi kiểm thử kiểm thử có thể phản ánh các vấn đề giao diện người sử dụng có thể tiềm ẩn lỗi thiết kế Khi đó các lỗi của bạn chính là các dữ liệu kiểm thử cho chương trình 17 Vòng đời của bug và nội dung bug report Khi có lỗi/ vấn đề được tìm thấy qua hoạt động kiểm thử, nó cần được báo cáo lại một cách rõ ràng, dễ hiểu để người khác có thể đọc và fix nó viết bug report Làm thế nào để viết bug report hiệu quả - Mô tả làm thế nào để sinh vấn đề Các lập trình viên bỏ qua các báo cáo của các vấn đề mà bản thân họ không thể nhìn thấy - Phân tích lỗi để có thể miêu tả nó bên một số lượng bước tối thiểu, bỏ qua các bước không cần thiết - Viết một báo cáo hoàn chỉnh, dễ hiểu cho lập trình viên không bị hiểu lầm hay bực mình 18 - Viết báo cáo nhìn thấy Vò ng đờ i cua ̉ bug 19 Nôi dung cua bug ̣ ̉ report Program, release, version: thông tin về chương trình, phiên bản code hay bản phát hành (release) Report type: Coding error Design issue Suggestion Decumentation Hardware Query Severity - mức độ nghiêm trọng của lỗi: minor