30/09/2018, 16:59
Thảo luận Unitest
Mình muốn lập topic thảo luận về unit test điều cần thiết cho mọi lập trình viên . Có bạn nào hứng thú tham gia không?
Bài liên quan
Mình muốn lập topic thảo luận về unit test điều cần thiết cho mọi lập trình viên . Có bạn nào hứng thú tham gia không?
Vậy là đã có một topic lập ra để hỏi về một topic có nên lập hay không… :’(
Em cũng muốn tìm hiểu unitest, đặt gạch watching hóng…
Thực ra topic này phù hợp với
dev chat
hơn.@joker muốn nói về unittest chung chung hay trong ngôn ngữ nào nhỉ?
Vậy thì anh em hứng thú với TDD, BDD, UnitTest có thể tham gia cùng chúng mình nhé:
facebook.com
CocoDojo
CocoDojo là một sàn luyện Code hoạt động theo hình thức Coding Dojo. Điểm đến của các những người YÊU NGHỀ CODE.
Hóa ra là quảng cáo ?
Vãi commet không liên quan mà nhiều like thế. Ông kia hỏi về unit test thì tui chỉ cho câu lạc bộ unit test để giao lưu. Là chia sẻ chứ sao lại là quảng cáo. Hội đó có phải do tui tổ chức đâu? - :’( Cảm thấy bị tủn thương…
Tại OP hỏi một cái xong chạy đâu mất tiêu, chắc đứt cable, nên comment của Tâm làm thay đổi trọng tâm topic mất rồi.
Mọi người có kinh nghiệm gì tại sao nên dùng unit test, unit test tạo thế nào test thế nào. cái này hỏi chung cho mọi ngôn ngữ nhé!
Vậy phải hỏi là unittest để làm gì mới hợp lý, sau đó mới trả lời được cho các câu hỏi tại sao nên dùng, tạo như thế nào và test như thế nào.
Ok. câu hỏi đầu tiên Unittest để làm gì? Mọi người cho ý kiến.
Ý kiến của mình là kiểm tra xem hàm chạy đúng không?
Câu thứ hai. Hàm private có cần unitest không?
Có người bảo có có người bảo không, theo mình là tùy nhưng nói chung là không cần.
Có 2 tác dụng của Tests và nó ứng với hai trường hợp (Use-case) trong phát triển phần mềm.
1. Test to Verify (Test Later)
Cái này ứng với mô hình, code xong rồi, thực hiện viết test để kiểm chứng mọi thứ trong code diễn ra đúng như mong muốn.
Mô hình triển khai
Ưu điểm
Nhược điểm
2. Test to Design (Test First)
Ứng với mô hình TDD, BDD, thực hiện viết test rồi mới viết code. Sử dụng test để thiết kế phần mềm.
Mô hình triển khai
Ưu điểm
Nhược điểm
========================
Với hàm private với logic xử lý đơn giản theo nguyên tắc 1-1 thì ko cần test; còn phức tạp thì phải thực hiện Mock.
========================
Việc triển khai Unit Test ở mức độ thế nào, test cái gì, như thế nào gọi là đảm bảo vẹn toàn (Coverage Rate) thì phụ thuộc vào người quyết định chất lượng sản phẩm.
Ở VN, phần lớn do chất lượng lập trình viên thấp, nghe Unit Test như là cái gì đó kinh khủng ghê gớm, nên các coder có tâm lý sợ viết UT.
Chỉ một số ít công ty ở VN thực hiện test khá tốt (chủ yếu là công ty nước ngoài), có thể kể tên đến như là:
Còn một vài công ty nữa, ko tiện kể tên
Anh Kim cho một ví dụ về cách thực hiện test first được không?
haha sorry nhé. chỉ tội con cá mập
Quay lại topic, Unit test đơn giản chỉ là để test từng unit của code/chương trình.
Việc làm unit thực ra chúng ta làm rất thường xuyên, đó là làm xong đoạn nào/hàm nào thì chạy cái, input đầu vào mà chờ đầu ra như vậy là làm unit test rồi. Unit test để khẳng định 1 điều từng đơn vị/hàm của mình chạy đúng. Còn việc nó chạy đúng rồi mà code vẫn không chạy thì là việc của thằng khác, integration test.
Các ngôn ngữ đều hỗ trợ 1 framework nào đó cho việc viết unit test. Ơ viết unit test để làm gì? Vì phía trên mình vừa nói là viết được đoạn nào thì chạy đoạn đó rồi, tại sao phải viết. Vì khi chương trình nhiều chức năng, và không ai chỉ làm xuyên suốt và đơn độc cho 1 dự án cả, nên có nhiều người sẽ tham gia viết code cùng, làm sao để họ verify được function mình viết ra có đúng không nếu không có tài liệu hướng dẫn, comment …
Đã tốn công viết tài liệu thế thì viết luôn unit test ra code đi
Tuy nhiên thì tại sao nó không phổ thông, không phải chỉ ở VN đâu mà còn cả ở TG nữa. Vì sao vậy
->> tựu chung lại thì chỉ là tốn effort, tốn tiền.
Nhưng lợi điểm nó là gì? là ở việc verify cho integration test.
Những hễ thống quan trọng, hàng triệu người dùng… Nếu deploy sai một chức năng thảm họa sẽ lớn nhường nào, tôi đảm bảo là tôi không biết
Cho nên cần verify ư, nếu theo cách thông thường > 100.000 test cases > test = tay nếu có một thay đổi? >>> ác mộng
Tuy nhiên vẫn còn khá nếu ít thay đổi.
Còn các hệ thống cần có cập nhật thay đổi thường xuyên thì nó thực sự là ác mộng. Lúc này cần nhiều các hệ thống automation test trong đó có unit test.
-> ai dùng và dùng khi nào?
Regards,
Manh
https://www.facebook.com/events/1419738055012297/
Ai muốn tham khảo về test thì joint nhé. TDD…
Có ai có 1 ví dụ hay 1 project mẫu nào về unit test thì cho mình với. Mình đọc ví dụ về làm unit test app caculation thì hiểu nhưng chưa hiểu viết 1 cái unit test cho những cái này :
Mình ví dụ thế này : form login có username, password, nút login và forgot password. Mình muốn viết unit test cho chức năng forgot password thì làm thế nào. (viết unit test cho từng bước của chức năng này)
Chức năng forgot password như sau:
Vậy viết unit test cho chức năng này như thế nào ?
Cảm ơn các bạn.