logo

Thông báo

Icon
Error

Chia sẻ
Tùy chọn
Xem
Xem bài viết cuối
Offline admin  
#1 Đã gửi : 28/04/2017 lúc 04:30:11(UTC)
admin

Danh hiệu: Administration

Chức danh:

Nhóm: Administrators
Gia nhập: 23-07-2013(UTC)
Bài viết: 6,110
Man
Viet Nam
Đến từ: Vietnam

Cảm ơn: 10 lần
Được cảm ơn: 2 lần trong 2 bài viết

Với một phần mềm ra đời thì công đoạn testing là rất quan trọng. Nhưng với ai chưa có kinh nghiệm thì chúng ta thường bỏ qua công đoạn testing hoặc testing khá sơ sài không theo chuẩn chung dẫn tới hiện tượng chắp vá

Hôm nay mình xin giới thiệu qua về một số kĩ thuật testing trên môi trường ASP.NET MVC.

LETS GO

1. AAA Testing pattern

AAA - ky thuat unit test

Đây là cấu trúc test sử dụng “AAA” testing pattern – (Arrange, Act, Assert)

–          Arrange: – Setup đối tượng cần test

–          Act: Thực thi và capture lại kết quả

–          Assert: Verify kết quả

2. Kết hợp Dependency Injection pattern và kỹ thuật Fake để Testing

Dependency Injection là một kỹ thuật để giảm thiểu sự phụ thuộc của các đối tượng trong một project của mình:

Giả sử có 2 người xây dựng ứng dụng. Người A implement phần Data và các repository để bóc tách dữ liệu. B  sử dụng các repository để tương tác với dữ liệu từ controller. Nếu A chưa xong thì B không thể tương tác dữ liệu được. Trong lúc testing để giảm sự phụ thuốc này thì có nhiều cách và một trong đó là sử dụng Dependency Injection.

Xây dựng :

Giả dụ mình có 1 DinnerRepository và Controller của mình đang phụ thuộc vào DinnerRepository

repository

Chúng ta sẽ xây dựng một Interface để giảm sự phụ thuộc repository đó từ Controller

Mình sẽ Extract Interface là IDinnerRepository

IRepository

Và trong controller mình sẽ không sử dụng trực tiếp DinnerRepository mà sử dụng IDinnerRepository để truy vấn dữ liệu

controller

Bây giờ mình sẽ tạo một FakeDinnerRepository  dùng để fake dữ liệu trong lúc testing

fake repository

Tiếp đến chúng ta sẽ Testing với dữ liệu giả mình tự định nghĩa

test-fake

Như chúng ta đã thấy thì Dinner Controller đã không còn phụ thuộc vào DinnerRepository, chúng ta có thể sử dụng các FakeRespository kế thừa từ interface đó để tiến hành testing một cách dễ dàng

Phân tích:

Về hướng sử dụng Dependency Injection ở trên là khá ổn nhưng sẽ rất khó khăn để maintain nếu số lượng dependencies và components trong ứng dụng của mình lớn.

Có một số Dependency Injection framework để quản lý sự phụ thuộc được linh hoạt. Ví dụ như Inversion of Control (IOC) sử dụng các constructor injection để xác định và giảm sử phụ thuộc trong lúc runtime. Có một số OSS Dependency Injection/IOC frameworks phổ biến  trong .NET như AutoFac, Nnject, Spring.NET, StructureMap hay Windsor

3. Kết  hợp kỹ thuật Mock (Moq) để Testing một các hiệu quả hơn

Mocking Framkwork (Moq) giúp cho quá trình testing trở nên dễ dàng hơn bằng cách tạo ra các đối tượng giả (FakeObject) ví dụ như khi sửa thì mình cần có Authencation, với Moq mình có thể dễ dàng get quyền và trả về giá trị mong muốn (True/False – có quyền hay không)

Moq

Ví dụ trên mình đã SetupGet để lấy username và SetupGet để có quyền truy xuất là TRUE.

Từ đó mình có thể pass qua lớp Authencation làm các tác vụ tiếp theo.

4. KẾT

Việc kết hợp sử dụng các kỹ thuật, thư viện Unit Test là rất quan trọng.

Ví dụ trong một project nhỏ, số lượng Dependencies và components ít thì chúng ta có thể dùng kỹ thuật Dependency Injection kết hợp với Fake. Hay với các project lớn thì cần kết hợp các kỹ thuật để có thể tiết kiệm thời gian, dễ dàng sửa chữa nâng cấp.

Hy vọng bài viết trên có ích với các bạn.

Mọi góp ý hay thắc mắc các bạn cứ chia sẻ ở dưới nhé.

Tài liệu tham khảo :  Professional ASP.NET MVC 1.0 – Rob Conery, Scott Hanselman,  Phil Haack, Scott Guthrie

Nguồn : duyphuong13.wordpress.com

Ai đang xem chủ đề này?
OceanSpiders 2.0
Chủ đề tương tự
Điểm mặt một số dòng kem chăm sóc dưỡng ẩm da (Làm đẹp)
Bởi Ellry 29-03-2020 lúc 05:35:30(UTC)
Một số lưu ý khi trả lời câu hỏi về điểm yếu (Những câu hỏi & trả lời khi phỏng vấn xin việc)
Bởi Ellry 28-03-2020 lúc 05:29:07(UTC)
Một số nguyên tắc xã giao có thể giúp ích cho bạn (Kỹ năng giao tiếp)
Bởi Ellry 08-02-2020 lúc 06:56:23(UTC)
Một số tips cần nhớ khi ăn lẩu không lo bị nóng (Thực phẩm)
Bởi Ellry 20-01-2020 lúc 11:45:57(UTC)
Một số triệu chứng của thiếu hụt vitamin B (Thực phẩm chức năng - dinh dưỡng)
Bởi Ellry 16-10-2019 lúc 09:27:26(UTC)
Quy định về hình xăm tại một số quốc gia (Văn hóa - xã hội)
Bởi Ellry 01-10-2019 lúc 10:49:17(UTC)
Một số lý do cơ bản dẫn đến tai nạn ấm siêu tốc (Kiến thức tiêu dùng)
Bởi Ellry 03-07-2019 lúc 10:25:40(UTC)
Một số loại trái cây giải nhiệt hè cực tốt (Thực phẩm)
Bởi Ellry 22-04-2019 lúc 09:25:22(UTC)
Một số lưu ý về đồ ăn trên máy bay (Kiến thức tiêu dùng)
Bởi Ellry 11-04-2019 lúc 09:19:13(UTC)
Nếu không được cung cấp đủ magie thì cơ thể sẽ gặp phải một số vấn đề này (Sức khỏe, y tế và đời sống)
Bởi Ellry 13-10-2018 lúc 02:15:57(UTC)
Gợi ý một số dòng kem chống nắng vật lý và hóa học dễ sử dụng (Các mẹo vặt hay)
Bởi Ellry 03-04-2018 lúc 10:09:14(UTC)
Một số thời điểm nên hạn chế uống nước (Sức khỏe, y tế và đời sống)
Bởi Ellry 22-03-2018 lúc 10:38:37(UTC)
Một số món ăn giúp phòng tránh bệnh về da (Thực phẩm dinh dưỡng)
Bởi Ellry 05-12-2017 lúc 10:33:24(UTC)
Thực phẩm giúp giảm nguy cơ mắc một số bệnh ung thư và bệnh tim mạch (Thực phẩm dinh dưỡng)
Bởi Ellry 29-11-2017 lúc 09:43:03(UTC)
Một số lý do khiến bạn ngủ dậy uể oải, đau đầu (Sức khỏe, y tế và đời sống)
Bởi Ellry 15-09-2017 lúc 10:38:52(UTC)
Di chuyển  
Bạn không thể tạo chủ đề mới trong diễn đàn này.
Bạn không thể trả lời chủ đề trong diễn đàn này.
Bạn không thể xóa bài của bạn trong diễn đàn này.
Bạn không thể sửa bài của bạn trong diễn đàn này.
Bạn không thể tạo bình chọn trong diễn đàn này.
Bạn không thể bỏ phiếu bình chọn trong diễn đàn này.

| Cung cấp bởi YAF.NET 2.2.4.14 | YAF.NET © 2003-2020, Yet Another Forum.NET
Thời gian xử lý trang này hết 0.353 giây.