TRƯỜNG ĐẠI HỌC ĐẠI NAM KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO HỌC PHẦN KIỂM THỬ PHẦN MỀM TÊN ĐỀ TÀI TÌM HIỂU CÔNG CỤ KIỂM THỬ JEST HÀ NỘI – NĂM 2022 TRƯỜNG ĐẠI HỌC ĐẠI NAM KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO H[.]
Trang 1TRƯỜNG ĐẠI HỌC ĐẠI NAM
KHOA CÔNG NGHỆ THÔNG TIN
-BÁO CÁO HỌC PHẦN KIỂM THỬ PHẦN MỀM
TÊN ĐỀ TÀI TÌM HIỂU CÔNG CỤ KIỂM THỬ JEST
HÀ NỘI – NĂM 2022
Trang 2TRƯỜNG ĐẠI HỌC ĐẠI NAM
KHOA CÔNG NGHỆ THÔNG TIN
-BÁO CÁO HỌC PHẦN KIỂM THỬ PHẦN MỀM
TÊN ĐỀ TÀI TÌM HIỂU CÔNG CỤ KIỂM THỬ JEST
LÊ NGỌC HOÀNG
HÀ NỘI - NĂM 2022
Trang 3NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Giáo viên hướng dẫn
Lê Chí Luận
Trang 5DANH MỤC BẢNG
Bảng 2.1 Lộ trình thực tập 10
Trang 6MỤC LỤC
DANH MỤC TỪ VIẾT TẮT
DANH MỤC BẢNG
MỤC LỤC
MỞ ĐẦU
1 Lý do chọn đề tài 1
2 Mục tiêu đề tài 2
3 Bố cục nội dung của đề tài 2
CHƯƠNG 1: KIẾN THỨC NỀN TẢNG
1.1 Định nghĩa kiểm thử phần mềm 3
2.2 Mục tiêu của kiểm thử phần mềm 3
2.3 Kiểm thử hộp trắng 4
2.4 Kiểm thử tự động 5
2.4.1 Kiểm thử tự động – Quy trình kiểm thử tự động 5
2.4.2 Ưu điểm và nhược điểm của kiểm thử tự động 5
2.4.3 Các chiến lược kiểm tra trong kỹ thuật phần mềm 6
2.4.4 Các trường hợp nên áp dụng kiểm thử tự động 6
CHƯƠNG 2: CÔNG CỤ KIỂM THỬ JEST
3.1 Tổng quan về Jest 8
3.2 Tính năng 8
3.3 Quy trình thực hiện của Jest 9
3.4 Cách cài đặt Visual Studio Code 10
3.4.1 Tìm hiểu cách sử dụng jest 10
3.4.2 Một số Matchers trong jest 14
Trang 73.1 Mô tả bài toán 16
3.2 Mô tả chương trình 16
CHƯƠNG 4: CHƯƠNG TRÌNH DEMO
4.1 Xây dựng các test case cho trương trình kiểm thử tam giác 18
4.2 Xây dựng các trường hợp kiểm thử 19
4.3 Thực hành kiểm thử với tutorial NUnit 21
KẾT LUẬN
DANH MỤC TÀI LIỆU THAM KHẢO
Trang 8MỞ ĐẦU
1 Lý do chọn đề tài
Trong giai đoạn phát triển của công nghệ thông tin, ngành công nghệ phần mềmngày một chiếm vị trí quan trọng trong xu hướng phát triển kinh tế công nghiệp hóa,hiện đại hóa của đất nước ta Cùng với sự phát triển của công nghệ phần mềm, lõiphần mềm và chất lượng phần mềm luôn là thách thức lớn và bản thân ngành phầnmềm khi thực tế đã chứng minh, kiểm thử phần mềm là giao đoạn chiến đến hơn 40%thời gian, kinh phí và nguồn lực phát triển dự án phần mềm Tuy nhiên ở Việt Namhiện nay việc kiểm thử phần mềm chưa thực sự được nhìn nhận đúng với tầm quantrọng của nó Điều này thể hiện ở tỉ lệ kỹ sự kiểm thử phần mềm ở Việt nam còn kháthấp, cứ 5 lập trình viên thì mới có 1 kỹ sư kiểm thử (Số liệu thống kê năm 2011 củacong ty LogiGear), trong khi tỷ lệ này theo chuẩn quyết tế là 3:1 Thêm vào đó mức đôđáp dứng của kỹ sư kiểm thử phần mềm ở VIệt nam chưa cao Nguyên nhanh của việcnày đến từ sự thiếu hụt các đơn vị đào tạo chuyên sau về kiểm thử và nguyên nhân sâu
xa vẫn là vấn đề kiểm thử phần mềm ở Việt Nam vẫn chưa được chuyên nghiệp hóa vàđầu tư đúng mức
Ngày nay, tự động hóa đnag được nghiên cứu và ứng dụng tỏng nhiều lĩnh vuecjtrong đó công nghệ phần mềm nói chung và kiểm thử phần mềm nói tiêng cũng khôngngoại lệ Khi mà kiểm thử phần mềm vẫn tiêu tốn một lượng lớn thời gian, kinh phí vànhân lực trong một dự án phần mềm thì song song với kiểm thử truyền thống thủ công,
sự ra đời các công cụ hỗ trợ kiểm thử tự động như Quick Test Professional, Nunit,Junit, Load Runer (thường dùng trong kiểm thử hiệu năng) là tất yếu Jest là một công
cụ kiểm thử đơn vị có khá nhiều ưu điểm hỗ trợ nhiều ngôn như lập trình liên quan vớiJavascript Tuy chưa được ứng dựn nhiều tỏng các tổ chức ở Việt Nam, song vớinhưng ưu điểm trên Jest hứa hẹn sẽ ngày càng phát triển và trở lên thông dụng hơntỏng các tổ chức phát triển phần mềm ở nước ta
Với mong muốn xác thực và kiểm thử và tiếp cận được với công cụ kiểm thử Jestlàm đề tài định hướng khi làm bài tập nhóm này Trong khuôn khổ bài tập lớn, do thờigian và kinh nghiệm thực tế còn hạn chê snene có những phần thực hiện chưa đượctốt, Em rất mong nhận được sự góp ý của thầy và các bạn
Trang 92 Mục tiêu đề tài
Có cái nhìn đúng đán và sâu sắc hơn về các vấn đề cơ bản của công nghệ phầnmềm, lỗi phần mềm và kiểm thử phần mềm
Hiểu rõ về các thành phần của Jest
Năm được cách sử dụng của công cụ kiểm thử Jest
3 Bố cục nội dung của đề tài
Chương một trình bày về cơ sở lý thuyết kiểm thử và kiến thức liên quan kiểm thửphần mềm và kiểm thử hộp trắng Chương hai sẽ trình bày tổng quan Jest, quy trìnhhoạt động của jest và đi sâu vào các thao tác với Jest trên công cụ Visual Studio Code.Sau đó chúng ta sẽ đặt ra bài toán thử nghiệm và đưa ra kịch bản kiểm thử trên VisualStudio Tại chương 3 Cuối cùng là đưa ra kết luận của đề tài đạt được, những thiếu sótchưa thực hiện và hướng phát triển đề tài
Trang 10CHƯƠNG 1: KIẾN THỨC NỀN TẢNG
1.1 Định nghĩa kiểm thử phần mềm
Kiểm thử phần mềm là một phương pháp để kiểm tra xem sản phẩm phần mềmthực tế có phù hợp với các yêu cầu mong đợi hay không và để đảm bảo rằng sản phẩmphần mềm đó không có khiếm khuyết Nó liên quan đến việc thực thi các thành phầnphần mềm / hệ thống bằng cách sử dụng các công cụ thủ công hoặc tự động để đánhgiá một hoặc nhiều thuộc tính quan tâm Mục đích của kiểm thử phần mềm là xác địnhcác lỗi, khoảng trống hoặc các yêu cầu còn thiếu đối lập với các yêu cầu thực tế Kiểmthử phần mềm có nghĩa là Xác minh Ứng dụng
Tính quan trọng của kiểm thử Kiểm thử phần mềm rất quan trọng vì nếu có bất kỳlỗi hoặc lỗi nào trong phần mềm, nó có thể được xác định sớm và có thể được giảiquyết trước khi giao sản phẩm phần mềm Sản phẩm phần mềm được kiểm tra thíchhợp đảm bảo độ tin cậy, bảo mật và hiệu suất cao, giúp tiết kiệm thời gian, hiệu quảchi phí và sự hài lòng của khách hàng
Một số thuật ngữ mà nhóm có sưu tập thêm trong định nghĩa về kiểm thử phầnmềm:
• Nhóm chuyên viên kiểm thử: Một nhóm độc lập hoặc nhóm tư vấn từ bên ngoài,những người chuyên kiểm thử được chỉ định để thực hiện các nhiệm vụ chủ yếu là đểphát hiện và loại bỏ sai lệch và để đảm bảo kiểm thử hiệu quả bởi các chuyên gia kiểmthử được đào tạo
• Các thủ tục kiểm thử đã được thông qua: Quá trình kiểm thử được thực hiện theo
kế hoạch kiểm thử và các thủ tục kiểm thử được thông qua phù hợp với các
thủ tục đảm bảo chất lượng phần mềm được thông qua bởi tổ chức phát triển phầnmềm
• Các trường hợp kiểm thử được thông qua: Các trường hợp kiểm thử được địnhnghĩa đầy đủ trong kế hoạch kiểm thử Không có sự thiếu xót hoặc bổ sung nào đượcmong đợi xảy ra trong suốt quá trình thực thi kiểm thử
2.2 Mục tiêu của kiểm thử phần mềm
- Phát hiện và xác định càng nhiều lỗi càng tốt ở các phần mềm được kiểm thử
Trang 11- Tiến hành sửa lỗi ở các phần mềm được kiểm thử và kiểm thử lại cho đến khi đạtmột mức độ chất lượng phần mềm chấp nhận được.
- Thực thi những trường hợp kiểm thử một cách hiệu quả trong một giới hạn ngânsách và lịch trình cho phép
- Để biên dịch một tài liệu về các lỗi phần mềm thường gặp nhằm mục đích ngănngừa và sửa chữa lỗi
2.3 Kiểm thử hộp trắng
Kiểm thử hộp trắng sử dụng các chiến lược cụ thể và sử dụng mã nguồn củachương trình/đơn vị phần mềm cần kiểm thử nhằm kiểm tra xem chương trình/đơn vịphần mềm có thực hiện đúng so với thiết kế và đặc tả hay không Trong khi cácphương pháp kiểm thử hộp đen hay kiểm thử chức năng chỉ cho phép phát hiện cáclỗi/khiếm khuyết có thể quan sát được, kiểm thử hộp trắng cho phép phát hiện cáclỗi/khiếm khuyết tiềm ẩn bên trong chương trình/đơn vị phần mềm Các lỗi nàythường khó phát hiện bởi các phương pháp kiểm thử hộp đen Khác với các phươngpháp kiểm thử hộp đen nơi mà các ca kiểm thử được sinh ra từ đặc tả của hệ thống, các
ca kiểm thử trong các phương pháp kiểm thử hộp trắng được sinh ra từ mã nguồn.Kiểm thử hộp đen và kiểm thử hộp trắng không thể thay thế cho nhau mà chúng cầnđược sử dụng kết hợp với nhau trong một quy trình kiểm thử thống nhất nhằm đảmbảo chất lượng phần mềm Tuy nhiên, để áp dụng các phương pháp kiểm thử hộptrắng, người kiểm thử không chỉ cần hiểu rõ giải thuật mà còn cần có các kỹ năng vàkiến thức tốt về ngôn ngữ lập trình được dùng để phát triển phần mềm, nhằm hiểu rõ
mã nguồn của chương trình/đơn vị phần mềm cần kiểm thử Do vậy, việc áp dụng cácphương pháp kiểm thử hộp trắng thường tốn thời gian và công sức nhất là khi chươngtrình/đơn vị phần mềm có kích thước lớn Vì lý do này, các phương pháp kiểm thử hộptrắng chủ yếu được sử dụng cho kiểm thử đơn vị
Hai phương pháp được sử dụng trong kiểm thử hộp trắng là kiểm thử dòng điềukhiển (control flow testing) và kiểm thử dòng dữ liệu (data flow testing) Phương phápkiểm thử dòng điều khiển tập trung kiểm thử tính đúng đắn của các giải thuật sử dụngtrong các chương trình/đơn vị phần mềm Phương pháp kiểm thử dòng dữ liệu tậptrung kiểm thử tính đúng đắn của việc sử dụng các biến dữ liệu sử dụng trong chươngtrình/đơn vị phần mềm
Trang 122.4 Kiểm thử tự động
2.4.1 Kiểm thử tự động – Quy trình kiểm thử tự động
- Kiểm thử tự động là quá trình xử lý một cách tự động các bước thực hiện các testcase Kiểm thử tự động bằng một công cụ nhằm rút ngắn thời gian kiểm thử
- Qui trình kiểm thử tự động gồm 4 bước:
· Bước 1: Viết kịch bản kiểm thử, dùng công cụ kiểm thử để ghi lại các thao tác lênphần mềm cần kiểm tra và tự động sinh ra test script
· Bước 2: Chỉnh sửa để kịch bản kiểm thử thực hiện kiểm tra theo đúng yêu cầu đặt
ra, làm theo trường hợp kiểm thử cần thực hiện
· Bước 3: Chạy kịch bản kiểm thử, giám sát hoạt động kiểm tra phần mềm của kịchbản kiểm thử
· Bước 4: 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
2.4.2 Ưu điểm và nhược điểm của kiểm thử tự động
- Các ưu điểm có thể kể đến của kiểm thử tự động là:
· Kiểm thử chính xác và có thể bao quát thông tin
· Theo dõi được chính xác kết quả từng giai đoạn và các báo cáo tổng hợp
· Cần ít nhân lực trong quá trình kiểm thử
· Chu kỳ kiểm thử diễn ra trong thời gian ngắn
· Hiệu năng của kiểm thử các lớp vượt xa tầm với của kiểm thử thủ công
- Tuy nhiên không thể không kể đến các nhược điểm của kiểm thử tự động:
· Chi phí cao cho việc chuyển giao công nghệ và đào tạo nhân viên
· Tốn chi phí đầu tư lớn cho việc phát triển công cụ kiểm thử tự động
· Tốn chi phí và thời gian cho việc tạo các kịch bản kiểm thử và bảo trì các kịchbản kiểm thử
· Giai đoạn chuẩn bị kiểm thử yêu cầu nhiều nhân lực
· Khu vực kiểm thử tự động có thể không bao quát đầy đủ, không áp dụng đượctrong việc tìm lỗi mới của phần mềm
Trang 132.4.3 Các chiến lược kiểm tra trong kỹ thuật phần mềm
· Kiểm thử đơn vị: Cách tiếp cận cơ bản kiểm thử phần mềm này được người lậptrình tuân theo để kiểm tra đơn vị của chương trình Nó giúp các nhà phát triển biếtliệu từng đơn vị mã có hoạt động bình thường hay không
· Kiểm thử tích hợp: Nó tập trung vào việc xây dựng và thiết kế phần mềm Bạncần phải thấy rằng các đơn vị tích hợp đang hoạt động mà không có lỗi hay không
· Kiểm tra hệ thống: Trong phương pháp này, phần mềm của bạn được biên dịchtổng thể và sau đó được kiểm tra tổng thể Chiến lược thử nghiệm này kiểm tra chứcnăng, bảo mật, tính di động, trong số những thứ khác
2.4.4 Các trường hợp nên áp dụng kiểm thử tự động
Không phải lúc nào cũng nên áp dụng kiểm thử tự động trong việc kiểm thử phầnmềm, vì nhiều khi chi phí và thời gian cho việc kiểm thử tự động còn lớn hơn nhiều sovới kiểm thử thủ công Dưới đây là một số trường hợp nên áp dụng phương pháp kiểmthử tự động để đạt được hiệu quả cao về thời gian, chi phí cũng như chất lượng
- Trường hợp không đủ tài nguyên: Là khi số lượng trường hợp kiểm thử lặp lạiquá nhiều trên nhiều môi trường kiểm thử khác nhau, không có đủ nguồn nhân lực đểkiểm thử thủ công trong một giới hạn thời gian nào đó
- Trường hợp kiểm thử hồi quy: Trong quá trình phát triển phần mềm, nhóm lậptrình thường đưa ra nhiều phiên bản phần mềm liên tiếp để kiểm thử Thực tế cho thấyviệc đưa ra các phiên bản phần mềm có thể là hàng ngày, mỗi phiên bản bao gồmnhững tính năng mới, hoặc tính năng cũ được sửa lỗi hay nâng cấp Việc bổ sung hoặcsửa lỗi mã chương trình cho những tính năng ở phiên bản mới có thể làm cho nhữngtính năng khác đã kiểm tra tốt chạy sai mặc dù phần mã chương trình của nó không hềchỉnh sửa Để khắc phục điều này, đối với từng phiên bản, kiểm thử viên không chỉkiểm tra chức năng mới hoặc được sửa, mà phải kiểm tra lại tất cả những tính năng đãkiểm tra tốt trước đó Điều này khó khả thi về mặt thời gian nếu kiểm thử thủ công
- Trường hợp kiểm thử khả năng vận hành phần mềm trong môi trường đặc biệt:Đây là kiểm thử nhằm đánh giá xem vận hành của phần mềm có thỏa mãn yêu cầu đặt
ra hay không Thông qua đó kiểm thử viên có thể xác định được các yếu tố về phầncứng, phần mềm ảnh hưởng đến khả năng vận hành của hệ thống Có thể liệt kê một sốtình huống kiểm tra tiêu biểu thuộc loại này như sau:
Trang 14- Đo tốc độ trung bình xử lý một yêu cầu của eb server.
- Thiết lập 1000 yêu cầu, đồng thời gửi đến eb server để kiểm tra tình huống 1000người dùng truy xuất eb cùng lúc
- Xác định số yêu cầu tối đa được xử lý bởi eb server hoặc xác định cấu hình máythấp nhất mà tốc độ xử lý của phần mềm vẫn có thể hoạt động ở mức cho phép
Trang 15CHƯƠNG 2: CÔNG CỤ KIỂM THỬ JEST
3.1 Tổng quan về Jest
Jest là một thư viện testing được tạo bởi Facebook
Nó được tạo ra với mục tiêu ban đầu là cho reactjs, nhưng nó đã vượt xa những nhu cầu ban đầu, để trở thành một thư viện testing cho javascript một cách hoàn chỉnh
Một trong nhưng ưu điểm lớn của jest là nó làm việc hiệu quả với rất ít bướcsetup và configuration Nó đến với các tính năng chính là assertion library và
hỗ trợ mocking
Nó được viết theo BDD style như hầu hết các thư viện testing hiện nay Jest còn có một tính năng đặc biệt, đó là snapshot testing, nó lưu lại snapshot (hay nói cách khác là cấu trúc view tại thời điểm hiện tại) rồi so sánh với snapshot trong tương lai, nếu chúng không giống nhau thì test của chúng ta
đã fail hoặc có một số thứ đã thay đổi
Jest có một số nhược điểm quan trọng như: nó là một thư viện mới, vẫn chưađược dùng nhiều bởi cộng đồng developer Nó có ít tool và thư viện support
so với các thư viện cũ và lão làng như Mocha
Trang 16 Setup một lần (Bắt đầu hoặc kết thúc)
Nhóm test lại (describe)
Dùng mock function
Mock return value (define giá trị trả lại của function)
Custom matchers (Dùng thuộc tính mock để inspect nhiều xác định hơn)
Mock Implementations: Hơn cả chức năng trả lại, nó còn thay thế toàn bộ hàmmocking:
Testing snapshot
3.3 Quy trình thực hiện của Jest
Bước 1: Lập kế hoạch
Bước 2: Dự trữ các trường hợp có thể xảy ra, lên kịch bản
Bước 3: Kiểm thử đơn vị
Điều này yêu cầu các nhà phát triển trước tiên phải viết các bài kiểm thử đơn vị bị lỗi Sau đó, họ viết mã và cấu trúc lại ứng dụng cho đến khi hoàn thành kiểm thử
Trang 17Sau khi tất cả các unit trong một chương trình được phát hiện là đang hoạt động theocách hiệu quả nhất và không có lỗi, các thành phần lớn hơn của chương trình có thểđược đánh giá bằng phương pháp kiểm thử tích hợp Các bài Unit Testing nên đượcthực hiện thường xuyên và có thể được thực hiện thủ công hoặc có thể tự động.
3.4 Cách cài đặt Visual Studio Code
Visual Studio Code (VS Code) là một trình biên tập code được phát triển bởiMicrosoft dành cho Windows, Linux và macOS Nó hỗ trợ chức năng debug, đi kèmvới Git, có syntax highlighting, tự hoàn thành code thông minh, snippets, và cải tiến
mã nguồn
Hầu hết các lập trình viên Frontend đều ứng dụng trình soạn thảo mã nguồn mởmiễn phí này cho việc viết code JavaScript, HTML hoặc CSS Ngoài ra, trên thực tế,cũng có không ít các lập trình viên Backend dùng VS Code để viết mã Scala
Với VS Code, việc viết mọi loại code trở nên đơn giản và thuận tiện hơn rấtnhiều Ngoài ra, những ai đang làm công việc kiểm thử phần mềm hay quản lý dữ liệucũng có thể sử dụng trình soạn thảo này Ở bài này dùng VS code để sử dụng toolkiểm thử Jest
Nếu máy chưa có VS Code bạn chỉ cần chọn hệ điều hành và bản 32bit hoặc 64bitphù hợp với máy bạn và tải về sau đố next đến khi finish là có thể sử dụng
Cài Visual Studio Code tại đây: https://code.visualstudio.com/Download
3.4.1 Tìm hiểu cách sử dụng jest
Sau khi cài đặt bạn mở VS Code lên thì nó sẽ hiển thị như này: