1. Trang chủ
  2. » Luận Văn - Báo Cáo

KIỂM THỬ TỰ ĐỘNG CHỨC NĂNG QUẢN LÝ KHO HÀNG VỚI CÔNG CỤ KIỂM THỬ JUNIT

79 512 14

Đ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 79
Dung lượng 9,08 MB
File đính kèm quan ly sieu thi.rar (1 MB)

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

Nội dung

PHẦN 1. MỞ ĐẦU 1. Tên đề tài Kiểm thử tự động chức năng hệ thống quản lý kho hàng với công cụ Junit 2. Lý do chọn đề tài Trong những năm gần đây ngành công nghệ thông tin nói chung và kĩ thuật phần mềm nói riêng đã có những bước phát triển mạnh mẽ. Các phần mềm ngày càng được ứng dụng rộng rãi trong mọi lĩnh vực của cuộc sống mà trong đó các phần mềm quản lý đã đặc biệt chứng tỏ được tính ưu việt và tiệních của mình Nhưng cũng từ đó nảy sinh ra nhiểu vấn đề về lỗi hỏng hóc phần mềm không đáng có gây ra các ảnh hưởng nghiêm trọng đến xã hội, kinh tế Những lỗi này có thể do tự bản thân phần mềm bị hỏng học không được kiểm duyệt kĩ lưỡng trước khi đưa ra cho người dùng hay cũng có thể do người dùng cố tình phá hoại nhằm đánh cắp thông tin cá nhân như mã số tài khoản ngân hàng, số điện thoại, danh bạ tin nhắn,…Những vấn đề nan giải và cấp thiết này càng có xu hướng mở rộng trong các năm gần đây, điển hình như sự cố máy tính Y2K năm 2000 làm tê liệt nhiều hệ thống máy tính lớn hay như càng có nhiều loại virus phá hoại mới xuất hiện, tấn công vào các lỗ hổng bảo mật phần mềm là tê liệt nhiều hệ thống phần mềm và phần cứng. Từ đây ta dễ dàng nhận ra là mặc dù phần mềm phát triển ngày càng phức tạp nhưng vấn đề chất lượng vẫn là một dẩu hỏi lớn cần xem xét cẩn thận. Do đó yêu cầu đặt ra là cần có công tác kiểm thử phần mềm thật kĩ lưỡng nhằm ngăn chặn các lỗi hay hỏng hóc có tiềm tàng bên trong phần mềm mà ta chưa kịp nhận ra. Tuy nhiên vì phần mềm ngày càng lớn, hàng nghìn module, có thể do cả một công ty hàng nghìn người phát triển vì vậy để kiểm thử được một phần mềm lớn như vậy sẽ tốn rất nhiều công sức và thời gian nếu làm thủ công, chưa kể đến chất lượng kiểm thử sẽ không cao và thật chính xác phù hợp với yêu cầu. Theo nhiều tính toán thì công việc kiểm thử đóng vai trò hết sức quan trọng trong quy trình phát triển phần mềm nó đóng góp tới 30%-70% tổng toàn bộ chi phí cho việc sản xuất phần mềm. Vì vậy cần có các hệ thống kiểm thử phần mềm một cách tự động cho phép ta thực hiện được các công việc một cách nhanh chóng và độ an toàn chính xác cao nhất có thể. Và đó là lí do nhóm em lựa chọn đề tài “ Kiểm thử tự động chức năng hệ thống quản lý kho hàng với công cụ Junit ” để nghiên cứu, tìm hiều và đề ra các giải pháp mới để cải tiến các quy trình kiểm thử như hiện nay sao cho năng suất cao nhất. 3. Mục đích Đề tài “ Kiểm thử tự động chức năng hệ thống quản lý kho hàng với công cụ Junit ” tìm hiểu về kiểm thử phần mềm,kiểm thử tự động,tìm hiểu về công cụ Junit và kiểm thử chức năng của hệ thống quản lý kho hàng bằng công cụ kiểm thử tự động Junit. 4. Bố cục Nội dung chính đề tài chia làm 3 chương Chương 1: Tổng quan về kiểm thử phần mềm : phần này chúng ta sẽ đi tìm hiểu về một số khái niện phần mềm và kiểm thử phần mềm. Chương 2: Tìm hiểu về công cụ kiểm thử tự động Junit : phần này chúng ta sẽ tìm hiểu về lịch sử công cụ kiểm thử tự động Junit, cách cài đặt và một số bước thực hiện cơ bản. Chương 3: Ứng dụng công cụ Junit để kiểm thử tự động chức năng của hệ thống quản lí kho hàng . 5. Phương pháp tiếp cận Đọc lý thuyết: thu thập tài liệu, thống kê lý thuyết. Phân tích mẫu Thực nghiệm thực tế PHẦN 2 NỘI DUNG CHƯƠNG 1. TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM 1.1 Phần mềm 1.1.1 Định nghĩa phần mềm  Theo định nghĩa của IEEE: Bao gồm các chương trình máy tính, các thủ tục, các tài liệu có thể liên quan và các dữ liệu liên quan đến hoạt động của hệ thống máy tính Theo định nghĩa của ISO: 4 thành phần cơ bản của phần mềm: •Chương trình máy tính (code) •Các thủ tục •Tài liệu •Dữ liệu cần thiết để vận hành phần mềm 1.1.2 Đặc trưng của phần mềm -Phần mềm được kỹ nghệ, không được chế tạo theo nghĩa cổ điển -Có tính phức tạp cao và luôn thay đổi -Phần mềm không nhìn thấy được 1.2 Định nghĩa kiểm thử phần mềm Theo Glenford Myers: •Kiểm thử là quá trình vận hành chương trình để tìm ra lỗi Theo IEEE: Kiểm thử là •Là quá trình vận hành hệ thống hoặc thành phần dưới những điều kiện xác định, quan sát hoặc ghi nhận kết quả và đưa ra đánh giá về hệ thống hoặc thành phần đó. •Là quá trình phân tích phần mềm để tìm ra sự khác biệt giữa điều kiện thực tế và điều kiện yêu cầu và dựa vào điểm khác biệt đó để đánh giá tính năng phần mềm

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN

 BÀI TẬP LỚN

ĐỀ TÀI: KIỂM THỬ TỰ ĐỘNG CHỨC NĂNG QUẢN LÝ KHO

HÀNG VỚI CÔNG CỤ KIỂM THỬ JUNIT

Giảng viên hướng dẫn : Th.s Nguyễn Đức Lưu

Lớp : KTPM K9 HKPSinh viên thực hiện : Nguyễn Minh Đức

Phạm Minh HồngTrần Văn Dương

Hà Nội, 2018

Trang 2

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN

Phạm Minh HồngTrần Văn Dương

Hà Nội, 2018

Trang 3

Luund7@gmail.com LỜI CẢM ƠN

Trong suốt quá trình học tập và làm bài tập lớn, nhóm 14 đà nhận được sựhướng dẫn, giúp đờ nhiệt tình của quý thầy cô trong khoa Công nghệ thông tintrường Đại học Công nghiệp Hà Nội và các bạn trong bộ môn để hoàn thành đề tàinghiên cứu của nhóm Với lòng kính trọng và sự biết ơn sâu sắc, nhóm 14 xin đượcbày tỏ lời cảm ơn chân thành tới thầy Nguyễn Đức Lưu - người thầy đà hết lònggiúp đờ, dạy bảo, động viên và tạo mọi điêu kiện thuận lợi cho nhóm trong suốtquá trình học tập và hoàn thành bài tập lớn cùa nhóm, cùng tất cả các thầy cô trongkhoa, trong trường và bạn bè trong bộ môn đầ giúp đờ nhóm trong quá trình họctập

Những đóng góp cùa mọi người là kinh nghiệm quý báu giúp cho các thànhviên trong nhóm sẽ có những dự tính sau này trong khi làm đồ án tốt nghiệp và saukhi tốt nghiệp

Chúng em xin chân thành cảm ơn !

Trang 4

MỤC LỤC

LỜI CẢM ƠN 2

MỤC LỤC 3

PHẦN 1 MỞ ĐẦU 5

PHẦN 2 NỘI DUNG 7

CHƯƠNG 1 TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM 7

1.1 Phần mềm 7

1.1.1 Định nghĩa phần mềm 7

1.1.2 Đặc trưng của phần mềm 7

1.2 Định nghĩa kiểm thử phần mềm 7

1.3 Mục tiêu của kiểm thử 7

1.4 Phân loại kiểm thử 8

1.4.1 Dựa vào mục đích kiểm thử 8

1.4.2 Dựa vào chiến lược kiểm thử 8

1.4.3 Dựa vào phương pháp tiến hành kiểm thử 8

1.4.4 Dựa vào kỹ thuật kiểm thử 9

1.5 Đối tượng thực hiện kiểm thử 9

1.6 Quy trình kiểm thử 9

1.7 Các cấp độ kiểm thử 10

1.8 Các loại hình kiểm thử 11

Trang 5

1.9 Các cấp độ kiểm thử 11

1.9.1 Kiểm thử đơn vị- Unit testing 11

1.9.2 Kiểm thử tích hợp 13

1.9.3 Kiểm thử hệ thống 14

1.9.4 Kiểm thử chấp nhận 14

1.10 Kiểm thử tự động 14

1.10.1 Tổng quan về kiểm thử tự động 14

1.10.2 Quy trình kiểm thử tự động 15

1.10.3 Ưu , nhược điểm của kiểm thử tự động 16

1.10.4 Một số công cụ kiểm thử tự động 16

CHƯƠNG 2 GIỚI THIỆU VỀ CÔNG CỤ KIỂM THỬ JUNIT 17

2.1 Lịch sử phát triển của Junit 17

2.2 Junit là gì? 17

2.3 Lợi ích của Junit 18

2.4 Cài đặt 19

2.5 Các phương thức trong Junit 19

2.6 Cách sử dụng cơ bản 19

2.7 Hướng dẫn sử dụng cơ bản của junit trong eclip 25

Trang 6

ra các ảnh hưởng nghiêm trọng đến xã hội, kinh tế Những lỗi này có thể do tự bảnthân phần mềm bị hỏng học không được kiểm duyệt kĩ lưỡng trước khi đưa ra chongười dùng hay cũng có thể do người dùng cố tình phá hoại nhằm đánh cắp thôngtin cá nhân như mã số tài khoản ngân hàng, số điện thoại, danh bạ tin nhắn,…Những vấn đề nan giải và cấp thiết này càng có xu hướng mở rộng trong các nămgần đây, điển hình như sự cố máy tính Y2K năm 2000 làm tê liệt nhiều hệ thốngmáy tính lớn hay như càng có nhiều loại virus phá hoại mới xuất hiện, tấn công vàocác lỗ hổng bảo mật phần mềm là tê liệt nhiều hệ thống phần mềm và phần cứng.

Từ đây ta dễ dàng nhận ra là mặc dù phần mềm phát triển ngày càng phức tạpnhưng vấn đề chất lượng vẫn là một dẩu hỏi lớn cần xem xét cẩn thận

Do đó yêu cầu đặt ra là cần có công tác kiểm thử phần mềm thật kĩ lưỡngnhằm ngăn chặn các lỗi hay hỏng hóc có tiềm tàng bên trong phần mềm mà ta chưakịp nhận ra Tuy nhiên vì phần mềm ngày càng lớn, hàng nghìn module, có thể do

cả một công ty hàng nghìn người phát triển vì vậy để kiểm thử được một phầnmềm lớn như vậy sẽ tốn rất nhiều công sức và thời gian nếu làm thủ công, chưa kểđến chất lượng kiểm thử sẽ không cao và thật chính xác phù hợp với yêu cầu Theo

Trang 7

nhiều tính toán thì công việc kiểm thử đóng vai trò hết sức quan trọng trong quytrình phát triển phần mềm nó đóng góp tới 30%-70% tổng toàn bộ chi phí cho việcsản xuất phần mềm Vì vậy cần có các hệ thống kiểm thử phần mềm một cách tựđộng cho phép ta thực hiện được các công việc một cách nhanh chóng và độ an

toàn chính xác cao nhất có thể Và đó là lí do nhóm em lựa chọn đề tài “ Kiểm thử

tự động chức năng hệ thống quản lý kho hàng với công cụ Junit ” để nghiên

cứu, tìm hiều và đề ra các giải pháp mới để cải tiến các quy trình kiểm thử như hiệnnay sao cho năng suất cao nhất

3 Mục đích

Đề tài “ Kiểm thử tự động chức năng hệ thống quản lý kho hàng với công

cụ Junit ” tìm hiểu về kiểm thử phần mềm,kiểm thử tự động,tìm hiểu về công cụ

Junit và kiểm thử chức năng của hệ thống quản lý kho hàng bằng công cụ kiểm thử

tự động Junit

4 Bố cục

Nội dung chính đề tài chia làm 3 chương

Chương 1: Tổng quan về kiểm thử phần mềm : phần này chúng ta sẽ

đi tìm hiểu về một số khái niện phần mềm và kiểm thử phần mềm.Chương 2: Tìm hiểu về công cụ kiểm thử tự động Junit : phần nàychúng ta sẽ tìm hiểu về lịch sử công cụ kiểm thử tự động Junit, cáchcài đặt và một số bước thực hiện cơ bản

Chương 3: Ứng dụng công cụ Junit để kiểm thử tự động chức năngcủa hệ thống quản lí kho hàng

Trang 8

5 Phương pháp tiếp cận

Đọc lý thuyết: thu thập tài liệu, thống kê lý thuyết

Phân tích mẫu

Thực nghiệm thực tế

Trang 9

PHẦN 2 NỘI DUNG

CHƯƠNG 1 TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM

1.1 Phần mềm

1.1.1 Định nghĩa phần mềm

Theo định nghĩa của IEEE: Bao gồm các chương trình máy tính, các thủ tục,

các tài liệu có thể liên quan và các dữ liệu liên quan đến hoạt động của hệ thốngmáy tính

Theo định nghĩa của ISO: 4 thành phần cơ bản của phần mềm:

• Chương trình máy tính (code)

• Các thủ tục

• Tài liệu

• Dữ liệu cần thiết để vận hành phần mềm

1.1.2 Đặc trưng của phần mềm

-Phần mềm được kỹ nghệ, không được chế tạo theo nghĩa cổ điển

-Có tính phức tạp cao và luôn thay đổi

-Phần mềm không nhìn thấy được

1.2 Định nghĩa kiểm thử phần mềm

 Theo Glenford Myers:

• Kiểm thử là quá trình vận hành chương trình để tìm ra lỗi

 Theo IEEE: Kiểm thử là

Trang 10

• Là quá trình vận hành hệ thống hoặc thành phần dưới những điều kiệnxác định, quan sát hoặc ghi nhận kết quả và đưa ra đánh giá về hệthống hoặc thành phần đó

• Là quá trình phân tích phần mềm để tìm ra sự khác biệt giữa điều kiệnthực tế và điều kiện yêu cầu và dựa vào điểm khác biệt đó để đánh giátính năng phần mềm

1.3 Mục tiêu của kiểm thử

- Tìm ra được càng nhiều lỗi càng tốt trong điều kiện về thời gian đã định vànguồn lực sẵn có

- Chứng minh rằng sản phẩm phần mềm phù hợp với các đặc tả của nó

- Xác thực chất lượng kiểm thử phần mềm đã dùng chi phí và nỗ lực tối thiểu

- Thiết kế tài liệu kiểm thử một cách có hệ thống và thực hiện nó sao cho cóhiệu quả, tiết kiệm được thời gian công sức

1.4 Phân Loại Kiểm Thử

 Phân loại kiểm thử dựa trên các yếu tố:

• Mục đích kiểm thử

• Chiến lược kiểm thử

• Phương pháp kiểm thử

• Kỹ thuật kiểm thử

Trang 11

1.4.1 Dựa Vào Mục Đích Kiểm Thử

- Kiểm thử đơn vị, module

- Kiểm thử tải dữ liệu (load testing)

- Kiểm thử tải trọng (stress testing)

- Kiểm thử hiệu suất (performance testing)

1.4.2 Dựa vào chiến lược kiểm thử

Trang 12

1.4.3 Dựa vào phương pháp tiến hành kiểm thử

• Kiểm thử động có thể bắt đầu trước khi chương trình đã hoàn tất

1.4.4 Dựa vào kỹ thuật kiểm thử

Kiểm thử hộp trắng

• Kiểm thử theo góc nhìn thực hiện

• Cần có kiến thức về chi tiết thiết kế và thực hiện bên trong

• Kiểm thử dựa vào phủ các lệnh, các nhánh, phủ các điều kiện con

Trang 14

1.6 Quy trình kiểm thử

1.7 Các cấp độ kiểm thử

Kiểm thử đơn vị- Unit testing

Kiểm thử tích hợp- Integration testing

Kiểm thử hệ thống- System testing

Kiểm thử chấp nhận- Acceptance testing

Trang 15

 Kiểm thử phi chức năng:

• Tập trung vào kiểm thử sản phẩm, hệ thống phần mềm cần kiểm thử cónhững đặc tính tốt như thế nào (how well)

• Kiểm thử phi chức năng có thể được sử dụng ở mọi cấp độ kiểm thửnhưng thường được sử dụng hiệu quả nhất trong cấp độ kiểm thử hệ thống

và kiểm thử chấp nhận sản phẩm

 Kiểm thử liên quan đến sự thay đổi:

Trang 16

• Thực hiện hoạt động kiểm thử khi có sự thay đổi trên hoặc trong sảnphẩm

• Sự thay đổi của sản phẩm phần mềm có thể là:

- Sửa chữa các lỗi tìm được

- Sản phẩm được nâng cấp, được thay đổi về chức năng

1.9 Các cấp độ kiểm thử

1.9.1 Kiểm thử đơn vị- Unit testing

 Kiểm thử đơn vị nhằm kiểm tra đơn vị thiết kế nhỏ nhất- một module phầnmềm Một module hoạt động thường có trao đổi thông tin với module mứcdưới và mức trên nó, do đó phạm vi phát hiện lỗi liên quan chặt chẽ tớimodule này

Người tiến hành kiểm thử đơn vị: lập trình viên cùng nhóm của mình.

Kỹ thuật kiểm thử đơn vị: chủ yếu là hộp trắng, trong các trường hợp cần

thiết có thể sử dụng thêm kỹ thuật kiểm thử hộp đen

Trang 17

Kỹ thuật kiểm thử đơn vị

Module không phải là một chương trình độc lập, nên cần phát triển thêm các

Driver và Stub để tiến hành kiểm thử đơn vị

Bộ lái (driver): là một hàm main điều khiển việc đưa dữ liệu vào và nhận

kết quả của module đang cần kiểm thử

Cuống (stub): là một chương trình máy tính dùng để thay thế cho một

module phần mềm sẽ được xác định sau (IEEE)

Stub (dummy program): Là một đoạn mã dùng để mô phỏng hoạt động của

thành phần còn thiếu

Trang 18

1.9.2 Kiểm thử tích hợp

 Kiểm thử tích hợp nhằm nhận được một bộ phận chức năng hay một hệ contốt

 Là một kỹ thuật có tính hệ thống để xây dựng cấu trúc của chương trình

 Từ các module đã qua kiểm thử đơn vị, xây dựng cấu trúc chương trình đảmbảo tuân theo thiết kế

 Có hai cách tích hợp:

 Tích hợp từng bước Theo cách này có 3 chiến lược:

- Tích hợp từ dưới lên(bottom-up testing)

Trang 19

- Tích hợp từ trên xuống (top-down testing)

- Kết hợp 2 chiến lược trên (sandwich testing)

 Tích hợp đồng thời: kiểm thử vụ nổ lớn (big bang testing)

 Các lỗi thường gặp

• Dữ liệu bị mất khi đi qua một giao diện

• Hiệu ứng 1 module vô tình gây ra ảnh hưởng tới các module khác

• Sự kết hợp các chức năng phụ có thể không tạo ra được chức năngchính mong muốn

• Các sai sót nhỏ có thể trở thành thảm họa

• Có thể gặp vấn đề với các cấu trúc dữ liệu toàn cục

1.9.3 Kiểm thử hệ thống

 Khi nào có thể thực hiện kiểm thử hệ thống:

• Hệ thống cần kiểm thử đã hoàn thiện

• Kiểm thử tích hợp và đơn vị đã hoàn thành

• Sản phẩm được tích hợp đúng thiết kế

• Các tài liệu đặc tả đã là bản cuối cùng

• Các tài liệu hỗ trợ kiểm thử như test plan, test case đã hoàn thành

1.9.4 Kiểm thử chấp nhận

 Kiểm thử chấp nhận (aceptance testing) : vận hành hệ thống trong môitrường của người sử dụng

 Kiểm thử alpha (alpha testing)

• Người dùng thực hiện với số liệu giả lập

Trang 20

• Trong môi trường phát triển

 Kiểm thử beta (beta testing)

• Người dùng thực hiện với số liệu thực

• Trong môi trường ứng dụng thực

1.10 Kiểm thử tự động

1.10.1 Tổng quan về kiểm thử tự động

 Kiểm thử tự động: áp dụng các công cụ giúp thực hiện việc kiểm thử phầnmềm

 Nên sử dụng công cụ tự động khi:

• Không đủ tài nguyên

• Kiểm thử hồi quy

• Kiểm tra khả năng vận hành của phần mềm trong môi trường đặc biệt

 Test script: nhóm mã lệnh đặc tả kịch bản dùng để tự động hóa một trình tựkiểm thử

 Test scipt: có thể tạo thủ công hoặc tạo tự động dùng công cụ kiểm thử tựđộng

Trang 21

1.10.2 Quy trình kiểm thử tự động

1 Tạo test script

Giai đoạn này ta dùng test tool để ghi lại các thao tác lên PM cần kiểm tra

và tự động sinh ra test script

2 Chỉnh sửa lại test script

Chỉnh sửa lại test script thực hiện kiểm tra theo đúng yêu cầu đặt ra, cụ thể

là làm theo test case cần thực hiện

3 Chạy test script để kiểm thử tự động

Giám sát hoạt động kiểm tra phần mềm của test script

4 Đánh giá kết quả

Kiểm tra kết quả thông báo sau khi thực hiện kiểm thử tự động Sau đó bổsung, chỉnh sửa những sai sót

Trang 22

1.10.3 Ưu , nhược điểm của kiểm thử tự động

 Ư u điểm:

• Kiểm thử phần mềm không cần can thiệp của tester

• Giảm chi phí thực hiện kiểm tra số lượng lớn các test case hoặc testcase lặp lại nhiều lần

• Giả lập tình huống khó có thể thực hiện bằng tay

 Nhược điểm:

• Mất chi phí tạo các script để thực hiện kiểm thử tự động

• Tốn chi phí dành cho bảo trì các script

• Đòi hỏi tester phải có kỹ năng tạo và thay đổi script cho phù hợp testcase

• Không áp dụng tìm được các lỗi mới cho phần mềm

1.10.4 Một số công cụ kiểm thử tự động

Công cụ tự động Quick Test Pro, Junit, Selenium, Robotium…

Trang 23

CHƯƠNG 2 GIỚI THIỆU VỀ CÔNG CỤ KIỂM THỬ JUNIT

2.1 Lịch sử phát triển của Junit

 Vào giũa nhũng năm 90 của thế kỷ 20, Kent Beck đã phát triển một bộ thửnghiệm đầu tiên cho SmairTalk

 Beck và Gamma phát triển Junit trên một chuyến bay từ Zurick đếnWashington DC

 Từ đó trở di Junit trở thành công cụ chuẩn cho phát triển thách thức trongJava

Ngày nay, Junit được tích hợp sẵn trong các IDE cùa Java (Eclipse, BlueJ,Jbuilder, DrJava)

2.2 Junit là gì?

 Các ngôn ngữ lập trình như như ASP, C++, C, Delphi, Perl, PHP, REBOL,Python,… đều có bộ hỗ trợ Unit Test riêng của nó JUnit là mộtframework được dùng cho Unit Test trong Java JUnit được xây dựng bởiErich Gamma và Kent Beck, hai người nổi tiếng nhất về lập trình XP

 Trong JUnit có các Test Case là các lớp của Java, các lớp này bao gồmmột hay nhiều các phương thức cần kiểm tra, và Test Case này lại đượcnhóm với nhau để tạo thành Test Suite Mỗi phương thức thửtrong JUnit phải được thực thi nhanh chóng Tốc độ ở đây là điều tối quantrọng vì càng nhiều phép thử được viết và tích hợp vào bên trong quá trình

Trang 24

phần mềm thì càng tốn nhiều thời gian để hơn cho việc chạy toàn bộ TestSuite.

 Những người lập trình không muốn bị ngắt quãng trong một thời gian dàitrong khi các phép thử đang chạy, do đó các phép thử mà càng chạy lâu thì

sẽ có nhiều khả năng là các lập trình viên sẽ bỏ qua bước này Các phépthử được thiết kế để khi chạy mà không cần có sự can thiệp của conngười

 Mỗi phép thử trong JUnit là một phương thức public, không có đối số vàđược bắt đầu bằng chữ test ( testXXX()) Nếu chúng ta không tuân thủtheo qui tắc này thì JUnit sẽ không xác định được các phương thức testmột cách tự động

2.3 Lợi ích của Junit

 JUnit tránh cho người lập trình phải làm đi làm lại những việc kiểm thửnhàm chán bằng cách tách biệt mã kiểm thử ra khỏi mã chương trình,đồng thời tự động hóa việc tổ chức và thi hành các bộ số liệu kiểm thử

 Thoạt tiên, khi sử dụng JUnit, ta có thể có cảm giác là JUnit chỉ làm mấtthêm thời gian cho việc kiểm thử: Thay vì phải viết thêm các lớp vàphương thức mới phục vụ cho công tác kiểm thử, ta có thể soạn nhanhmột bộ số liệu rồi viết ngay vào trong phương thức main() và quan sátngay kết quả kiểm thử Vì quá trình soạn số liệu và quá trình kiểm thửdiễn ra đồng thời, nên ta sẽ dễ dàng nhận biết được ngay chương trình đãchạy đúng trên bộ số liệu kiểm thử hay không, mà không cần nhìn vào tínhiệu “xanh” mà JUnit có thể hỗ trợ

 Nhưng khi tổ chức lại chương trình cho hợp lý hơn (refactoring) hoặc khiphải thay đổi chương trình để phục vụ cho nhu cầu mới, các bộ số liệu

Trang 25

kiểm thử trước đây sẽ cần được sử dụng lại để chắc chắn rằng những thayđổi trong chương trình không làm phương hại đến những thành quả trước

đó, lúc này ta sẽ phải mất thời gian để tìm hiểu lại xem bộ số liệu trướcđây sẽ tương ứng với kết xuất gì vì ta không thể nhớ hết mọi hoạt độngkiểm thử đã diễn ra Việc nhớ lại những kiểm thử đã qua sẽ chẳng thú vị

vì không đem đến cho ta điều gì mới Nếu phải kiểm thử trên những bộ

số liệu lớn thì gánh nặng của việc tổ chức kiểm thử sẽ chồng chất thêm.JUnit giúp người lập trình tự động hóa các công việc nhàm chán, và chỉcần nhìn thấy tín hiệu “xanh” là người lập trình có thể an tâm rằngmodule đã được lập trình đúng

2.4 Cài đặt

- Phiên bản cài đặt: 1.4 hoặc 1.5.

- Công cụ được cài đặt trên hệ điều hành Windows.

- Yêu cầu về phần mềm hỗ trợ: phần mềm Eclipse.

- Yêu cầu khác: máy đã cài đặt biến môi trường Java, bộ framewwork

Apache POI

2.5 Các phương thức trong Junit

• assertXXXQ: Các phương thức dạng assertXXX( ) được dùng đế kiểm tra các điều kiện khác nhau

• SetUp() và teardown(): Hai phương thức này là 1 phân cùa lớpJunit.framewor1<.TestCase Khi sử dụng 2 phương thức này sẽ giúp chúng tatránh được việc trùng mã khi nhiềuu test cùng chia sẻ nhau ở phân khởi tạo vàdọn dẹp các biến

Trang 26

• Tố chức các phép thử: Mỏi phép thử (Test Case) chi nên kiẽm tra phân cụ thếcủa một chức năng nào đỏ Chúng ta không nên kẻt hợp nhiêu phép thử khônglén quan đẽn nhau vào trong cùng 1 phương thúc testXXX( )

public class MessageUtil {

private String message ;

//Constructor

//@param message to be printed

public MessageUtil ( String message ){

this message = message ;

}

Trang 27

// prints the message

public String printMessage (){

System out println ( message );

return message ;

}

}

 Tạo lớp kiểm tra

Tạo một lớp kiểm tra java, TestJunit.java

Thêm một phương pháp thử nghiệm testPrintMessage () vào lớp kiểm tra của bạn

Thêm Annotaion @Test to method testPrintMessage ()

Thực hiện điều kiện kiểm tra và kiểm tra điều kiện sử dụng assertEquals API của JUnit

Tạo một tên tệp java class TestJunit.java trong C:\>

JUNIT_WORKSPACE

import org junit Test ;

import static org junit Assert assertEquals ;

public class TestJunit {

Trang 28

String message = "Hello World" ;

MessageUtil messageUtil = new MessageUtil ( message );

@Test

public void testPrintMessage () {

assertEquals ( message , messageUtil printMessage ());

}

}

 Tạo lớp chạy thử

Tạo một lớp java TestRunner

Sử dụng phương pháp runClasses của lớp JUnitCore của JUnit để chạy trường hợp thử nghiệm của lớp test đã tạo ở trên

Nhận kết quả của các trường hợp thử nghiệm chạy trong Đối tượng kết quả.Nhận lỗi (s) bằng phương thức getFailures () của đối tượng Result

Nhận kết quả bằng cách sử dụng phương thức wasSuccessful () của đối tượng Result

Tạo tệp tin lớp java có tên TestRunner.java

trong C:\>JUNIT_WORKSPACE để thực hiện (các) trường hợp kiểm tra

Trang 29

import org junit runner JUnitCore ;

import org junit runner Result ;

import org junit runner notification Failure ;

public class TestRunner {

public static void main ( String [] args ) {

Result result = JUnitCore runClasses ( TestJunit class );

for ( Failure failure : result getFailures ()) {

System out println ( failure toString ());

}

System out println ( result wasSuccessful ());

}

}

Biên dịch MessageUtil, Test case và Test Runner classes sử dụng javac

C:\JUNIT_WORKSPACE>javac MessageUtil.java TestJunit.java

TestRunner.java

Bây giờ chạy Runner thử nghiệm, mà sẽ chạy các trường hợp thử nghiệmđược xác định trong các lớp Test Case được cung cấp

C:\JUNIT_WORKSPACE>java TestRunner

Trang 30

Xác minh đầu ra.

Hello World

true

Bây giờ, hãy cập nhật TestJunit trong C: \> JUNIT_WORKSPACE để thửnghiệm không thành công Thay đổi chuỗi thông báo

import org junit Test ;

import static org junit Assert assertEquals ;

public class TestJunit {

String message = "Hello World" ;

MessageUtil messageUtil = new MessageUtil ( message );

@Test

public void testPrintMessage () {

message = "New Word" ;

assertEquals ( message , messageUtil printMessage ());

Trang 31

import org junit runner Result ;

import org junit runner notification Failure ;

public class TestRunner {

public static void main ( String [] args ) {

Result result = JUnitCore runClasses ( TestJunit class );

for ( Failure failure : result getFailures ()) {

System out println ( failure toString ());

Trang 32

 Tạo Project

1 Menu File => New => Project…

2 Chọn Java Project trong hộp thoại New Project và nhấn Next

Trang 33

3 Trong hộp thoại New Java Project điền thông tin và chọn Next

 Project name: tên của project

 Chọn jre: phiên bản của thư viện và máy ảo java

4 Cấu hình thư viện (nếu không có thì để mặc định) và nhấn Finish

Trang 34

5 Kết quả

 Tạo lớp trong java

1 Click chuột phải vào thư mục src => chọn New => chọn Class

Trang 35

2 Trong hộp thoại New Java Class điền các giá trị sau và chọn Finish

• Package: demo => phân nhóm các lớp đối tượng

• Name: PhanSo

• SuperClass: lớp cha (nếu có)

Trang 36

• Interfaces: các interface cần thực thi (nếu có)

3. Trong lớp PhanSo, định nghĩa các thuộc tính, hàm khởi tạo mặc định

và hàm cộng

 Tạo lớp PhanSoTest trong test package

Trang 37

1. Chuột phải vào Project => chọn New => chọn Junit Test case

2 Trong hộp thoại New Junit Test case chú ý các thuộc tính sau và chọn Next

 Package: tên package

 Name: tên lớp

Trang 38

 Class under Test: tên lớp được test

3 Muốn test hàm/phương thức nào thì chọn và nhấn Finish

4 Kết quả

Trang 39

 Sử dụng các hàm AssertXXX để so sánh kết quả

Ngày đăng: 08/06/2019, 22:49

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w