+ Sai biến Bool + Sai toán tử Bool
+ Sai số hạng trong biểu thức toán tử Bool + Sai toán tử quan hệ
+ Sai biểu thức số học.
Câu 53. Chiến lược kiểm thử phân nhánh nghĩa là gì? Yêu cầu đặt ra cho kiểm thử phân nhánh là gì?
- Kiểm thử phân nhánh là chiến lược kiểm thử từng điều kiện chương trình
- Kiểm thử nhánh: Với mỗi điều kiện kết hợp C thì các nhánh “true” và “false” của C và mỗi điều kiện đơn trong C phải được kiểm thử ít nhất 1 lần.
- Yêu cầu: Không chỉ phát hiện sai trong điều kiện đó mà mà còn phát hiện các sai
khác trong chương trình.
Câu 54. Chiến lược kiểm thử miền là cái gì? Nó dựa trên tư tưởng nào?
- Chiến lược kiểm thử miền đòi hỏi 3 hoặc 4 kiểm thử cho một biểu thức quan hệ:
gồm các trường hợp <, >, = và có thể ≠ nữa.
Ví dụ:
Với biểu thức quan hệ có dạng E1 <toán tử quan hệ> E2 thì cần tới 3 phép kiểm thử
để làm cho giá trị của E1 lớn hơn, bằng hoặc nhỏ hơn giá trị của E2 tương ứng. Nếu <toán
tử quan hệ> là không đúng và E1 và E2 đúng thì 3 phép kiểm thử này đảm bảo phát hiện
ra toán tử sai. Để phát hiện ra lỗi trong E1 và E2, phép kiểm thử làm cho giá trị của E1 lớn
hơn hay bé hơn giá trị của E2 nên tạo ra sự khác biệt giữa hai giá trị này nhỏ nhất có thể
- Với biểu thức Bool có n biến sẽ cần 2n phép kiểm thử có thể có (n>0) nên có chỉ thuận lợi nếu n nhỏ và sẽ thiếu thực tế nếu n lớn.
Câu 55. Chiến lược kiểm thử BRO là cái gì? Nó dựa trên tư tưởng nào?
BRO = kiểm thử nhánh và toán tử quan hệ (Branch & Relational Operation)
- Chiến lược kiểm thử BRO là kiểm thử toán tử quan hệ và nhánh. Kỹ thuật này đảm bảo việc phát hiện ra các lỗi quan hệ và nhánh trong điều kiện mà tất các các biến Bool và toán tử quan hệ chỉ xuất hiện 1 lần và không có biến chung.
BRO dùng đến “ràng buộc điều kiện cho điều kiện cần thử”.
Giả sử: 1 2 n X & &... X & X D=
, Xi: điều kiện đơn, &: toán tử Bool. Cần đặc tả ràng
buộc đầu ra của Xi tương ứng với điều kiện D đã xác định?
+ Ta nói rằng ràng buộc Xi của điều kiện D là được phủ bởi một sự thực thi của C
nếu như trong quá trình thực thi đó, đầu ra của mỗi điều kiện đơn Xi tr D thoả mãn các
ràng buộc tương ứng. Có nghĩa là: khi giâ trị của D đã cho, ta cần tìm các điều kiện ràng
buộc mà mỗi Xi (1 thành viên của D) cần thoả mãn để đảm bảo được giá trị của D.
- Tư tưởng: Cho phép thử nhạy cảm sai cho biểu thức Bool. Với một biểu thức Bool duy nhất (một biểu thức Bool mà mỗi biến Bool chỉ xuất hiện 1 lần) với n biến Bool
(n>0) chúng ta có thể dễ dàng sinh ra một tập kiểm thử ít hơn 2n phép thử sao cho tập
kiểm thử này đảm bảo phát hiện ra nhiều lỗi toán tử Bool và cũng là hiệu quả để phát hiện các lỗi khác.
Câu 56. Lấy ví dụ về các điều kiện “ràng buộc đầu ra” cho các trường hợp: 1 biến Bool, hợp của biến Bool và biểu thức quan hệ, hợp của hai biểu thức quan hệ?
- Với một biến Bool B. thì ràng buộc đầu ra của B là t (true) hoặc f (false) - Với một biểu thức quan hệ
) B A ( Θ
thì ràng buộc đầu ra của nó là toán tử quan hệ:
Θ
có thể nhận một trong 4 giá trị >, <, =, ≠
- Xét điều kiện C=A∩B
, A và B là 2 biến Bool. Khi đó ràng buộc đầu ra của C là một cặp giá trị của t và f. Chiến lược kiểm thử BRO đòi hỏi rằng tập 3 cặp ràng buộc (t,t), (t,f), (f,t) đểu được phủ bởi các thực thi của C:
Cặp (t,t) ứng với C=t
Cặp (t,f) và (f,t) ứng với C=f
- Xét điều kiện C là hội biến Bool và biểu thức quan hệ: A & (B=E). Khi đó các ràng buộc của C là các cặp (t,t), (t,f), (f,t): với (B=E) có giá trị t tương ứng với =, và giá trị f tương ứng với < hoặc >. Bởi vậy, tập các ràng buộc đầu ra của C phải gồm 4 phần tử: (t,=), (t,<), (t,>), (f,=). Phủ của các ràng buộc này đảm bảo phát hiện được sai biến Bool hoặc toán tử quan hệ trong C.
- Xét điều kiện C: (A>B)&(E=F). Tập ràng buộc đầu ra sẽ là(t,t), (t,f), và (f,t) và tương ứng sẽ là: (>,=), (>,<), (>,>), (=,=) và (<,=). Phủ của ràng buộc này đảm bảo rằng phát hiện được sai ở các toán tử trong quan hệ C.
Câu 57. Kiểm thử điều khiển dòng dữ liệu nghĩa là gì? Cho ví dụ?
- Phương pháp kiểm thử dòng dữ liệu là kiểm thử tuyển chọn các đường của chương trình tương ứng với việc định vị các xác định biến và các sử dụng biến trong chương trình. Đã có một số chiến lược kiểm thử dòng dữ liệu và so sánh chúng.
- Giả sử rằng mỗi câu lệnh của chương trình được gán với số câu lệnh duy nhất và
mỗi hàm không được cải biên các tham số của nó và các biến toàn cục.
- Với mỗi câu lệnh S ta định nghĩa:
DEF(S) = {X | câu lệnh S chứa định nghĩa của X} USE(S) = {X | câu lệnh S chứa một sử dụng X}
Nếu S là câu lệnh if hoặc câu lệnh vòng lặp thì DEF(S) là rỗng, còn USE(S) được xác định tùy theo điều kiện trong S.
Giả thiết: định nghĩa của biến X ở câu lệnh S là còn sống tại câu lệnh S’ nếu có một con đường từ S tới S’ mà trên con đường đó không chứa một định nghĩa nào khác của X.
+ Một dây truyền DU sử dụng của X là DU=[X,S,S’] với X trong DEF(S), và trong USE(S’) và định nghĩa X trong S vẫn còn sống trong S’.
+ Chiến lược kiểm thử dòng dữ liệu đòi hỏi rằng mọi DU đều phải được phủ ít nhất một lần.
+ Kiểm thử DU không bảo đảm phủ tất cả các nhánh của chương trình; tuy nhiên một nhánh không được phủ bởi DU kiểm thử là rất hiếm.
- Kiểm thử dòng dữ liệu là hữu ích để chọn các đường của chương trình có chứa
lồng các câu lệnh if hoặc chu trình lồng nhau.
Ví dụ: Proc x B1; Do while C1 If C2 Then If C4 Then B4; Else B5; Endif; Else If C3 Then B2; Else B3; Endif Endif Enddo; B6; End proc;
Giả sử biến X được định nghĩa trong câu lệnh cuối của các khối B1, B2, B3, B4, B5 và được dùng trong câu lệnh đầu tiên của các khối B2, B3, B4, B5 và B6. Chiến lược kiểm thử DU đòi hỏi việc thực hiện của đường đi ngắn nhất từ mỗi Bi 0<i<=5 tới mỗi Bj
1<j<=6 (Việc kiểm thử như vậy cũng bao quát mọi việc dùng biến X trong các điều kiện C1,C2, C3, C4) Mặc dầu có tới 25 dây chuyền DU của biến X, chúng ta chỉ cần năm đường đi để bao quát các dây chuyền DU của X từ Bi 0<i<=5 tới B6 và các dây chuyền DU khac có thể được bao quát bằng cách làm cho năm đường này có chứa những việc lặp của chu trình.
Câu 58. Kiểm thử điều khiển vòng lặp nghĩa là gì? Cho ví dụ?
- Kiểm thử vòng lặp là một kỹ thuật kiểm thử hộp trắng tập trung hoàn toàn vào tính hợp lệ của kết cấu vòng lặp. Có thể xác định 4 lớp vòng lặp khác nhau: vòng lặp đơn, vòng lặp lồng, vòng lặp nối tiếp, vòng lặp phi cấu trúc
- Vòng lặp đơn: tập các kiểm thử được áp dụng cho vòng lặp đơn với n là số tối đa các bước được phép qua vòng lặp
+ Nhảy qua toàn bộ vòng lặp + Chỉ qua một bước vòng lặp + Hai bước qua vòng lặp
+ m bước qua chu trình với m<n + n-1, n, n +1 bước qua vòng lặp