- Phương châm của kỹ thuật này là: Phòng khiếm khuyết hơn là trừ khiếm khuyết
47. Ai là người phải tham gia kiểm thử phần mềm? Nêu vai trò và trách nhiệm của mối đối tượng?
đối tượng?
Kiểm thử phần mềm gồm cả người phát triển và nhóm kiểm thử độc lập
• Người kiểm thử luôn chịu trách nhiệm kiểm thử đơn vị (modul) do mình phát triển và bảo đảm mỗi modul đó thực hiện đúng chức năng được thiết kế
• Trong nhiều trường hợp, người phát triển cũng tham gia kiểm thử tích hợp
• Chỉ sau khi kiến trúc phần mềm đã đày đủ thì nhóm kiểm thử độc lập mới bắt đầu làm việc
• Vai trò của nhóm kiểm thử độc lập là gỡ bỏ những vấn đề cố hữu gây ra bởi “người xây dựng kiểm thử những thứ mà chính họ xây dựng nên”
gỡ bỏ mâu thuẫn về mối quan tâm
được trả công cho việc tìm lỗi
• Kết quả của nhóm kiểm thử độc lập cần được gửi cho tổ chức bảo đảm chất lượng phần mềm
• Người phát triển không được đẩy chương trình sang người kiểm thử rồi bỏ đi
• Người phát triển cùng làm việc với người kiểm thử xuyên suốt một dự án phần mềm để bảo đảm việc kiểm thử được tiến hành triệt để
3.2. Các phương pháp kiểm thửa. Kiểm thử hộp trắng a. Kiểm thử hộp trắng
48. Kiểm thử hộp trắng dựa trên cơ sơ nào để thiết kế ca kiểm thử? Thiết kế ca kiểm thử phải đảm bảo điều kiện gì? thử phải đảm bảo điều kiện gì?
Kiểm thử hộp trắng sử dụng cấu trúc điều khiển của thiết kế thủ tục để hình thành các ca kiểm thử.
Thiết kế ca kiểm thử phải đảm bảo:
- Bảo đảm rằng mọi con đường độc lập trong một môđun đều được thực hiện ít nhất một lần.
- Mọi ràng buộc logic được thực hiện cả phía true và false.
- Thực hiện tất cả các vòng lặp ở biên của nó và cả với biên vận hành của nó. - Thực hiện các cấu trúc dữ liệu nội tại để bảo đảm tính hiệu lực của nó
49. Đồ thị dòng gồm những yếu tố nào? Xây dựng nó dựa vào đâu? Nó có đặc trưng gì, Đồ thị dòng dùng để làm gì? Đồ thị dòng dùng để làm gì?
Đồ thị dòng (đồ thị chương trình) gần giống dòng điều khiển, Nó là một đồ thị cấu trúc gồm
+ Mỗi nút (hình tròn) biểu thị một số (hoặc có thể là 0) câu lệnh thủ tục + Mỗi cạnh nối hai nút biểu diễn dòng điều khiển.
+ Chia mặt phẳng thành nhiều miền.
+ Một nút là vị từ nếu nó biểu thị sự phân nhánh hoặc hội nhập của cung. Đồ thị dòng dùng để biểu diễn thiết kế thủ tục
50. Con đường cơ bản trong đồ thị dòng là cái gì? Độ phức tạp của chu trình là gì? Nêu các công thức tính độ phức tạp? Nêu các công thức tính độ phức tạp?
Các con đường cơ bản trong đồ thị dòng:
if
case while
Tuần tự
Để đảm bảo các câu lệnh đều được kiểm thử ít nhất một lần, ta cần tìm tất cả các đường điều khiển độc lập trong chương trình, tức là mỗi đường khác với các đường khác ít nhất một lệnh.
Số các của một chương trình là giới hạn trên của số các kiểm thử cần phải tiến hành. Nó được gọi là độ phức tạp chu trình của chương trình
Một tập cơ bản con đường độc lập là tập:
- Mọi cạnh của đồ thị dòng đều có mặt trong một con đường của tập này.
- Mỗi con đường của tập đó đều chứa ít nhất một cung không có mặt trong mọi con đường khác của nó.
- Số lượng các con đường của tập này cho ta số đo độ phức tạp chu trình của một chương trình Ví dụ: Đường độc lập: - Đường 1: 1-11 - Đường 2: 1- 2-3-4-5-10-1-11 - Đường 3: 1-2-3-6-7-9-10-1-11 - Đường 4: 1-2-3-6-8-9-10-1-11 Các công thức tính độ phức tạp:
Độ phức tạp chu trình V(G) đối với 1 đồ thị dòng G được định nghĩa là:
0 1 2 3 4 5 6 7 8 9 10 0 11 Sơ đồ khối 1 2,3 4,5 6 9 8 7 10 11
o V(G) = số miền phẳng
o V(G) = E - N + 2 (Với E là số cạnh, N là số nút của đồ thị luồng)
o V(G) = P + 1 (Với P là số nút vị từ)
51. Ma trận thử nghiệm được cấu trúc như thế nào? Nó được dùng để làm gì?
Cấu trúc: Ma trận kiểm thử là ma trận vuông có kích thước bằng số các nút trong đồ thị dòng
- Mỗi dòng/cột ứng với tên một nút
- Mỗi ô là tên một cung nối nút dòng đến nút cột
Ma trận kiểm thử được sử dụng như là một dữ liệu có cấu trúc để kiểm tra các con đường cơ bản.
Để ma trận kiểm thử trở thành công cụ mạnh mẽ trong việc đánh giá cấu trúc điều khiển chương trình khi thử nghiệm người ta sử dụng ma trận có trọng số (thêm trọng số cho các cung). Trọng số có thể là:
- Xác suất cung đó được tiến hành
- Thời gian xử lý tốn trong quá trình đi ngang qua cung đó. - Bộ nhớ đòi hỏi trong quá trình đi ngang qua cung đó.
- Nguồn lực được đòi hỏi trong quá trình đi ngang qua cung đó
Ma trận kiểm thử dùng như một dữ liệu có cấu trúc để kiểm tra các đường cơ bản. (Vì thủ tục để suy dẫn ra đồ thị dòng và xác định một tập các đường cơ bản tuân theo việc máy móc hóa)
52 Nêu các loại điều khiển trong cấu trúc điều khiển và cho ví dụ? Có những loại sai nào trong điều kiện khi kiểm thử nào trong điều kiện khi kiểm thử
Các loại điều khiển:
- Điều khiển đơn: là 1 biến bool hoặc 1 biểu thức quan hệ (có thể có toán tử phủ định đứng đầu)
Biểu thức quan hệ là một biểu thức Bool xác định quan hễ giữa 2 biểu thức số học bằng một phép so sánh: <, <=, =, >=, #.
- Điều kiện kết hợp là điều kiện cấu thành từ hơn một điều kiện đơn nhờ các toán tử Bool: hoặc hợp, giao, phủ định
các loại sai.
- Sai biến, 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.
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ì? 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à
- 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.
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ệ (được thử nghiệm cho các trường hợp <,>,= và có thể là “khác” nữa).
Với biểu thức quan hệ có dạng E1<toán tử quan hệ>E2thì 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ể có được
Với biểu thức Bool có n biến sẽ cần 2n phép kiểm thử có thể có nên có chỉ thuận lợi nếu n nhỏ và sẽ thiếu thực tế nếu n lớn.
55. Chiến lược kiểm thử BRO là cái gì? Nó dựa trên tư tưởng nào?
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ử trong điều kiện C cần thử có n-1 điều kiện đơn, ràng buộc của C (có n điều kiện đơn) là (D1, D2,…, Dn), trong đó Di là một đặc tả ràng buộc đầu ra của điều kiện đơn tương ứng của C. Ta nói rằng ràng buộc D của điều kiện C là được phủ bởi một thi hành của C nếu như trong quá trình thi hành đó của C, đầu ra “outcome” của mỗi điều kiện đơn trong C thoả mãn các ràng buộc tương ứng.
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.
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. Người ta đã nghiên cứu một số chiến lược thử nghiệm 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 sử dụng (DU dây truyền) 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 thử nghiệm 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 vòng lặp. 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.
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
+ Vòng lặp lồng: Số phép kiểm thử có thể sẽ tăng theo cấp số nhân khi mức độ lồng nhau tăng lên:
+ Bắt đầu từ vòng lặp bên trong nhất. Đặt tất cả các vòng lặp khác vào giá trị tối thiểu
+ Tiến hành kiểm thử vòng lặp đơn cho vòng lặp
bên trong nhất trong khi giữ các vòng lặp bên ngoài ở giá trị tham số lặp tối thiểu. Bổ sung các kiểm thử khác về việc vượt cận hay giá trị bị loại ra
+ Tiến dần ra ngoài, thực hiện phép kiểm thử cho vòng lặp tiếp nhưng giữ tất cả các vòng lặp bên ngoài hơn ở giá trị tối thiểu và các vòng lặp lồng bên trong khác ở giá trị “điển hình”
+ Tiếp tục cho tới khi mọi vòng lặp đã được kiểm thử hết. 1 Vòng lặp nối tiếp: Dùng cho các vòng
lặp đơn nếu mỗi vòng lặp là độc lập. Tuy nhiên nếu 2 vòng lặp nối nhau và số đếm của vòng lặp 1 được dùng làm giá trị khởi đầu cho vòng lặp 2 thì các vòng lặp là không độc lập nhau. Khi
các vòng lặp là không độc lập thì áp dụng cho các vòng lặp lồng nhau.
2 Vòng lặp phi cấu trúc: Bất kỳ khi nào có thể được lớp vòng lặp
này nên được thiết kế lại để phản ánh việc dùng các kết
cấu lập trình có cấu trúc
59. Mô hình của kiểm thử hộp đen quan tâm đến những nhân tố nào của phần mềm? Nó nhằm tìm ra các loại sai nào? Nêu các phương pháp áp dụng cho nó? Nó nhằm tìm ra các loại sai nào? Nêu các phương pháp áp dụng cho nó?
Phương pháp kiểm thử hộp đen tập trung vào các yêu cầu chức năng của phần mềm Việc kiểm thử hộp đen nhằm tìm các loại sai sau:
- Chức năng thiếu hoặc không đúng - Sai về giao diện
- Sai trong cấu trúc hoặc trong truy cập dữ liệu ngoài - Sai thực thi chức năng
- Sai khởi đầu hoặc kết thúc modun
Nêu các phương pháp áp dụng cho kiểm thử hộp đen?
- Phân hoạch tương đương: chia miền vào của chương trình thành các lớp dữ liệu để đưa ra các ca kiểm thử
- Phân tích giá trị biên (BVA): là kĩ thuật bổ sung thêm cho phân hoạch tương đương. Thay vì chọn bất cứ phần tử nào của lớp tương đương, BVA chọn các ca kiểm thử sát với lớp tương đương. Thay vì tập trung vào điều kiện vào, BVA còn đưa ra các ca kiểm thử từ miền ra. Phương pháp này cho rằng số lớn các sai xuất hiện ở biên nhiều hơn là vùng dữ liệu trung tâm. Không những chú ý đến dữ liệu trong và sát biên mà còn chú ý đến dữ liệu ngoài và sát biên
- Đồ thị nhân quả: cung cấp cách biểu diễn chính xác các điều kiện logic và hành động tương ứng
- Kiểm thử so sánh(kiểm thử dựa vào nhau): thực thi nhiều bản khác nhau cho cùng một đặc tả. Thực hiện các kỹ thuật kiểm thử hộp đen trên với các sản phẩm cho cùng các ca kiểm thử và cùng các dữ liệu vào. So sánh các kết quả thu được. Nếu có khác biệt thì như thế có sai trong một sản phẩm nào đó.
60. Trình bày phương pháp phân hoach: nguyên tắc, mục tiêu và thiết kế ca kiểm thử? Phương châm xác định lớp tương đương là gi? Phương châm xác định lớp tương đương là gi?
- Nguyên tắc: chia miền vào của chương trình thành các lớp dữ liệu để đưa ra các ca kiểm thử.
- Mục tiêu: Nhằm tìm ra một ca kiểm thử để bộ lộ một lớp sai, bởi vậy nó rút gọn số ca kiểm thử cần phát triển
- Thiết kế ca kiểm thử: Dựa trên đánh giá các lớp tương đương đối với một điều kiện vào. Lớp tương đương biểu thị cho một tập các trạng thái hợp lệ hay không hợp lệ đối với điều kiện vào
- Phương châm:
o Điều kiện vào là phạm vi rộng hay một giá trị đặc biệt thì cần xác định:
+ Một lớp tương đương hợp lệ
+ Hai lớp tương đương không hợp lệ