1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài thuyết trình unit test

30 605 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 30
Dung lượng 291,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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ợ

Trang 1

UNIT TEST

Nhóm 10

Trang 2

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ợ

Trang 3

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 đó

Trang 4

Unit Test

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

thực thi một phần code chính khác và so

sánh kết quả thực tế với kết quả mong đợi.

- Được thực hiện bởi các lập trình viên

- Có thể làm bằng tay (Manual Unit Test) hoặc

tự động (Automated Unit Test)

Trang 5

Tầm quan trọng Unit Test

• Lợi ích của Unit Test:

- Đảm bảo chất lượng từng Unit trong phần mềm

- Phát hiện lỗi sớm và chỉnh sửa kịp thời

- Giảm chi phí

- Tái sử dụng được

- Giúp chúng ta Design

Trang 6

Phương pháp xây dựng Unit Test

Quá trình thực hiện

Unit Test

Unit test nên được

xây dựng cho mỗi

module sau khi

kiểm tra xong mã

nguồn

Trang 7

Phương pháp xây dựng Unit Test

• 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

Trang 8

Phương pháp xây dựng Unit Test

Có 2 kỹ thuật phổ

biến:

- Black box testing

- White box testing

Trang 9

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

trạng thái “pass” sau một số thay đổi hợp lý đối với mã chính.

• Khi viết một đoạn mã quan trọng, hãy viết các UT

Trang 10

Phương pháp xây dựng Unit Test

• Sớm nhận biết các đoạn mã không ổn định và có nguy

cơ gây lỗi cao, viết UT tương ứng để khống chế.

• Nên tạo ra một lớp kiểm tra riêng vì những lỗi nghiêm trọng có thể phát sinh từ các đối tượng quan trọng.

• Nên kiểm tra lại các UT cũ, sau một thời gian code.

• Sử dụng nhiều phương thức kiểm tra khác nhau Hãy viết càng đơn giản càng tốt.

• Cuối cùng, viết UT cũng đòi hỏi sự nỗ lực, kinh

nghiệm và sự sáng tạo như viết PM.

Trang 11

MOCK OBJECTS (Đối tượng thay thế)

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)

Trang 12

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

Trang 13

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ả

- Khó cài đặt

- Xử lý chậm

- Khó xảy ra và dễ gây lỗi

- Object liên quan giao diện người dùng

- Object chưa tồn tại dạng mã (mới trên bản thiết kế)

Trang 14

MOCK OBJECTS(tt)

Thiết kế (how):

- 3 bước quan trọng để sử dụng các đối tượng thay thế

trọng kiểm thử:

1 Đưa ra interface để mô tả đối tượng

2 Viết nội dung cho đối tượng thực dựa trên interface

3 Trích interface từ đối tượng thật và triển khai mock

Trang 17

Simple Stubs

• Giả sử gọi hàm getTime() để trả về thời gian hiện tại:

public long getTime()

return debug_cur_time;

} else{

return System.currentTimemillis();

}

17

Trang 18

Tạo 1 interface:

public interface Environmental

Kiểm thử 1 lớp truy xuất cơ sở dữ liệu:

public class RealDAO

Trang 19

Áp dụng class interface cho lớp muốn kiểm thử:

public class SystemEnvironment implements

}

Trang 20

Tạo class mock kế thừa từ interface này:

public class MockSystemEnvironment

Trang 21

Sử dụng mock để kiểm thử các chức năng liên quan:

Trang 23

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

Trang 24

int temp_f = Integer.parseInt(str_f);

double temp_c = (temp_f - 32)*5.0 /9.0;

out.println("Fahrenheit: " + temp_f +

", Celsius: " + temp_c);

g catch (NumberFormatException e) f

Trang 25

public void test_bad_parameter() throws Exception {

TemperatureServlet s = new TemperatureServlet();

MockHttpServletRequest request = new MockHttpServletRequest();

10 MockHttpServletResponse response = new MockHttpServletResponse();

public void test_boil() throws Exception {

TemperatureServlet s = new TemperatureServlet();

MockHttpServletRequest request = new MockHttpServletRequest();

25 MockHttpServletResponse response = new MockHttpServletResponse();

Trang 26

Ưu điểm

1 Đảm bảo tính chính xác của chương

trình

2 Phát hiện lỗi ngay từ những phase đầu

tiên trong quá trình phát triển phần mềm

3 Sửa đổi dễ dàng hơn

4 Tăng khả năng tích hợp code

Trang 27

Nhược điểm

1 Gây khó khăn trong việc thực hiện

chuyển đổi giữa đối tượng thật và đối

tượng thay thế(mocks)

2 Không thể lường trước những vấn đề có

thể xảy ra khi kết hợp các module với

nhau

3 Phải duy trì mô hình(maintain the mock)

Trang 28

Các kinh nghiệm trong Unist test

Trang 30

Demo NUnit

Ngày đăng: 28/11/2015, 19:59

TỪ KHÓA LIÊN QUAN

w