Tôi nên tìm kiếm gì khi đánh giá các thư viện và công cụ kiểm tra đơn vị?


8

Tôi đang trong quá trình lựa chọn các công cụ kiểm tra đơn vị mới để sớm được bắt đầu dự án. Có rất nhiều trong số họ!

Các yêu cầu cơ bản tôi có là nó có thể chạy thử nghiệm trên ít nhất Windows và Linux, nó tương thích với C ++ / C ++ 03, nó có thể thực hiện các thử nghiệm song song (ví dụ: để tận dụng bộ xử lý đa lõi) và nó có thể được chạy từ dòng lệnh. Nhưng đây là những yêu cầu khá rộng và không bị thu hẹp trong lĩnh vực này.

Để thử và làm điều đó, tôi đang xem xét các vấn đề tiềm năng và cạm bẫy của các loại triển khai khác nhau. Ví dụ: nếu tôi muốn sử dụng công cụ kiểm tra đơn vị bằng ngôn ngữ cấp cao hơn như Python, liệu nó có tạo ra đầu ra được định dạng như kiểm tra đơn vị C không? Mục đích chính của tôi ở đây là sử dụng cùng một công cụ lưu trữ và báo cáo cho cả hai bài kiểm tra kết quả C ++ và Python.

Tôi cũng tự hỏi liệu có cần thiết phải có một công cụ cụ thể để chạy thử nghiệm hay không, liệu có đủ để chúng được tích hợp vào công cụ tích hợp liên tục của chúng tôi (buildbot) không.

Là hai mối quan tâm trên có giá trị? Những gì khác tôi nên quan tâm khi đánh giá động cơ thử nghiệm đơn vị?


1
Xin chào Didier Trosset, tôi đã sửa đổi câu hỏi của bạn một chút chỉ để đảm bảo mọi người không nhầm nó với câu hỏi đề xuất công cụ kiểm tra đơn vị, sẽ không có chủ đề ở đây. Câu hỏi tuyệt vời khác!

Câu trả lời:


3

Tôi đã sử dụng cả Google TestBoost Test . Cả hai đều là các khung xUnit, hoạt động trên Unix và Windows và đã hoàn thiện. Tôi đã kết thúc bằng Google Test do Google Mock vì tôi cũng muốn có một khung mô phỏng. Hoặc nên hoạt động tốt dưới buildbot.

Cá nhân, tôi muốn khung kiểm tra đơn vị là tối thiểu và nhanh chóng. Tôi muốn nhiều bài kiểm tra và do đó muốn chúng chạy trong một khung thời gian hợp lý. Cá nhân tôi thích sử dụng khung chính cho một ngôn ngữ thay vì một công cụ lớn nhưng đó là cá nhân. Nếu bạn muốn, bạn có thể xem xét nghiệm lặp lại liên tục: mỗi khi bạn lưu tệp, nó sẽ tự động chạy các trường hợp kiểm tra mà tệp phụ thuộc vào.

Bạn luôn có thể viết một lớp Giao diện cho bài kiểm tra đơn vị của mình, do đó cho phép thay đổi khung nhanh chóng và hiệu quả.


Tốc độ lặp lại +1 là khóa mã hóa kinh dị.com / blog 2007/02 / boyds
jk.

2

Kinh nghiệm của tôi liên quan đến CruiseControl.NET và Team Foundation Build. Bản thân tôi là một nhà phát triển .NET. Chúng xuất phát từ trải nghiệm của tôi và chỉ bao gồm những trải nghiệm mà chúng tôi đã thử nghiệm như một phần của quy trình xây dựng, vì vậy nếu chúng không phù hợp với môi trường của bạn, xin lỗi.

Tôi cũng tự hỏi liệu có cần thiết phải có một công cụ cụ thể để chạy thử nghiệm hay không, liệu có đủ để chúng được tích hợp vào công cụ tích hợp liên tục của chúng tôi không

Nếu bạn đang thực hiện bản dựng mỗi lần đăng ký, có thể kích hoạt bản dựng trước khi bản dựng trước chạy xong. Làm thế nào để bạn muốn xử lý các tình huống như thế này? Ví dụ: nếu mất 30 phút để chạy qua toàn bộ bộ kiểm tra và mã được kiểm tra sau mỗi 15 phút, bạn có muốn bỏ qua một vài bản dựng không? Bỏ qua một số bài kiểm tra? Xếp chúng lên, xây dựng chúng theo thứ tự và quay lại với Bob rằng anh ta đã phá vỡ bản dựng với việc đăng ký 5 giờ trước?

Team Foundation Build có thể sử dụng nhiều lõi cho các bản dựng và thử nghiệm với năm 2010 (các phiên bản trước chỉ có thể sử dụng nhiều lõi cho các bản dựng C ++). CruiseControl.NET có thể chạy các luồng riêng biệt, nhưng đọc tài liệu , có vẻ như mỗi dự án có thể nằm trên luồng riêng, nhưng bạn không thể có nhiều luồng cho mỗi dự án (tôi có thể sai). Chúng tôi chưa bao giờ có một máy đa lõi để xây dựng trong môi trường tôi đã làm việc, vì vậy tôi không thể nói chúng tốt / công bằng / xấu như thế nào (hoặc tôi sai).

Tại một nhà tuyển dụng trước đó, chúng tôi đã bao gồm các tập lệnh Python trong bản dựng, nhưng chúng tôi không có bất kỳ thử nghiệm nào được thiết lập để kiểm tra Python. NANT đã được sử dụng cho các thành phần .NET.

Tôi cũng tự hỏi liệu có cần thiết phải có một công cụ cụ thể để chạy thử nghiệm không

Tôi chưa bao giờ có thời gian để làm điều đó, nhưng tại một chủ nhân trước đây (chúng tôi đã bán phần mềm "thu nhỏ"), chúng tôi có nhiều lỗi cụ thể đối với hệ điều hành (và đôi khi là gói dịch vụ cụ thể), vì vậy một trong những mục tiêu của tôi là thiết lập nhiều thử nghiệm các máy có hệ điều hành khác nhau (cả 32 + 64 bit và tất cả các hương vị khác nhau của máy tính để bàn và máy chủ Windows từ XP trở đi). Các máy xây dựng là các máy WinXP đơn giản và cũ hơn (hoặc ảo) vì đó là tất cả "phần cứng" mà chúng tôi được các nhà quản lý cho phép. Thay vào đó, tất cả các thử nghiệm chạy trên máy xây dựng. Chúng tôi cũng thiết lập các bộ xác thực dưới dạng các bộ sưu tập các bài kiểm tra đơn vị, mặc dù chúng không chạy cho các bản cập nhật nhỏ.


@Sardathrion, Kiểm tra lịch sử sửa đổi, "phần linux" đã được thêm sau khi tôi đăng câu trả lời của mình.
Tangurena

Để xem lịch sử sửa đổi, nhấp vào liên kết trong "đã chỉnh sửa x giờ trước" trong câu hỏi.
Tangurena

@Tanguerna: Ah, cảm ơn bạn đã làm rõ. Bạn có thể chỉnh sửa câu hỏi của bạn một chút để tôi có thể loại bỏ phiếu bầu không? Bỏ phiếu xuất hiện hàng đầu được khóa.
Sardathrion - chống lại lạm dụng SE

@Sardathrion, xong.
Tangurena

Xong và được nâng cấp - Mặc dù để lại một ghi chú nói rằng yêu cầu Linux đã được thêm vào sau đó nếu không những người có tính cách ấu dâm như tôi sẽ bỏ phiếu cho bạn. ^ _ ~
Sardathrion - chống lại lạm dụng SE
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.