Làm thế nào tôi có thể bắt đầu thử nghiệm trong một thử nghiệm chống nuôi cấy? [đóng cửa]


20

Tôi có một lời thú nhận để thực hiện: Kiểm thử tự động chính thức chưa bao giờ là một phần của nền tảng lập trình của tôi. Bây giờ tôi làm việc trong một công ty rất lớn với nhiều nhà phát triển (hầu hết trong số họ là nhà phát triển web thuộc loại này hoặc loại khác) và rõ ràng là hầu hết trong số họ không thử nghiệm *. (* Tôi sẽ không tiếp tục nói chính thức ; vui lòng suy luận ra.)

Nếu tôi chờ đợi để có sự hỗ trợ của tổ chức của tôi để bắt đầu thử nghiệm thì điều đó sẽ không bao giờ xảy ra. Nếu tôi cố gắng "thay đổi mọi thứ từ bên trong" bằng cách đẩy thử nghiệm tại ban quản lý, tôi sẽ hết hơi trước khi thay đổi xảy ra. Tôi cần bắt đầu thử nghiệm ngay bây giờ.

Nhưng với TDD và ilk của nó, tôi sẽ kết thúc với rất nhiều mã thử nghiệm cùng với mã sản xuất. Các hệ thống kiểm soát phiên bản của chúng tôi (tất cả tập trung) không được tổ chức để lưu trữ mã kiểm tra. Tôi sẽ phải tìm một nơi cho tất cả những thứ đó trên máy trạm của tôi.

Có thể bắt đầu một thực hành cá nhân về kiểm thử phần mềm trong một nền văn hóa không có giá trị hoặc cung cấp các công cụ cho nó không? Những kỹ thuật và công cụ nào bạn sử dụng để cho phép bạn kiểm tra khi các công cụ và tổ chức chính thức không có chỗ để kiểm tra, khung và tự động hóa?


14
Tại sao bạn không thể lưu trữ mã kiểm tra trong VCS của công ty? Tôi tưởng tượng rằng trong một dự án có một srcthư mục cho mã sản xuất, cũng có thể thêm một testthư mục - hoặc nó bị cấm rõ ràng vì một số lý do?
Péter Török


@ PéterTörök Bạn đánh giá quá cao chúng tôi. Chúng tôi không có một srcthư mục, chúng tôi có nguồn gốc web. Để kiểm tra mã của tôi vào VCS trung tâm, tôi sẽ kiểm tra mã gốc vào web.
kojiro

Nếu bạn không có quyền kiểm soát nguồn trong văn hóa chống độc quyền của mình, tôi sẽ cố gắng làm điều đó trước tiên (hoặc tốt) vì điều đó sẽ giải quyết được nhiều vấn đề khác mà tôi chắc chắn rằng nhóm của bạn đang gặp phải. Sau đó, nó đặt nền tảng cho những gì bạn muốn làm để thử nghiệm.
Scott Wylie

@ScottWylie Tôi không nói rõ điều đó. Chúng tôi có VCS, chúng tôi không tổ chức thử nghiệm (hoặc nhiều thứ khác ngoài các chỉnh sửa trực tiếp cho nội dung webroot). Tôi nghĩ rằng cháu trai của ai đó đã thiết lập CVS vào năm 1998 và không ai thay đổi nó kể từ đó.
kojiro

Câu trả lời:


22

Cá nhân tôi đã làm điều này với thành công đáng kể. Các yếu tố chính để thành công:

  • Nhận (dự kiến) hỗ trợ quản lý. Những lợi thế của kiểm tra tự động hóa là tài liệu tốt và nên thuyết phục bất kỳ người quản lý nào ít nhất thử nó. Điều đó bao gồm tìm một vị trí trong VCS và máy chủ xây dựng, bởi vì
  • Kiểm tra tự động chỉ cung cấp giá trị đầy đủ của chúng nếu chúng được chạy thường xuyên và tự động để bạn sớm biết về các vấn đề và không phải dựa vào những người không quên chạy chúng. Bạn cần một máy chủ xây dựng chạy chúng ít nhất hàng ngày. Đây có thể là một máy trạm cũ. Jenkins mất rất ít công việc để chạy.
  • Dẫn bằng ví dụ. Viết bài kiểm tra, nói về lợi ích mà họ cung cấp cho bạn và khi họ tiết lộ các lỗi được giới thiệu bởi các nhà phát triển khác, hãy nói về vấn đề họ được bảo vệ khỏi sự bối rối lớn hơn nhiều.
  • Đi cho trái cây treo thấp. Một số phần của ứng dụng sẽ khó kiểm tra, những phần khác thì dễ. Một số sẽ mạnh mẽ, một số khác giòn. Viết bài kiểm tra cho các phần dễ vỡ, nhưng dễ kiểm tra cung cấp giá trị nhất trong thời gian ngắn nhất.
  • Xem nếu bạn có thể viết các bài kiểm tra có thể sử dụng lại, ví dụ: các quy ước hoặc tính năng kiểm tra mà tất cả các mô-đun (trang web, dịch vụ REST, bất cứ điều gì) phải có nhưng thường bị lãng quên.

7

Không có sự hỗ trợ quản lý, bạn sẽ chết trong nước. Quản lý sẽ tuyên bố rằng bạn không làm việc đáng giá, bạn sẽ bị phạt trong các đánh giá của bạn, và cuối cùng bạn sẽ bị sa thải. Có nhiều cách để đưa quản lý thấy rằng thử nghiệm sớm chi phí cho họ ít hơn và tất cả điều đó. Có thể thay đổi văn hóa nhưng bạn đang đặt cổ lên khối chặt.

Tôi sẽ đề nghị đọc Machiavelli Chương Hoàng tử về cách giới thiệu thay đổi trước khi làm bất cứ điều gì.


Của bạn là câu trả lời thứ hai cho thấy rằng thử nghiệm sẽ tốn thời gian mà nếu không sẽ không được sử dụng. Nhưng thử nghiệm các nhà truyền giáo (dường như với tôi) sẽ cho bạn biết rằng thử nghiệm giúp tiết kiệm thời gian. Không chỉ về lâu dài, mà ngay cả trong một dự án có độ dài trung bình, bởi vì bạn sẽ không mất nhiều thời gian để gỡ lỗi mã sản xuất của mình và các thử nghiệm buộc bạn phải điều chỉnh mã để vượt qua chúng, điều này (trong tôi sự hiểu biết về lý thuyết) tất cả phục vụ để giảm thời gian mã hóa tổng thể. Bạn có thấy rằng không phải là trường hợp?
kojiro

1
@kojiro: Có, thử nghiệm tổng thể sẽ giảm thời gian và chi phí. Tuy nhiên, nó sẽ không làm như vậy trong ngắn hạn. Một số nhà quản lý xem ngắn hạn là quan trọng hơn. Rốt cuộc, một phần mềm tốt là gì nếu không phải là một công ty được trả tiền và có thể tính phí cho khách hàng để sửa lỗi.
Sardathrion - Phục hồi Monica

2
Việc kiểm tra giúp tiết kiệm thời gian nhưng khi bạn phải làm lại một nửa mã để có thể kiểm tra được, ban đầu bạn sẽ lãng phí thời gian để thực hiện tất cả công việc đó chỉ trong vài tháng, có thể có các bài kiểm tra và sau đó tăng tốc. Các nhà quản lý không nghĩ rằng "tháng sau" họ nghĩ trong "tháng này", vì vậy tất cả những gì họ từng thấy là "lãng phí thời gian" bởi vì nhà phát triển đó không tạo mã mới mà họ đang chơi với các bài kiểm tra mà chúng ta có thể ' Bán hoặc, nhiều khả năng, tái cấu trúc mã "đã hoạt động"
Wayne Molina

Thông thường, ngay cả trong ngắn hạn, nó sẽ tiết kiệm thời gian. Khi bạn đang làm việc trên một cái gì đó, sẽ nhanh hơn rất nhiều để có thể thực hiện một đoạn mã thông qua một bài kiểm tra, sau đó phải chạy toàn bộ ứng dụng và dỗ nó thực thi đoạn mã cụ thể đó.
Stefan Billiet

3

Theo kinh nghiệm của tôi nếu văn hóa chống thử nghiệm, bạn không thể giới thiệu nó một cách hợp lý. Các bài kiểm tra sẽ bị coi là lãng phí thời gian và bạn sẽ bị khiển trách vì "lãng phí thời gian" hoặc "mất quá nhiều thời gian", hoặc mã đã bị hủy bỏ sau nhiều năm không được viết theo cách có thể kiểm tra được (ví dụ: không có giao diện, mọi thứ kết hợp chặt chẽ) và bạn sẽ phải dành nhiều thời gian để tái cấu trúc và / hoặc viết lại mã (do đó có nguy cơ "mất quá nhiều thời gian" và "lãng phí thời gian") để có thể kiểm tra được ngay từ đầu .

Bạn có thể có cơ hội nếu bạn đang làm những thứ trên greenfield chỉ phải tương tác với những thứ hiện có (tạo một trình bao bọc đẹp xung quanh các khu vực xấu) hoặc nếu bạn có thể làm điều đó với số lượng nhỏ, nơi nó sẽ không gây ra vấn đề hoặc yêu cầu bạn phải "Làm việc trên các nhiệm vụ không được giao cho bạn" có thể đưa bạn vào nhà ổ chuột.


1

Tôi không nghĩ rằng bạn sẽ đi rất xa cho đến khi bạn có thể đưa ra một trường hợp đủ tốt để có một vấn đề (hiện có thể không được công nhận) mà kiểm tra tự động có thể giải quyết.

Nếu có văn hóa kiểm tra thủ công đối với các tập lệnh được xác định, thì sẽ có chi phí thực hiện các tập lệnh đó cùng với rủi ro về kết quả không đầy đủ hoặc không chính xác. Có thể có một lịch sử (tài liệu hoặc ở dạng "câu chuyện chiến tranh"). Đề xuất một dự án thí điểm để tự động hóa một số thử nghiệm thủ công nhằm cung cấp một khoản tiết kiệm chi phí dài hạn.

Nếu thậm chí không có chức năng kiểm tra thủ công thì tôi đề nghị doanh nghiệp không nhận thấy rằng bất kỳ loại thử nghiệm chính thức nào, tự động hay nói cách khác, đều có giá trị. Trong trường hợp đó, tôi coi con đường phía trước là dài và dốc lên, nhưng một lần nữa có thể cần một minh chứng rõ ràng rằng doanh nghiệp có thể hưởng lợi từ việc áp dụng cách tiếp cận ít bình thường hơn đối với chất lượng phần mềm. Nếu bạn không thể làm điều đó thì thật khó để thấy làm thế nào có thể có bất kỳ sự hỗ trợ nào cho ý tưởng trên cơ sở thương mại.


0

Một ý tưởng là bạn đặt mục tiêu viết một bài kiểm tra chứng minh rằng mã mà người khác đã viết bị lỗi. Nên bán khái niệm.

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.