Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 82 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
82
Dung lượng
2,02 MB
Nội dung
Nghiên cứu Unit Testing trong C# với NUnit và Demo 1 MỤC LỤC MỤC LỤC 1 ĐÁNH GIÁ CỦA GIÁO VIÊN HƯỚNG DẪN 4 PHẦN I: PHẦN MỞ ĐẦU 5 PHẦN II: PHẦN NỘI DUNG 7 CHƯƠNG I: KHÁI QUÁT KIỂM THỬ PHẦN MỀM 7 1.1. Các khái niệm cơ bản trong kiểm thử phần mềm. 7 1.1.1. Khái niệm về kiểm thử phần mềm. 7 1.1.2. Mục đích của kiểm thử phần mềm. 7 1.1.3. Các phương pháp kiểm thử. 8 1.1.4. Các chiến lược kiểm thử. 8 1.1.4.1. Kiểm thử hộp đen – Black box. 8 1.1.4.2. Kiểm thử hộp trắng – White box. 10 1.1.4.3. Kiểm thử hộp xám – Gray box testing 10 1.1.5. Các cấp độ kiểm thử trong kiểm thử phần mềm. 11 1.1.5.1. Kiểm thử đơn vị - Unit test. 11 1.1.5.2. Kiểm thử tích hợp – Intergration test. 12 1.1.5.3. Kiểm thử hệ thống – System test. 14 1.1.5.4. Kiểm thử chấp nhận – Acceptance test. 15 1.1.5.5. Mô hình chữ V trong kiểm thử phần mềm 16 1.1.6. Một số cấp độ kiểm thử khác. 18 1.2. Nguyên tắc trong kiểm thử phần mềm. 19 CHƯƠNG II: UNIT TESTING 20 2.1. Tổng quan về Unit test 20 2.1.1. Định nghĩa về Unit testing. 20 2.1.2. Mục đích 20 2.1.3. Yêu cầu. 20 2.1.4. Người thực hiện Unit test. 21 2.1.5. Vòng đời của một Unit test. 21 2.1.6. Lợi ích của Unit test. 21 2.1.7. Tác dụng của Unit test. 22 Nghiên cứu Unit Testing trong C# với NUnit và Demo 2 2.1.8. Chiến lược viết mã hiệu quả với Unit test. 22 2.2. Sử dụng Unit test với mô hình đối tượng ảo (Mock Object) 23 2.2.1. Định nghĩa 23 2.2.2. Đặc điểm 24 2.2.3. Lợi ích 24 2.2.4. Phạm vi sử dụng 24 2.2.5. Các đối tượng được mô phỏng. 25 2.2.6. Thiết kế MO 25 CHƯƠNG III: THIẾT KẾ TEST CASE 27 3.1. Định nghĩa. 27 3.2. Vai trò của việc thiết kế test case. 27 3.3. Quy trình thiết kế test case. 27 3.3.1. Phương pháp kiểm thử hộp đen – Black box testing. 28 3.3.1.1. Phân vùng tương đương 28 3.3.1.2. Phân tích giá trị biên – Boundary Values Analysis 31 3.3.1.3. Đồ thị nguyên nhân – hệ quả. 36 3.3.1.4. Đoán lỗi – Error Guessing 42 3.3.2. Phương pháp kiểm thử hộp trắng – White box testing. 42 3.3.2.1. Bao phủ câu lệnh. 42 3.3.2.2. Bao phủ quyết định. 44 3.3.2.3. Bao phủ điều kiện 45 3.3.2.4. Bao phủ quyết định – điều kiện. 46 3.3.2.5. Bao phủ đa điều kiện 48 CHƯƠNG IV: TÌM HIỂU VỀ NUNIT 50 4.1. Các công cụ kiểm thử của từng ngôn ngữ kiểm thử. 50 4.1.1. Junit và J2ME Unit trong Java. 50 4.1.2. Cpp Unit trong C/C++. 51 4.1.3. Vb Unit trong Visual Basic. 52 4.1.4. PyUnit trong Python. 52 4.1.5. Perl Unit trong Perl. 53 4.2. Nuint trong C#. 53 Nghiên cứu Unit Testing trong C# với NUnit và Demo 3 4.2.1. Định nghĩa. 53 4.2.2. Đặc điểm của NUnit. 54 4.2.3. Thuộc tính hay dùng trong thư viện Nunit.Framework. 54 4.2.4. Phương thức tĩnh hay dùng trong Nunit.Framework.Assert 57 4.2.5. Cài đặt Nunit. 58 4.2.6. Cách sử dụng Nunit. 61 4.2.6.1. Hướng dẫn tạo test case trong Visual studio 2008. 61 4.2.6.2. Sử dụng Nunit. 65 CHƯƠNG V: CHƯƠNG TRÌNH DEMO 70 5.1. Phát biểu bài toán. 70 5.2. Đặt vấn đề. 70 5.3. Phân tích và thiết kế bài toán. 70 5.4. Thiết kế các test case. 71 5.5. Ứng dụng chương trình 77 5.6. Tổng kết chương trình demo 80 PHẦN III:PHẦN KẾT LUẬN 81 TÀI LIỆU THAM KHẢO 82 Nghiên cứu Unit Testing trong C# với NUnit và Demo 4 ĐÁNH GIÁ CỦA GIÁO VIÊN HƯỚNG DẪN …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… ……………………………………………………………………………………………. Hưng Yên, ngày … tháng … năm 2010 Giáo viên hướng dẫn Nghiên cứu Unit Testing trong C# với NUnit và Demo 5 PHẦN I: PHẦN MỞ ĐẦU Kiểm thử phần mềm là khâu sống còn của việc phát triển phần mềm. Hai chữ "kiểm thử" nghe có vẻ đơn giản, nhàn rỗi nhưng khâu này lại giúp cho sản phẩm được hoàn thiện nhằm đáp ứng yêu cầu đặt ra của khách hàng. Sản phẩm hoàn thiện, chất lượng cao sẽ tạo thêm niềm tin và uy tín của công ty với đối tác trong và ngoài nước. Nếu không có khâu kiểm thử phần mềm, tình trạng khách hàng trả lại sản phẩm về cho người phát triển phần mềm đó sẽ xảy ra thường xuyên. Chính vì vậy, tester là vị trí không thể thiếu và công việc này quyết định khá nhiều vào sự thành công chung của dự án phát triển phầm mềm. Việt Nam hiện nay đang được đánh giá sẽ trở thành con hổ trong ngành kiểm thử phần mềm châu Á với lượng nhân công trẻ và nhiều doanh nghiệp đang phát triển theo con đường này. Tại Việt Nam, những ai theo học ngành Công nghệ thông tin đều đa phần là nghĩ ngay đến nghề lập trình vì thế khiến đầu ra của nghề kiểm thử phần mềm có số lượng thấp hơn hẳn so với chuyên môn lập trình viên khiến các nhà tuyển dụng rất vất vả trong việc tìm kiếm nguồn nhân lực cho ngành kiểm thử phần mềm. Nhưng cũng nhờ đó mà những ai định hướng theo nghề tester ngay từ đầu có thể yên tâm có trong tay tấm vé xin việc làm ngay khi vừa tốt nghiệp. Với xu hướng phát triển ngành kiểm thử phần mềm của Việt Nam nói riêng cũng như của Châu Á nói chung thì việc nhóm sinh viên em chọn để tài làm về kiểm thử phần mềm: “Nghiên cứu về Unit Testing trong C# với Nunit và viết chương trình demo” là đúng đắn và hơn hết là hợp thời đại bây giờ. Đề tài nghiên cứu về kiểm thử phần mềm này thì nhóm sinh viên chúng em có thể hiểu được khái quát về kiểm thử phần mềm, hiểu được về một số công cụ dùng để kiểm thử như Nunit cho dotNet, Junit cho ngôn ngữ Java,…và hiểu được việc thiết kết test – case trong kiểm thử mức đơn vị (Unit test). Hơn hết, em có thể biết thêm một số công cụ kiểm thử tự động như: QuickTestProfessional, LoadRunner, hay Test Complete… Trong quá trình thực hiện nghiên cứu đề tài, chúng em nhận được sự hướng dẫn tận tình của cô giáo Lê Thị Thu Hương – giáo viên trực tiếp hướng dẫn, chúng em còn nhận được sự hướng dẫn của các thầy cô giáo trong bộ môn Công nghệ phần mềm và tất cả Nghiên cứu Unit Testing trong C# với NUnit và Demo 6 các bạn trong bộ môn. Chúng em hy vọng sẽ nhận được sự góp ý của các thầy cô và các bạn để chúng em có thể hoàn thành tốt đề tài này. Những đóng góp của mọi người sẽ là những kinh nghiệm quý báu giúp em và các bạn trong nhóm có những dự định sau này trong khi làm đồ án tốt nghiệp và sau khi tốt nghiệp. Một lần nữa em xin chân thành cảm ơn cô giáo Lê Thị Thu Hương đã hướng dẫn em và các bạn hoàn thành đề tài nghiên cứu. Em xin chân thành cảm ơn! Nhóm sinh viên: Đỗ Thùy Dung Nguyễn Thị Huệ Nguyễn Thị Hương Nghiên cứu Unit Testing trong C# với NUnit và Demo 7 PHẦN II: PHẦN NỘI DUNG CHƯƠNG I: KHÁI QUÁT KIỂM THỬ PHẦN MỀM 1.1. Các khái niệm cơ bản trong kiểm thử phần mềm. 1.1.1. Khái niệm về kiểm thử phần mềm. - Kiểm thử phần mềm là quá trình khảo sát một hệ thống hay thành phần dưới những điều kiện xác định, quan sát và ghi lại các kết quả, và đánh giá một khía cạnh nào đó của hệ thống hay thành phần đó. (Theo Bảng chú giải thuật ngữ chuẩn IEEE của Thuật ngữ kỹ nghệ phần mềm- IEEE Standard Glossary of Software Engineering Terminology). - Kiểm thử phần mềm là quá trình thực thi một chương trình với mục đích tìm ra nhiều lỗi. (Theo “The Art of Software Testing” – Nghệ thuật kiểm thử phần mềm). - Kiểm thử phần mềm là hoạt động khảo sát thực tiễn sản phẩm hay dịch vụ phần mềm trong đúng môi trường chúng dự định sẽ được triển khai nhằm cung cấp cho người có lợi ích liên quan những thông tin về chất lượng của sản phẩm hay dịch vụ phần mềm ấy. Mục đích của kiểm thử phần mềm là tìm ra các lỗi hay khiếm khuyết phần mềm nhằm đảm bảo hiệu quả hoạt động tối ưu của phần mềm trong nhiều ngành khác nhau. (Theo Bách khoa toàn thư mở Wikipedia). - Có thể định nghĩa một cách dễ hiểu như sau: Kiểm thử phần mềm là một tiến trình hay một tập hợp các tiến trình được thiết kế để đảm bảo mã hóa máy tính thực hiện theo cái mà chúng đã được thiết kế để làm, và không thực hiện bất cứ thứ gì không mong muốn. Đây là một pha quan trọng trong quá trình phát triển hệ thống, giúp cho người xây dựng hệ thống và khách hàng thấy được hệ thống mới đã đáp ứng yêu cầu đặt ra hay chưa. 1.1.2. Mục đích của kiểm thử phần mềm. - Tìm ra nhiều lỗi bằng việc đưa ra các dòng thời gian. - Chứng minh được sản phẩm hoàn thành có những chức năng hay ứng dụng giống với bản đặc tả yêu cầu. - Tạo ra các test case có chất lượng cao, thực thi hiệu quả… Nghiên cứu Unit Testing trong C# với NUnit và Demo 8 - Một số lỗi cơ bản trong kiểm thử phần mềm như: lỗi ngay từ khi phân tích yêu cầu, lỗi từ bản đặc tả hệ thống, lỗi trong code, lỗi hệ thống và nguồn tài nguyên hệ thống, lỗi trong vấn đề phần mềm, phần cứng… 1.1.3. Các phương pháp kiểm thử. - Kiểm thử tĩnh( Static testing): Là phương pháp thử phần mềm đòi hỏi phải duyệt lại các yêu cầu và các đặc tả bằng tay, thông qua việc sử dụng giấy, bút để kiểm tra logic, lần từng chi tiết mà không cần chạy chương trình. Kiểu kiểm thử này thường được sử dụng bởi chuyên viên thiết kế người mà viết mã lệnh một mình. Kiểm thử tĩnh cũng có thể được tự động hóa. Nó sẽ thực hiện kiểm tra toàn bộ bao gồm các chương trình được phân tích bởi một trình thông dịch hoặc biên dịch mà xác nhận tính hợp lệ về cú pháp của chương trình. - Kiểm thử động(Dynamic testing): Là phương pháp kiểm thử thông qua việc dùng máy chạy chương trình để điều tra trạng thái tác động của chương trình. Đó là kiểm thử dựa trê các ca kiểm thử xác định bằng sự thực hiện của đối tượng kiểm thử hay chạy các chương trình. Kiểm thử động là kiểm tra cách thức hoạt động của mã lệnh, tức là kiểm tra sự phản ứng vật lý từ hệ thống tới các biến luôn thay đổi theo thời gian. Trong kiểm thử động, phần mềm phải thực sự được biên dịch và chạy. Kiểm thử động thực sự bao gồm làm việc với phần mềm, nhập các giá trị đầu vào và kiểm tra xem liệu đầu ra có như mong muốn hay không. Các phương pháp kiểm thử động gồm có kiểm thử mức đơn vị – Unit Tests, kiểm thử tích hợp – Intergration Tests, kiểm thử hệ thống – System Tests, và kiểm thử chấp nhận sản phẩm – Acceptance Tests. 1.1.4. Các chiến lược kiểm thử. Trong chiến lược kiểm thử, chúng ta có ba chiến lược kiểm thử hay dùng nhất là: kiểm thử hộp đen, kiểm thử hộp trắng, và kiểm thử hộp xám. 1.1.4.1. Kiểm thử hộp đen – Black box. Một trong những chiến lược kiểm thử quan trọng là kiểm thử hộp đen, hướng dữ liệu, hay hướng vào ra. Kiểm thử hộp đen xem chương trình như là một “hộp đen”. Mục đích của bạn là hoàn toàn không quan tâm về cách cư xử và cấu trúc bên trong của Nghiên cứu Unit Testing trong C# với NUnit và Demo 9 chương trình. Thay vào đó, tập trung vào tìm cac trường hợp mà chương trình không thực hiện theo các đặc tả của nó. Theo hướng tiếp cận này, dữ liệu kiểm tra được lấy từ các đặc tả. Các phương pháp kiểm thử hộp đen Phân lớp tương đương – Equivalence partitioning. Phân tích giá trị biên – Boundary values analysis. Kiểm thử mọi cặp – All pairs testing. Kiểm thử dựa trên mô hinh – Model based testing. Kiểm thử thăm dò – Exploratory testing Kiểm thử dựa trên đặc tả - Specification base testing. Kiểm thử dựa trên đặc tả tập trung vào kiểm tra tính thiết thực của phần mềm theo những yêu cầu thích hợp. Do đó, kiểm thử viên nhập dữ liệu vào, và chỉ thấy dữ liệu ra từ đối tượng kiểm thử. Mức kiểm thử này thường xuyên yêu cầu các ca kiểm thử triệt để được cung cấp cho kiểm thử viên mà khi đó có thể xác minh là đối với dữ liệu đầu vào đã cho giá trị đầu ra(hay cách thức hoạt động) có giống với giá trị mong muốn đã được xác định trong ca kiểm thử đó hay không. Kiểm thử dựa trên đặc tả là cần thiết, nhưng không đủ để ngăn chặn những rủi ro chắc chắn. Ưu, nhược điểm Kiểm thử hộp đen không có mối liên quan nào tới mã lệnh và kiểm thử viên chỉ rất đơn giản tam niệm là: một mã lệnh phải có lỗi. Sử dụng nguyên tắc “Hãy đòi hỏi và bạn sẽ được nhận”, những kiểm thử viên hộp đen tìm ra lõi mà những lập trình viên không tìm ra. Nhưng, người ta nói kiểm thử hộp đen “giống như là đi trong bóng tối mà không có đèn vậy”, bởi vì kiểm thử viên không biết các phần mềm được kiểm tra thực sự được xây dựng như thế nào. Đó là lý do mà có nhiều trường hợp mà một kiểm thử viên hộp đen viết rất nhiều ca kiểm thử để kiểm tra một thứ gì đó mà đáng lẽ có thể chỉ cần kiểm tra bằng 1 ca kiểm thử duy nhất, và hoặc một số phần của chương trình không được kiểm tra chút nào. Nghiên cứu Unit Testing trong C# với NUnit và Demo 10 Do vậy, kiểm thử hộp đen có ưu điểm của “một sự đánh giá khách quan”, mặt khác nó lại có nhược điểm của “thăm dò mù”. 1.1.4.2. Kiểm thử hộp trắng – White box. Là một chiến lược kiểm thử khác, trái ngược hoàn toàn với kiểm thử hộp đen, kiểm thử hộp trắng hay kiểm thử hướng logic cho phép bạn khảo sát cấu trúc bên trong của chương trình. Chiến lược này xuất phát từ dữ liệu kiểm thử bằng sự kiểm thử tính logic của chương trình. Kiểm thử viên sẽ truy cập vào cấu trúc dữ liệu và giải thuật bên trong chương trình (và cả mã lệnh thực hiện chúng). Các phương pháp kiểm thử hộp trắng. Kiểm thử giao diện lậ trình ứng dụng – API testing(application programming interface): là phương pháp kiểm thử của ứng dụng sử dụng các API công khai và riêng tư. Bao phủ mã lệnh – Code coverage: tạo các kiểm tra để đáp ứng một số tiểu chuẩn về bao phủ mã lệnh. Các phương pháp gán lỗi – Fault injection. Các phương pháp kiểm thử hoán chuyển – Mutation testing methods. Kiểm thử tĩnh - Static testing: kiểm thử hợp trắng bao gồm mọi kiểm thử tĩnh. Phương pháp kiểm thử hộp trắng cũng có thể được sử dụng để đánh giá sự hoàn thành của một bộ kiểm thử mà được tạo cùng với các phương pháp kiểm thử hộp đen. Điều này cho phép các nhóm phần mềm khảo sát các phần của 1 hệ thống ít khi được kiểm tra và đảm bảo rằng những điểm chức năng quan trọng nhất đã được kiểm tra. 1.1.4.3. Kiểm thử hộp xám – Gray box testing Kiểm thử hộp xám đòi hỏi phải có sự truy cập tới cấu trúc dữ liệu và giải thuật bên trong cho những mục đích thiết kế các ca kiểm thử, nhưng là kiểm thử ở mức người sử dụng hay mức hộp đen. Việc thao tác tới dữ liệu đầu vào và định dạng dữ liệu đầu ra là không rõ ràng, giống như một chiếc “hộp xám”, bởi vì đầu vào và đầu ra rõ ràng là ở [...]... hiện ra c c vấn đề tiềm ẩn ho c c c lỗi ký thuật c Yêu c u - Muốn làm đư c Unit testing thì phải chuẩn bị trư c c c ca kiểm thử (Test case) ho c c c kịch bản kiểm thử (Test Script) trong đó phải ghi rõ dữ liệu nhập vào, c c bư c th c hiện và dữ liệu mong chờ đầu ra c a từng testcase - C c testcase hay script phải đư c giữ lại để tái sử dung 1.1.5.2 Kiểm thử tích hợp – Intergration test Integration test. .. Kiểm thử chấp nhận – Acceptance test Thông thường, sau giai đoạn System Test là Acceptance Test, đư c khách hàng th c hiện (ho c ủy quyền cho một nhóm thứ ba th c hiện) M c đích c a Acceptance Test là để chứng minh phần mềm thỏa mãn tất c yêu c u c a khách hàng và khách hàng chấp nhận sản phẩm (và trả tiền thanh toán hợp đồng) 15 Nghiên c u Unit Testing trong C# với NUnit và Demo Acceptance Test c ý... chưa tồn tại dưới dạng mã, ho c c c module chưa sẵn sàng cung c p c c dữ liệu c n thiết để vận hành Unit Test - C c đối tượng th c có c c thủ t c chưa x c định rõ ràng về mặt nội dung (mới chỉ mô tả trong interface) nhưng đư c đòi hỏi sử dụng gấp trong c c Unit Test - C c đối tượng th c rất khó c i đặt (thí dụ đối tượng xử lý c c trạng thái c a server) - C c đối tượng th c xử lý một tình huống khó xảy... giữa c c phương th c theo một trình tự sắp đặt trư c, từ đó dẫn đến kết quả c thể bị xử lý sai Tuy nhiên, Mock Object c thể thiết lập c c trạng thái giả mà vẫn đảm bảo c c yêu c u ràng bu c, c c nguyên t c đúng đắn và c c quan hệ c a đối tượng th c 24 Nghiên c u Unit Testing trong C# với NUnit và Demo - C n kiểm tra một số thủ t c ho c c c biến c a thành viên bị hạn chế truy c p Bằng c ch kế thừa Mock... kể C 4 loại kiểm thử trong Integration Test: Kiểm thử c u tr c (Structure Test) : Tương tự White Box Test, kiểm thử c u tr c nhằm bảo đảm c c thành phần bên trong c a một chương trình chạy đúng và chú trọng đến hoạt động c a c c thành phần c u tr c nội tại c a chương trình chẳng hạn c c câu lệnh và nhánh bên trong Kiểm thử ch c năng (Functional Test) : Tương tự Black Box Test, kiểm thử ch c năng chỉ... c c a c ng một thư viện 2.1.7 T c dụng c a Unit test - Giải phóng chuyên viên QA (Quality Assurance) khỏi c c công vi c ph c tạp - Tăng sự tự tin khi hoàn thành một c ng vi c Chúng ta thường c c m gi c không ch c chắn về c c đoạn mã c a mình như liệu c c lỗi c quay lại không, hoạt động c a module hiện hành c bị t c động không ho c liệu c ng vi c hiệu chỉnh mã c gây hư hỏng không… - Là c ng c để... ta 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 Thay vì gọi c c đối tượng th c vận hành nặng nề, chúng ta c thể gọi c c MO đơn giản hơn để kiểm tra nhanh liên kết giữa c c thủ t c, c ng vi c kiểm nghiệm c thể tiến hành nhanh hơn 2.2.4 Phạm vi sử dụng Mock Object đư c sử dụng trong c c trường hợp sau: - C n lập trạng thái giả c a một đối tượng th c trư c khi c c Unit. .. c c sẵn thông dụng hiện nay như EasyMock, jMock, Nmock… C c phần mềm này cung c p nhiều API cho phép xây dựng Mock Object và c c kho dữ liệu giả dễ dàng hơn, c ng như kiểm tra tự động c c số liệu trong Unit Test Nói chung, vi c thiết kế Mock Object gồm 3 bư c chính sau đây: - Đưa ra interface để mô tả đối tượng Tất c c c tính chất và thủ t c quan trọng c n kiểm tra phải đư c mô tả trong interface... quả c a mỗi kiểm tra Quy t c 5: C c ca kiểm thử phải đư c viết cho c c trạng thái đầu vào không hợp lệ và không mong muốn, c ng như cho c c đầu vào hợp lệ và mong muốn Quy t c 6: Khảo sát 1 chương trình để xem liệu chương trình c th c hiện c i mà nó c n th c hiện chỉ là 1 phần, phần c n lại là xem liệu chương trình c th c hiện c i mà nó không c n phải th c hiện hay không Quy t c 7: Tránh c c ca kiểm... hoàn chỉnh Vi c lập kế hoạch cho System Test nên bắt đầu từ giai đoạn hình thành và phân tích c c yêu c u System Test kiểm thử c c c hành vi ch c năng c a phần mềm lẫn c c yêu c u về chất lượng như độ tin c y, tính tiện lợi khi sử dụng, hiệu năng và bảo mật M c kiểm thử này đ c biệt thích hợp cho vi c phát hiện lỗi giao tiếp với phần mềm ho c phần c ng bên ngoài, chẳng hạn c c lỗi "t c nghẽn" (deadlock) . Unit test. 21 2.1.6. Lợi ích của Unit test. 21 2.1.7. Tác dụng của Unit test. 22 Nghiên cứu Unit Testing trong C# với NUnit và Demo 2 2.1.8. Chiến lược viết mã hiệu quả với Unit test. . trí tuệ. Nghiên cứu Unit Testing trong C# với NUnit và Demo 20 CHƯƠNG II: UNIT TESTING 2.1. Tổng quan về Unit test 2.1.1. Định nghĩa về Unit testing. - Một Unit là một thành phần. UNIT TESTING 20 2.1. Tổng quan về Unit test 20 2.1.1. Định nghĩa về Unit testing. 20 2.1.2. Mục đích 20 2.1.3. Yêu cầu. 20 2.1.4. Người thực hiện Unit test. 21 2.1.5. Vòng đời của một Unit