Nhóm QA nên thực hiện thử nghiệm trong mô hình phân nhánh Gitflow ở đâu


23

Chúng tôi là một nhóm lớn (10-12 nhà phát triển và 4 qa) làm việc trên nhiều dự án với cùng một kho lưu trữ git. Đây là một dịch vụ web phụ trợ khởi động mùa xuân. Chúng tôi đang tìm kiếm một chiến lược phân nhánh và triển khai git tốt. chúng tôi cũng có một nhóm qa đảm bảo rằng các tính năng của chúng tôi hoạt động như mong đợi (không có lỗi ở một mức độ nhất định).

Sau khi đọc một vài bài báo, tôi có cảm giác rằng mô hình Gitflow sẽ hoạt động tốt cho chúng tôi. Đây là câu hỏi của tôi.

Đội QA của chúng tôi nên kiểm tra các tính năng của chúng tôi ở đâu?

  1. nếu họ kiểm tra trên nhánh tính năng, nơi họ sẽ phát sinh lỗi và nhà phát triển sẽ sửa nó và một khi nó vượt qua kiểm tra QA, chúng tôi hợp nhất để phát triển. và QA sẽ lại thực hiện kiểm tra tích hợp trong nhánh phát triển.
  2. chúng ta nên hợp nhất tất cả các tính năng (sau các thử nghiệm đơn vị và thử nghiệm cơ bản từ nhà phát triển) để phát triển chi nhánh và để thử nghiệm qa từ đó. sửa lỗi và kiểm tra tất cả sẽ xảy ra trong phát triển là tốt.

Tôi tò mò muốn nghe cách tiếp cận nào hiệu quả với người khác.

Câu trả lời:


14

QA có lẽ nên được thử nghiệm hai lần.

Thử nghiệm đầu tiên phải xoay quanh những thay đổi cụ thể và được thực hiện trên nhánh tính năng. Điều này cho phép QA kiểm tra xung quanh các thay đổi cụ thể và thấy rằng thay đổi cụ thể đã hoàn tất như được chỉ định và hoạt động như mong đợi. Nó cũng cung cấp cho họ bản xem trước sớm cho vòng thử nghiệm thứ hai, đây là điều thực sự quan trọng đối với QA.

Xuất phát từ nền tảng của tôi trong các môi trường quy định khác nhau, thử nghiệm thứ hai cần được thực hiện trên một thẻ trên nhánh phát triển tương ứng với một bản phát hành, hoặc nhánh phát hành, hoặc có lẽ là nhánh chính. Trước khi phát hành, QA nên kiểm tra mã đầy đủ và hoàn chỉnh sẽ được triển khai trước khi được triển khai và bạn có thể khẳng định rằng bất cứ điều gì đã được QA kiểm tra là giống hệt với những gì được triển khai để sản xuất. Sở thích của tôi sẽ là sau khi đóng băng mã, thẻ được áp dụng cho nhánh phát hành và QA sẽ kiểm tra điều đó. Các thay đổi sẽ được thực hiện trong một nhánh phát triển, kiểm tra tại chỗ và sau đó được kiểm tra lại trong một thẻ mới trên nhánh phát hành. Các thẻ trên nhánh phát hành sẽ tương ứng với các ứng cử viên phát hành.

Tôi đang đưa ra một vài giả định ở đây. Đầu tiên, bạn có phạm vi kiểm tra dựa trên nhà phát triển khá tốt. Lý tưởng nhất, đây sẽ là các bài kiểm tra đơn vị và tích hợp tự động mà các nhà phát triển chạy và làm như vậy trước khi gửi bất kỳ mã nào trên bất kỳ chi nhánh nào đến QA. Các nhà phát triển cũng có thể muốn thực hiện một số thử nghiệm thăm dò xung quanh giao diện người dùng để đảm bảo rằng mọi thứ sẽ ổn ngay trước khi thử nghiệm QA. Thứ hai, có sự phối hợp tốt giữa phát triển và QA để lập kế hoạch cho các thay đổi được kết hợp để đảm bảo đủ thời gian QA dựa trên các tính năng.


2
Một vài lo ngại tôi có với cách tiếp cận này là 1) mọi tính năng sẽ yêu cầu một máy để triển khai. đôi khi chúng tôi làm việc trên 5 tính năng một số lần chỉ đôi. chúng ta có thể thiết lập jenkins để quay VM không? mọi người làm gì 2) qa cần biết bản dựng nào trên máy nào. 3) tôi tự hỏi liệu nó có dư thừa không vì chúng tôi sẽ thực hiện kiểm tra kỹ lưỡng dù sao trong nhánh phát hành.
srini

4

Câu hỏi tuyệt vời. Tôi không nghĩ có câu trả lời chính xác 'chính thức' cho vấn đề này. Nó phụ thuộc vào tốc độ bạn có thể kiểm tra.

Vấn đề thiết yếu là mỗi hợp nhất, biên dịch hoặc thậm chí triển khai, có khả năng tạo ra một lỗi. Càng thử nghiệm nhiều chuỗi, bạn càng biết sớm về các lỗi, nhưng bạn cũng phải kiểm tra lại nhiều lần hơn.

Để đảm bảo rằng bạn đã kiểm tra phần mềm, khách hàng đang sử dụng bạn thực sự phải kiểm tra việc triển khai trực tiếp trước khi lưu lượng khách hàng (giả sử ứng dụng web) được chuyển đến các máy chủ đó thông qua mẫu triển khai màu xanh / xanh.

Nhưng rõ ràng đây là một chút muộn trong ngày để là lần đầu tiên bạn kiểm tra mã!

Nếu bạn kiểm tra một nhánh phát hành trong qa env thì bạn có thể chấp nhận rủi ro và giảm thử nghiệm trực tiếp xuống chỉ kiểm tra khói. và áp dụng sửa lỗi cho nhánh phát hành. Nhưng bạn không thể đánh giá liệu một tính năng đã hoàn thành trước khi tạo một bản phát hành

Nếu bạn kiểm tra sự phát triển thì bạn sẽ có được các nhánh tính năng sửa lỗi nhỏ. Các tính năng vẫn được hợp nhất trước khi được đánh giá, cộng với các tính năng cho bản phát hành tiếp theo có thể xung đột với việc kiểm tra bản phát hành hiện tại.

Nếu bạn kiểm tra các nhánh Tính năng, bạn cần một triệu môi trường và phải sắp xếp thứ tự hợp nhất và kiểm tra ký tắt. cộng với rất nhiều thử lại.

Từ kinh nghiệm của tôi, tôi muốn giới thiệu:

kiểm tra nhanh chi nhánh tính năng trên máy dev. chỉ cần đảm bảo tính năng của nó hoàn thành và người kiểm tra / nhà phát triển đồng ý về ý nghĩa của các yêu cầu.

Kiểm tra hàng ngày / kiểm tra tự động trên nhánh dev được triển khai cho các máy chủ qa. Cho phép bạn kiểm tra tất cả các tính năng với nhau và nói khi nào bạn sẵn sàng phát hành.

Nếu tất cả các tính năng trong nhưng thử nghiệm không kết thúc. ví dụ nước rút đã hoàn thành tạo một nhánh phát hành và triển khai đến môi trường qa thứ hai. Điều này cho phép sửa lỗi / kiểm tra trên bản phát hành 1 để tiếp tục cùng lúc với các tính năng cho bản phát hành 2.

(những người hâm mộ scrum sẽ nói rằng bạn chỉ nên sửa lỗi trong lần chạy nước rút 2 nhưng hãy thực tế)

Kiểm tra khói khi triển khai xanh / xanh trực tiếp trước khi chuyển đổi. Đây là những điều cực kỳ quan trọng vì bạn sẽ nhận được các lỗi cấu hình / môi trường mà không ai thực sự tìm thấy trong khi phát triển.


-2

Tôi đồng ý với Thomas Owens. Bạn có thể nên được thử nghiệm hai lần. Một lần trên nhánh tính năng trước khi nó được hợp nhất và một lần trên nhánh chính của bạn trước khi bạn phát hành.

Trên thực tế, tôi yêu thích quy trình làm việc đó rất nhiều, tôi đã tạo ra một công cụ, Topico , tự động xây dựng và chạy các phiên bản ứng dụng dùng một lần cho mỗi yêu cầu kéo, mỗi yêu cầu có một URL thử nghiệm riêng. Điều này cho phép nhóm QA của bạn kiểm tra các nhánh tính năng một cách cô lập mà không cần một loại môi trường thử nghiệm động nào được thiết lập trên máy của riêng họ.

Cách tiếp cận này sẽ có nghĩa là chỉ có mã đã vượt qua thử nghiệm của con người mới đến được chi nhánh chính của bạn, do đó duy trì tính toàn vẹn của nó.

Tôi đã giới thiệu điều này tại một vài công ty và nó đã giúp chu kỳ phát hành của chúng tôi rất nhiều. Bây giờ chúng tôi có thể lên lịch chính xác cho các bản phát hành, và chúng tôi hiểu rõ hơn về những gì có khả năng đưa nó vào bản phát hành tiếp theo và những gì sẽ phải chờ bản phát hành trong tương lai. Nó chỉ giúp bạn tự tin hơn rất nhiều.


Tôi chỉ có thể giả sử downvote là do ai đó đã xúc phạm đến tôi khi đề cập đến công cụ của riêng tôi. Công cụ này đặc biệt giải quyết các mối quan tâm của OP thể hiện trong các bình luận về câu trả lời của Thomas Owen vì vậy tôi không chắc chắn rằng downvote đã được bảo hành.
nlyn
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.