Có nên đưa kiểm tra tích hợp vào tích hợp liên tục (CI)?


11

Giả sử rằng chúng tôi đang phát triển một ứng dụng web và Hudson thực hiện các công việc điển hình như biên dịch, kiểm tra đơn vị và phân tích mã tĩnh.

Nhưng phần khó khăn là: Hudson triển khai và khởi động máy chủ ứng dụng để thực hiện các bài kiểm tra tích hợp , một khi các công việc trước đó được thực hiện.

Điều đó có nghĩa là một số điều khó khăn, chẳng hạn như kết nối cơ sở dữ liệu, kết nối ứng dụng phần 3, lắng nghe cổng ổ cắm, biến môi trường, máy chủ khởi động thất bại, v.v. Tệ hơn, các bài kiểm tra tích hợp có thể phá vỡ bài kiểm tra tích hợp một cách dễ dàng.

Bạn có nghĩ nếu kiểm tra tích hợp nên được đưa vào tích hợp tiếp tục (CI) không? Nó có thể được làm bằng tay? Hoặc đơn giản hóa kiểm tra tích hợp?


2
Vấn đề của bạn là ở chất lượng của các bài kiểm tra, không phải ở phần CI. Trong thử nghiệm tích hợp, nó vẫn là một thực hành tốt để loại bỏ các phụ thuộc ra ngoài.
Luc Franken

Câu trả lời:


8

Cái tên Tích hợp liên tục nói lên nhiều điều. Còn nơi nào tốt hơn để thực hiện kiểm tra tích hợp so với nơi bạn đã tích hợp?
Tất nhiên, đó không phải là nơi duy nhất mà các thử nghiệm đó diễn ra, khi phát triển bạn nên cố gắng đảm bảo rằng cuối cùng bạn không phá vỡ mọi thứ, không chỉ là những thay đổi của bạn hoạt động một cách cô lập.
Cuối cùng, trách nhiệm của mọi thành viên trong nhóm là mọi thứ không bị phá vỡ, cố gắng đổ lỗi và xác định cứng nhắc mọi người hoặc các giai đoạn mà thử nghiệm bị hạn chế là phản tác dụng.


4
Nhưng liên tục là ở đó quá. Nếu các bài kiểm tra tích hợp mất vài phút hoặc vài giờ, thì nó không liên tục.
U2EF1

@ U2EF1 thiết lập một máy chủ tích hợp rời rạc.
Kayaman

1
@Kayaman bình luận của bạn là kết quả duy nhất trên internet cho "máy chủ tích hợp rời rạc". Bạn có thể vui lòng làm rõ những gì bạn có ý nghĩa?
Stijn

3

Bạn có nghĩ nếu kiểm tra tích hợp nên được đưa vào tích hợp tiếp tục (CI) không?

Nếu bạn có các bài kiểm tra tích hợp đang vượt qua và không yêu cầu ai đó thực sự đứng đó và nhấn nút, thì có - bạn nên thêm chúng vào hệ thống CI.

Nhưng, vì các kiểm tra tích hợp có thể mất nhiều thời gian để thực hiện, bạn nên giới hạn tần suất chúng được chạy. Chúng có thể được thực thi trong một đêm, khi máy chủ CI không hoạt động.


3

Trước tiên hãy trả lời câu hỏi của bạn: Có, chúng chắc chắn là một phần của Tích hợp liên tục nếu bạn hỏi tôi. Nhưng tôi nghĩ chúng ta cần làm rõ các bài kiểm tra tích hợp là gì.

Martin Fowler đã nói về việc giao hàng liên tục như một cách để tự động hóa quá trình xây dựng hoàn chỉnh để triển khai nhanh chóng. Điều này đòi hỏi các nhà phát triển phải nhận được phản hồi nhanh chóng được cung cấp bởi quá trình Tích hợp liên tục. Vì vậy, ông xác định các giai đoạn mà bản dựng phải trải qua :

  1. một bản dựng
  2. kiểm tra kỹ lưỡng
  3. triển khai

Việc xây dựng cam kết không nên mất nhiều hơn 10 phút mà anh tuyên bố, vì phản hồi nhanh chóng cho các nhà phát triển.

Đây là cách tôi nhìn thấy mọi thứ: Trong bước đầu tiên, hãy lấy cam kết mới nhất và xây dựng nó. Nếu điều này thành công, bạn chạy thử nghiệm đơn vị của mình để tìm hiểu xem các lớp / nhóm lớp của bạn có hoạt động như được xác định và dự kiến ​​hay không.

Khi điều này thành công, bạn có được phần kiểm tra tích hợp. Ở đây bạn kiểm tra sự tương tác của các đơn vị vừa được thử nghiệm thành công. Điều này liên quan đến việc cung cấp cho các đơn vị với đầu vào và xem trạng thái / tương tác / đầu ra của chúng. Hãy nhớ rằng chúng tôi vẫn đang trong bản dựng cam kết, vì vậy chúng tôi muốn điều này cũng nhanh chóng. Vì vậy, các tương tác với hệ thống tệp, cơ sở dữ liệu, các mạng ngang hàng và tương tự phải được đặt ra để thực hiện nhanh chóng. Martin Fowler cũng gợi ý việc sử dụng cơ sở dữ liệu trong bộ nhớ nếu bạn yêu cầu chúng, chỉ để tiếp tục thực hiện trên máy chủ CI.

Sau khi bạn chắc chắn rằng các đơn vị đang hoạt động và tương tác theo yêu cầu, bạn thường muốn tìm hiểu về phạm vi kiểm tra (chỉ kiểm tra một hệ thống con nhỏ thường không đủ) và cung cấp các tạo phẩm được kiểm tra để thử nghiệm chức năng / QA / triển khai ( đọc: kiểm tra kỹ lưỡng) nếu bạn nghĩ rằng bạn kiểm tra đủ chương trình của bạn. Ngay sau đó, bạn cung cấp một môi trường thử nghiệm phản ánh môi trường sản xuất mà bạn đang nhắm mục tiêu và chạy thử nghiệm liên quan đến cơ sở dữ liệu thực, tệp thực, các mạng ngang hàng thực, v.v.

Cuối cùng, kiểm tra tích hợp là về thay đổi mã. Bạn muốn chắc chắn rằng những thay đổi bạn đã thực hiện không phá vỡ hệ thống hiện tại, nghĩa là chúng tích hợp tốt. Để tìm hiểu xem họ có phải không, bạn cần đảm bảo rằng họ cư xử chính xác với chính họ, sau đó nếu họ tương tác chính xác với các phụ thuộc của họ và nếu họ đã được kiểm tra. Bạn có thể yên tâm tự tin về hệ thống của mình sau khi bạn vượt qua tất cả các bài kiểm tra đó.

Nếu các giai đoạn sau tìm thấy bất kỳ vấn đề nào với chương trình của bạn (như khi cơ sở dữ liệu của bạn trả về một giá trị nhất định, kết nối mạng của bạn sẽ tạm dừng), bạn nên thử đưa các thử nghiệm này ra khỏi các thử nghiệm tích hợp. Bản dựng cam kết rất có thể nhanh hơn QA;)

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.