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ề[.]
Trang 1KỸ 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
1
Trang 2Nội dung
Tổng quan về lỗi phần mềm
Thực hành kiểm thử
Kiểm thử tĩnh Tổng quan về thiết kế trường hợp kiểm thử
Kiểm thử phần mềm
Trang 3Mộ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 khi 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.
3
L i ph n m m (Bug) ỗ ầ ề
Trang 41) Lỗi giao diện người dùng - User interface errors
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 trong 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
Ca c nho m lô i phâ n mê m phô ̉
biê n ́
Trang 5Có 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: chFunctionality: chươ ươ ng tri nh không la m nh ng th nh no nên la m, hoăc la m ng tri nh không la m nh ng th nh no nên la m, hoăc la m ̀ ̀ ̀ ̀ ư ư ̃ ̃ ư ư ́ ́ ư ư ́ ́ ̀ ̀ ̣ ̣ ̀ ̀ môt ca ch khô s hay không hoa n chinh ̣ ́ ̉ ở ̀ ̉
môt ca ch khô s hay không hoa n chinh ̣ ́ ̉ ở ̀ ̉
Communication: La m thê na o đê ti m ra ca ch s dung chCommunication: La m thê na o đê ti m ra ca ch s dung ch̀ ̀ ́ ́ ̀ ̀ ̉ ̉ ̀ ̀ ́ ́ ử ử ̣ ̣ ươ ươ ng tri nh? No co ng tri nh? No co ̀ ̀ ́ ́ ́ ́ chi nh xa c không? Co gi đo nhâ m lâ n, sai lêch không? ́ ́ ́ ̀ ́ ̀ ̃ ̣
chi nh xa c không? Co gi đo nhâ m lâ n, sai lêch không? ́ ́ ́ ̀ ́ ̀ ̃ ̣
Command structure: Co dê bi lac trong chCommand structure: Co dê bi lac trong ch́ ́ ̃ ̃ ̣ ̣ ̣ ̣ ươ ươ ng tri nh không? Co lênh na o dê bi ng tri nh không? Co lênh na o dê bi ̀ ̀ ́ ́ ̣ ̣ ̀ ̀ ̃ ̃ ̣ ̣ nhâ m lâ n không? Co lô i na o la m ban la ng phi th i gian không? Vi sao? ̀ ̃ ́ ̃ ̀ ̀ ̣ ̃ ́ ơ ̀ ̀
nhâ m lâ n không? Co lô i na o la m ban la ng phi th i gian không? Vi sao? ̀ ̃ ́ ̃ ̀ ̀ ̣ ̃ ́ ơ ̀ ̀
Missing commands: chMissing commands: chươ ươ ng tri nh thiê u lênh, c ng nhă c va kho điê u chinh đê ng tri nh thiê u lênh, c ng nhă c va kho điê u chinh đê ̀ ̀ ́ ́ ̣ ̣ ư ư ́ ́ ́ ́ ̀ ̀ ́ ́ ̀ ̀ ̉ ̉ ̀ ̀ phu h p v i t ng đô i t ̀ ợ ơ ư ́ ̀ ́ ượ ng ng ươ ̀ i s dung. VD phi m tă t ử ̣ ́ ́
phu h p v i t ng đô i t ̀ ợ ơ ư ́ ̀ ́ ượ ng ng ươ ̀ i s dung. VD phi m tă t ử ̣ ́ ́
Performance:chPerformance:chươ ươ ng tri nh chay bi châm h n mong đ i ngng tri nh chay bi châm h n mong đ i ng̀ ̀ ̣ ̣ ̣ ̣ ̣ ̣ ơ ơ ợ ợ ươ ươ ̀ ̀ i du ngi du ng̀ ̀
Output: không co đu thông tin đâ u ra mong muô n. VD ngOutput: không co đu thông tin đâ u ra mong muô n. VD nǵ ́ ̉ ̉ ̀ ̀ ́ ́ ươ ươ ̀ ̀ i s dung muô n xuâ t i s dung muô n xuâ t ử ử ̣ ̣ ́ ́ ́ ́
đâ u ra qua thiê t bi đâ u cuô i, têp, ma y in ̀ ́ ̣ ̀ ́ ̣ ́
đâ u ra qua thiê t bi đâ u cuô i, têp, ma y in ̀ ́ ̣ ̀ ́ ̣ ́ 5
1) User interface errors
Trang 6Khô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 ra lỗi.
Giải quyết lỗi được phát hiện không hợp lý
Vd trong việc bảo vệ chống lại dữ liệu bị corrupt, kiểm tra dữ liệu đầu vào người dùng, kiểm soát phiên bản,
bỏ qua lỗi tràn bộ nhớ, so sánh dữ liệu, không phục lỗi, phục hồi khi có lỗi phần cứng
2) Error handling
Trang 7Bấ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 hơn đế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 trong 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 bộ nhớ, thời gian, xử lý sai các trường hợp nằm ngoài ranh giới
VD
Sô lSô ĺ ́ ượ ượ ng sinh viên tô i thiêu cua 1 l p ti n chi la 15 tô i đa la 40 sinh viênng sinh viên tô i thiêu cua 1 l p ti n chi la 15 tô i đa la 40 sinh viêń ́ ̉ ̉ ̉ ̉ ơ ơ ́ ́ ́ ́ ̉ ̉ ̀ ̀ ́ ́ ̀ ̀
Dung lDung lượ ượ ng bô nh chiê m dung cua chng bô nh chiê m dung cua cḥ ̣ ơ ơ ́ ́ ́ ́ ̣ ̣ ̉ ̉ ươ ươ ng tri nh khi th c thi tô i thiêu la 2MB ng tri nh khi th c thi tô i thiêu la 2MB ̀ ̀ ự ự ́ ́ ̉ ̉ ̀ ̀
tô i đa la 50MB ́ ̀
3) Boundaryrelated errors
Trang 8Hiểu sai công thức
Sai số tính toán
Tính toán sai do 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
4) Calculation errors
Trang 9Nhiề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 chỉ mục dữ liệu bằng không,
khởi tạo biến kiểm soát vòng lặp, khởi tạo lại 1 con trỏ, …
VD Lỗi do lần đầu chạy file chưa được khởi tạo,
9
5) Initial and later states
Trang 10Luồ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 trong những hoàn cảnh cụ thể Lỗi luồng kiểm soát xẩy ra khi chương trình thực hiện sai việc làm tiếp
theo.
Lỗi này thường xuất hiện do giả định trạng thái trả ra sai, xử lý ngoại lệ dựa trên cách thoát, tràn trên tràn dưới bộ đệm, thất bại trong việc chặn và bỏ chặn ngắt, các so sánh, lỗi kiểu dữ liệu, thiếu hoặc sai các mặc định - default
Vd Lỗi luồng kiểm soát xẩy ra do câu lệnh rẽ nhánh.
6) Control flow errors
Trang 11Mộ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 đi 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
7) Errors in handling or interpreting data
Trang 12Khi làm việc với dữ liệu chia sẻ, dù ở dạng tệp, cơ sở dữ liệu, các kết nối mạng, bộ nhớ dùng chung hay ở những dạng khác của truyền
thông liên tiến trình, có một số lỗi dễ tạo ra làm tổn thương tới tính bảo mật của hệ thống, đặc biệt là trong các hệ thống đa xử lý.
Ví dụ, nếu bạn mở một tệp và sau đó đọc nó, mặc dù ứng dụng của bạn không làm gì giữa hai hoạt động, vài quy trình khác có thể thay thế tệp sau khi tệp đã được mở và trước khi được đọc Nếu hai tiến trình khác nhau (trong cùng hoặc khác ứng dụng) đang ghi lên chung một tệp, sẽ không có cách nào để biết cái nào ghi trước, cái nào sẽ ghi đè lên dữ liệu được ghi bởi tiến trình kia Tình huống này gây ra
8) Race conditions
Trang 13Chương trình có thể hoạt động sai khi bị quá tải, nó có thể bị lỗi khi chạy trong 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 khi 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 con 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 đã đề ra hoặc cách xử lý thất bại khi vượt quá giới hạn cho phép
13
9) Load conditions
Trang 14Vd chương trình gửi dữ liệu tới các thiết bị
rồì lờ đi 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 đang bận hoặc không tồn tại gây ra lỗi về phần cứng.
Hoặc trong 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
10) Hardware
Trang 15Cầ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ử đi kiểm thử lại một phần mã nguồn phiên bản cũ
QA đưa ra 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
11) Source and version control
Trang 16Cá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
12) Document
Trang 17Các lỗi được tạo ra bởi kiểm thử viên là một
trong các lỗi phổ biến nhất được pha kiểm thử, chẳng qua là do 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 trong những lỗi bạn mắc phải khi sử dụng chương trình hoặc việc
bạn gặp quá nhiều lỗi kiểm thử khi kiểm thử có thể phản ánh các vấn đề trong giao diện người sử dụng đây có thể tiềm ẩn lỗi trong 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
13) Testing errors
Trang 18Khi 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ả
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
bước tối thiểu, bỏ qua các bước không cần thiết
Vòng đời của bug và nội dung bug
report
Trang 19bug
Trang 20Program, 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:
Severity - mức độ
nghiêm trọng của lỗi:
minor<serious<fatal
Attachment- tài liệu
report