Bài giảng Software Testing and Quality Assurance: Stub & Driver

Nội dung

Gỡ lỗi Brute Force

Sửa lỗi

Gỡ lỗi bằng suy luận

Gỡ lỗi bằng cách loại trừ

Gỡ lỗi bằng đi lùi

Phân tích lỗi

Unit Test

Mock object

Stub

Driver

pdf 29 trang phuongnguyen 8720
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Software Testing and Quality Assurance: Stub & Driver", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Software Testing and Quality Assurance: Stub & Driver

Bài giảng Software Testing and Quality Assurance: Stub & Driver
1Software Testing and Quality Assurance
Stub & Driver
Dr. Dao Nam Anh
Faculty of Information Technology
University of Technology and Management
2Resources
► Pressman, Software Engineering, McGraw Hill (chapter 18 
& 19)
► Sommerville, Software Engineering, Addison-Wesley 
(chapter 22 & 23)
► Software Testing and QA Theory and Practics, Chapter 7, 
WILEY Publish
► Foundations Of Software Testing, Istqb Certification, 
Dorothy Graham, Erik Van Veenendaal, Isabel Evans, Rex 
Black
► Jovanović, Irena, Software Testing Methods and 
Techniques
► Lâm Quang Vũ, 
3Nội dung
► Gỡ lỗi Brute Force
► Sửa lỗi 
Gỡ lỗi bằng suy luận
► Gỡ lỗi bằng cách loại trừ
► Gỡ lỗi bằng đi lùi
► Phân tích lỗi
► Unit Test
►Mock object
► Stub
►Driver
4Sửa lỗi 
Gỡ lỗi Brute Force: 
►Xem bộ nhớ
►Đọc từ đầu đến cuối chương trình
►Dùng công cụ debug
5BNF
► Syntax is defined in BNF as a set of 
definitions. Each definition may in-turn refer 
to other definitions or to itself.
► The LHS of a definition is the name given to 
the collection of objects on the RHS.
 ::= means “is defined as”.
 | means “or”.
 * means “zero or more occurrences”.
 + means “one or more occurrences”.
 means “n repetitions of A”.
nA
6BNF Example
► Correct phone numbers:
 3469900, 9904567, 3300000
► Incorrect phone numbers:
 0551212, 123, 8, ABCDEFG
special_digit ::= 0 | 1 | 2 | 5
other_digit ::= 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
ordinary_digit ::= special_digit | other_digit
exchange_part ::= ordinary_digit
number_part ::= 
phone_number ::= exchange_part number_part
2_ digitother
4_ digitordinary
7Sửa lỗi 
Gỡ lỗi bằng suy luận: 
►Suy nghĩ cẩn thận sẽ tìm thấy hầu hết các 
lỗi mà không cần ngồi gần máy tính. 
►Phân tích từ một tình huống cụ thể cho đến 
vấn đề lớn. 
8Syntax Testing Steps
► Identify the target language or format.
►Define the syntax of the language, formally, 
in a notation such as BNF.
► Test and Debug the syntax:
 Test the “normal” conditions by covering the BNF 
syntax graph of the input language. (minimum 
requirement)
 Test the “garbage” conditions by testing the 
system against invalid data. (high payoff)
9Sửa lỗi 
Gỡ lỗi bằng suy luận: 
1. Tạo dữ liệu kiểm thử
2. Tổ chức dữ liệu theo một thứ tự riêng cho 
chức năng kiểm thử sinh lỗi
3. Đề xuất giả thiết nguyên nhân gây lỗi
4. Chứng minh giả thuyết đó
10
Sửa lỗi 
Gỡ lỗi bằng suy luận: 
11
Sửa lỗi 
Gỡ lỗi bằng suy luận: 
12
Sửa lỗi 
Gỡ lỗi bằng suy luận: 
13
Sửa lỗi 
Gỡ lỗi bằng cách loại trừ: 
Quá trình gỡ lỗi bằng cách loại bỏ và sàng 
lọc, để đi đến một kết luận (vị trí của lỗi).
14
Sửa lỗi 
Gỡ lỗi bằng cách loại trừ: 
1. Liệt kê các nguyên nhân có thể gây lỗi
2. Loại trừ dần nguyên nhân
3. Xem lại danh sách nguyên nhân có thể
gây lỗi
4. Chứng minh nguyên nhân có thể gây lỗi
15
Sửa lỗi 
Gỡ lỗi bằng cách loại trừ: 
16
Sửa lỗi 
Gỡ lỗi bằng đi lùi: 
Bặt đầu từ vị trí thấy lỗi, đi lùi dần để tìm thấy 
nơi lỗi phát sinh.
17
Sửa lỗi 
Phân tích lỗi: 
► Where: Lỗi phát sinh ở đâu?
► Who: Ai đã để lỗi: người thiết kế, hay 
người viết code
► What: Lỗi là gì?
► How: Làm thế nào để phòng ngừa lỗi?
► Why: Tại sao không phát hiện được lỗi 
sớm hơn?
► How: Làm thế nào để phát hiện lỗi sớm?
18
Unit Testing 
Unit Test: 
► Unit Testing là một kỹ thuật kiểm thử mọi đơn vị hoạt động của mã 
nguồn với một quy trình tách biệt so với quy trình phát triển của phần 
mềm, giúp phát hiện sai sót kịp thời. 
► Unit Test là một phần mã nguồn dùng để kiểm tra một phần mã nguồn 
khác. Các đoạn mã Unit Test hoạt động liên tục hoặc định kỳ để thăm 
dò và phát hiện các tiềm ẩn, lỗi kỹ thuật trong suốt quá trình phát 
triển. 
► Unit Testing là một kỹ thuật quan trọng trong Test driven 
development. 
► Unit Testing là phương pháp bổ sung cho các phương pháp kiểm thử
khác, giúp phát hiện lỗi từ sớm, ngay từ ý tưởng thiết kế (reviews 
code, walkthroughs). 
► Unit Test được viết bởi người phát triển. Test “White Box”, “Black-Box”
trong quá trình phát triển phần mềm. 
► Unit of Code: mỗi đơn vị mã nguồn có thể là chương trình riêng lẻ, 
chức năng, thủ tục, class, phương thức,
► Unit Test có 3 trạng thái: Fail, Ignore, Pass. 
19
Unit Testing 
Unit Test: 
Mỗi UT đều được tiết kế theo trình tự sau: 
+ Thiết lập các điều kiện cần thiết: khởi tạo 
các đối tượng. 
+ Gọi các phương thức cần kiểm tra. 
+ Kiểm tra sự hoạt động của phương thức 
+ Dọn dẹp tài nguyên sau khi kết thúc kiểm 
tra. 
20
Unit Testing 
Mock object: 
Là một đối tượng ảo, mô phỏng các tính chất và
hành vi giống hệt như đối tượng thực được truyền 
vào bên trong khối mã đang vận hành nhằm kiểm 
tra tính đúng đắn của các hoạt động bên trong. 
Đặc điểm: 
+ Đơn giản hơn đối tượng thực nhưng vẫn giữ được 
sự tương tác với các đối tượng khác. 
+ Không lặp lại nội dung đối tượng thực. 
+ Cho phép thiết lập các trạng thái riêng trợ giúp 
kiểm tra. 
21
Unit Testing 
Mock object: 
Lợi ích: 
+ Đảm bảo công việc kiểm nghiệm không bị
gián đoạn bởi các yếu tố bên ngoài, giúp 
các chuyên viên tập trung vào một chức 
năng nghiệp vụ cụ thể và UnitTest vận hành 
nhanh hơn. 
+ Giúp tiếp cận hướng đối tượng tốt hơn. Nhờ
MO có thể phát hiện interface cần tách ở
một số lớp. 
+ Dễ dàng cho việc kiểm nghiệm. 
22
Unit Testing 
Mock object: 
Cách thực hiện: 
+ Đưa ra interface mô tả đối tượng. 
+ Viết nội dung cho đối tượng thực dựa trên 
interface như thông thường. 
+ Trích interface từ đối tượng thực và triển khai MO 
dựa trên interface đó. 
Stub là phần cài đặt một interface và trả về giá trị
giả cho phương thức trong interface. 
Fakes là phần cài đặt một interface là bản làm giả
bản thật nằm trong bộ nhớ (cài đặt bán hoàn 
chỉnh).
23
Unit Testing 
Mock object: 
24
Unit Testing 
Ví dụ sử dụng stub
Kiểm thử mô đun calender() có gọi 
đến môđun tính ngày trong tuần 
calc_day()chưa được phát triển.
25
Unit Testing 
Ví dụ sử dụng stub
Mô đun tính ngày trong tuần calc_day():
- input: ngày, tháng, năm
- output: trả xâu kí tự là thứ của ngày đã cho
String calc_day(Date d)
{
return "Sunday";
}
26
Unit Testing 
Ví dụ sử dụng stub
Để tăng độ thích nghi, có thể thay thế dữ liệu cố định bằng cách 
nhập kết quả trực tiếp từ bàn phím.
String calc_day(Date d)
{
String s;
cout << ”Enter day_of_week of ”<< d;
cin >> s;
return s;
}
27
Unit Testing 
Ví dụ về test drive
Test drive để thử nghiệm calc_day()
void calc_day_test_drive()
{
Date d;
String s;
while (1) {
cout << ”Enter date: ”);
cin >> d;
s = calc_day(d);
cout << s << endl;
}
}
28
Unit Testing 
Test-driven development: 
►-TDD là một chiến lược phát triển sử dụng 
kỹ thuật UT theo nguyên tắc tạo ra các 
công đoạn kiểm nghiệm trước khi xây dựng 
mã.
29
Q & A

File đính kèm:

  • pdfbai_giang_software_testing_and_quality_assurance_stub_driver.pdf