Bài thuyết trình unit test - Pdf 31

UNIT TEST
Nhóm 10

1


Các nội dung chính
Định nghĩa Unit Test
Tầm quan trọng Unit Test
Phương pháp xây dựng Unit Test
Các đối tượng thay thế (MOCK Object)
Các kinh nghiệm trong Unit Test
Các công cụ hỗ trợ

2


Unit Test là gì?
- Unit Testing, kiểm tra từng bộ phận rất
nhỏ, từng unit riêng biệt trong source code
của chương trình để kiểm tra xem nó có
hoạt động chính xác không.
- Từ những bộ phận nhỏ này, ta lại kiểm tra
những unit lớn hơn có sử dụng những unit
nhỏ đã được kiểm tra đó.

3


Unit Test
- Một Unit Test là một phần của source code,

nguồn.

6


Phương pháp xây dựng Unit Test
 Thiết kế UT: 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, xác định tài nguyên cần
thiết, xây dựng các dữ liệu giả…
• Triệu gọi các phương thức cần kiểm tra.
• Kiểm tra sự hoạt động đúng đắn của các
phương thức.
• Dọn dẹp tài nguyên sau khi kết thúc kiểm
tra.
7


Phương pháp xây dựng Unit Test
 Có 2 kỹ thuật phổ
biến:
- Black box testing
- White box testing

8


Phương pháp xây dựng Unit Test
• Phân tích các tình huống có thể xảy ra đối với mã.
• Mọi UT phải bắt đầu với trạng thái “fail” và chuyển

1. “A mock object is simply a debug replacement for
a real-world object”
(Andy Hunt, Dave Thomas – Pragmatic unit testing in
java with Junit)
2.

“A mock object is an object created to stand in for
an object that your code will be collaborating with.
Your code can call methods on the mock object,
which will deliver results as set up by your tests.”
(Source: JUnit in Action, Vincent Massol)
11


Đă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.
12


MOCK OBJECTS(tt)
Sử dụng mocks khi nào thì thích hợp(when):
• Có thể sử dụng “mock object” để mô phỏng các đối
tượng thật(real object) sau:
- Không có hành vi cụ thể => không thể đoán trước
kết quả

REAL
CLASS

MOCK
CLASS
TESTED
FUNCTION
15


Các Dạng Mocks
Có thể dùng nhiều kĩ thuật để test các module trong
chương trình:

1. Stubs
2. Mock
3. Test a servlet

16


Simple Stubs
• Giả sử gọi hàm getTime() để trả về thời gian hiện tại:
public long getTime()
{
return System.currentTimemillis();
}

public long getTime()
{



MOCK(tt)
Áp dụng class interface cho lớp muốn kiểm thử:
public class SystemEnvironment implements
Environmental {
public long getTime()
{
return System.currentTimeMillis();
}
// other methods ...

}
19


MOCK(tt)
Tạo class mock kế thừa từ interface này:
public class MockSystemEnvironment
implements Environmental {
public long getTime() {
return current_time;
}

public void setTime(long aTime) {
current_time = aTime;
}
private long current_time;
// ...


{
[Test]
public void XDPMTest()
{
MockDAO mock = new MockDAO();
string actualValue =
PrintBill.Print(mock.GetName(0));
Assert.That(actualValue,
Is.EqualTo("Xay dung phan mem"));
}
}
22


Test a Servlet
 Là những khối lệnh của 1 web server
quản lý.
 Yêu cầu các URLs xác định chuyển đến
container servlet.
 Các URL lần lượt gọi các code servlet.
 Sau đó servlet gửi 1 reponse tới các trình
duyệt yêu cầu.
23


Test a Servlet(tt)
public void doGet(HttpServletRequest req,HttpServletResponse res)
throws ServletException, IOException
{
String str_f = req.getParameter("Fahrenheit");

import junit.framework.*
import com.mockobjects.servlet.*;
public class TestTempServlet extends TestCase {
public void test_bad_parameter() throws Exception {
TemperatureServlet s = new TemperatureServlet();
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
request.setupAddParameter("Fahrenheit", "boo!");
response.setExpectedContentType("text/html");
15 s.doGet(request,response);
response.verify();
assertEquals("Invalid temperature: boo!nn", response.getOutputStreamContents());
}
public void test_boil() throws Exception {
TemperatureServlet s = new TemperatureServlet();
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
request.setupAddParameter("Fahrenheit", "212");
response.setExpectedContentType("text/html");
s.doGet(request,response);
response.verify();
assertEquals("Fahrenheit: 212, Celsius: 100.0nn",
response.getOutputStreamContents());

25



Nhờ tải bản gốc
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status