Kiểm tra đơn vị, kiểm tra tích hợp, kiểm tra khói và kiểm tra hồi quy là gì?


732

Kiểm tra đơn vị, kiểm tra tích hợp, kiểm tra khói và kiểm tra hồi quy là gì? Sự khác biệt giữa chúng và những công cụ nào tôi có thể sử dụng cho mỗi trong số chúng là gì?

Ví dụ: tôi sử dụng JUnitNUnit để kiểm tra đơn vịkiểm tra tích hợp . Có công cụ nào cho hai thử nghiệm khói , thử nghiệm hồi quy hay hồi quy không?



1
Những người khác đã trả lời tốt, nhưng tôi muốn nói thêm rằng cá nhân tôi nghĩ rằng Kiểm tra khói và Kiểm tra hồi quy là dư thừa. Họ làm điều tương tự: kiểm tra để đảm bảo rằng các thay đổi đối với hệ thống không phá vỡ bất cứ điều gì.
Randolpho

15
Tôi nghĩ rằng chúng là khá khác nhau để kiểm tra hồi quy. Tôi nghĩ rằng chúng cố tình 'kiểm tra nhanh' trọng lượng nhẹ được chạy khi bắt đầu để tiết kiệm thời gian bởi vì nếu bất kỳ trong số này thất bại thì bạn biết rằng không đáng bận tâm với bất kỳ thử nghiệm bổ sung nào. ví dụ: Máy khách có thể kết nối với cơ sở dữ liệu, được cài đặt .net, là phiên bản chính xác được cài đặt ... Bạn cũng có thể đã triển khai trước (chúng tôi đang nâng cấp từ v1 lên v1.1, vì vậy hãy kiểm tra xem v1 đã được cài đặt chưa) và sau đó triển khai thử nghiệm khói.
AndyM

Kiểm tra khói là như AndyM mô tả. Nhưng chúng cũng là một loại thử nghiệm hồi quy.
kevin mcdonnell

Câu trả lời:


1044
  • Kiểm tra đơn vị : Chỉ định và kiểm tra một điểm trong hợp đồng của phương thức duy nhất của một lớp. Điều này nên có một phạm vi rất hẹp và được xác định rõ. Sự phụ thuộc phức tạp và tương tác với thế giới bên ngoài bị bế tắc hoặc chế giễu .

  • Kiểm thử tích hợp : Kiểm tra hoạt động tương tác chính xác của nhiều hệ thống con. Có toàn bộ phổ ở đó, từ thử nghiệm tích hợp giữa hai lớp, đến thử nghiệm tích hợp với môi trường sản xuất.

  • Kiểm tra khói (hay còn gọi là kiểm tra độ sạch ) : Một thử nghiệm tích hợp đơn giản trong đó chúng tôi chỉ kiểm tra xem khi hệ thống được kiểm tra được gọi, nó sẽ trở lại bình thường và không nổ tung.

    • Kiểm tra khói là tương tự như điện tử, trong đó thử nghiệm đầu tiên xảy ra khi cấp nguồn cho mạch điện (nếu hút thuốc, điều đó thật tệ!) ...
    • ... Và, rõ ràng , với hệ thống ống nước , nơi một hệ thống đường ống được lấp đầy bởi khói và sau đó được kiểm tra trực quan. Nếu bất cứ thứ gì hút thuốc, hệ thống bị rò rỉ.
  • Kiểm tra hồi quy : Một kiểm tra được viết khi một lỗi đã được sửa. Nó đảm bảo rằng lỗi cụ thể này sẽ không xảy ra lần nữa. Tên đầy đủ là "kiểm tra không hồi quy". Nó cũng có thể là một thử nghiệm được thực hiện trước khi thay đổi một ứng dụng để đảm bảo ứng dụng cung cấp kết quả tương tự.

Về điều này, tôi sẽ thêm:

  • Kiểm tra chấp nhận : Kiểm tra rằng một tính năng hoặc trường hợp sử dụng được thực hiện chính xác. Nó tương tự như một thử nghiệm tích hợp, nhưng tập trung vào trường hợp sử dụng để cung cấp hơn là các thành phần liên quan.

  • Kiểm tra hệ thống : Kiểm tra một hệ thống dưới dạng hộp đen. Sự phụ thuộc vào các hệ thống khác thường bị chế giễu hoặc sơ khai trong quá trình thử nghiệm (nếu không nó sẽ là một thử nghiệm tích hợp nhiều hơn).

  • Kiểm tra trước chuyến bay : Các xét nghiệm được lặp lại trong môi trường giống như sản xuất, để làm giảm bớt hội chứng 'xây dựng trên máy của tôi'. Thông thường điều này được nhận ra bằng cách thực hiện một thử nghiệm chấp nhận hoặc hút thuốc trong một môi trường như sản xuất.


250
Kiểm tra khói có trước một thế kỷ điện tử và xuất phát từ hệ thống ống nước, khi một hệ thống đường ống được lấp đầy bởi một làn khói thực tế và sau đó kiểm tra bằng mắt. Nếu nó hút thuốc, nó đã bị rò rỉ.
SnakE

2
Kiểm tra hồi quy cũng được sử dụng để thay đổi tính năng, không chỉ sửa lỗi. Câu trả lời của Nikita dưới đây là một định nghĩa toàn diện hơn.
BobRodes

25
@AndyM Bối cảnh của 'Thử nghiệm khói' là không chính xác. IIRC nó đến từ hệ thống ống nước, nơi khói được bơm vào hệ thống đường ống sau khi được xây dựng (và trước khi nó được kết nối với nguồn cấp nước). Nếu bất kỳ khói thoát ra, các đường ống không được niêm phong đúng cách. Điều này ít gây tổn hại hơn so với việc thực sự để nước chảy và xem có bất kỳ vũng nước nào xảy ra không (có thể làm hỏng tường / khối xây trong quá trình). Đó là một xấp xỉ tổng thể rằng hệ thống sẽ không thất bại thảm hại. Một quá trình dev có thể là: "Build" được thông qua? => "Thử khói" đã qua? => "Kiểm tra chấp nhận" đã thông qua => gửi cho nhóm QA để kiểm tra chi tiết.
Cristian Diaconescu

4
Tôi tin rằng bạn đã mắc lỗi khi nói rằng "Kiểm tra hồi quy" có thực sự là viết tắt của "Kiểm tra không hồi quy" không? Tôi nghi ngờ, một phần vì điều đó không trực quan và khó hiểu (mặc dù có rất nhiều thuật ngữ), nhưng Wikipedia cũng có hai bài viết riêng về Kiểm tra hồi quy và Kiểm tra không hồi quy. Bài báo về kiểm tra hồi quy thậm chí còn nói: Tương phản với kiểm tra không hồi quy ... nhằm mục đích xác minh xem, sau khi giới thiệu hoặc cập nhật một ứng dụng phần mềm nhất định, thay đổi có mang lại hiệu quả như mong muốn hay không.
Brian C

2
@ddaa Thử nghiệm vệ sinh và thử nghiệm khói không giống nhau. Thử nghiệm độ tinh khiết được thực hiện sau khi bản dựng đã xóa thử nghiệm Khói và đã được nhóm QA chấp nhận để thử nghiệm thêm, thử nghiệm độ tinh khiết kiểm tra chức năng chính với các chi tiết tốt hơn.
Bharat

105
  • Kiểm tra đơn vị : kiểm tra tự động để kiểm tra hoạt động nội bộ của một lớp. Nó phải là một thử nghiệm độc lập không liên quan đến các tài nguyên khác.
  • Kiểm thử tích hợp : kiểm tra tự động được thực hiện trên môi trường, tương tự như kiểm tra đơn vị nhưng với tài nguyên bên ngoài (db, truy cập đĩa)
  • Kiểm tra hồi quy : sau khi thực hiện các tính năng mới hoặc sửa lỗi, bạn kiểm tra lại các tình huống đã hoạt động trong quá khứ. Ở đây bạn đề cập đến khả năng các tính năng mới của bạn phá vỡ các tính năng hiện có.
  • Thử nghiệm khói : thử nghiệm đầu tiên mà người thử nghiệm có thể kết luận nếu họ sẽ tiếp tục thử nghiệm.

2
Định nghĩa kiểm tra hồi quy không thực sự chính xác như thế nào. @ddaa định nghĩa chính xác.
Robert Koritnik

Định nghĩa của Test Test chắc chắn là mờ nhạt. Chẳng hạn, câu trả lời ở đây stackoverflow.com/a/4904533/32453 được định nghĩa nhiều hơn là kiểm tra nhiều tương tác của mã của bạn, không nhất thiết cần một DB thực (tài nguyên bên ngoài) ... mặc dù một số người định nghĩa nó theo cách bạn đã mô tả ... Thuật ngữ ahh. (Tôi phần nào thích định nghĩa trước đây, FWIW, thử nghiệm nhiều tương tác.)
rogerdpack

Vui lòng xem câu hỏi của tôi: stackoverflow.com/questions/61711739/ từ
milad salimi

Điều đó trả lời tiêu đề, nhưng không phải là công cụ về hai loại thử nghiệm cuối cùng, để thử nghiệm khói hoặc thử nghiệm hồi quy .
Peter Mortensen

90

Mọi người sẽ có định nghĩa hơi khác nhau, và thường có các khu vực màu xám. Tuy nhiên:

  • Kiểm tra đơn vị: một chút này (càng cô lập càng tốt) có hoạt động không?
  • Kiểm thử tích hợp: hai thành phần này (hoặc nhiều hơn) có hoạt động cùng nhau không?
  • Kiểm tra khói: toàn bộ hệ thống này (càng gần là một hệ thống sản xuất càng tốt) có thể kết hợp với nhau một cách hợp lý không? (tức là chúng ta có tự tin một cách hợp lý rằng nó sẽ không tạo ra một lỗ đen không?)
  • Kiểm tra hồi quy: chúng tôi đã vô tình giới thiệu lại bất kỳ lỗi nào chúng tôi đã sửa trước đây chưa?

Làm thế nào để bạn đặt các bài kiểm tra tích hợp của bạn đối với các bài kiểm tra đơn vị? Nếu myprj là thư mục dự án chính và mypkgnằm ở dưới myprj, tôi có các bài kiểm tra đơn vị nằm bên dưới myprj/tests/test_module1.pyvà gói của tôi nằm ở dưới myprj/mypkg. Điều này hoạt động rất tốt cho các bài kiểm tra đơn vị, nhưng tôi tự hỏi nếu có bất kỳ quy ước nào, tôi nên tuân theo các bài kiểm tra tích hợp nên nằm ở đâu?
alpha_989

1
@ alpha_989: Tôi không biết quy ước sẽ là gì đối với Python. Trong .NET tôi hiện có mã sản xuất, kiểm tra đơn vị và kiểm tra tích hợp trong ba dự án riêng biệt, các đồng nghiệp của nhau - nhưng cũng có rất nhiều lựa chọn thay thế.
Jon Skeet

Được rồi cảm ơn. Tôi có thể tìm thấy khuyến nghị tiêu chuẩn khác hơn là nhìn vào một dự án python khác. nhưng tôi sẽ theo dõi bạn ..
alpha_989

Vui lòng xem câu hỏi của tôi: stackoverflow.com/questions/61711739/ từ
milad salimi

@miladsalimi: Vui lòng không thêm nhận xét không liên quan chỉ để thu hút sự chú ý cho câu hỏi khác. Tôi thấy bạn đã làm điều đó trên bốn bài viết khác - xin đừng.
Jon Skeet

51

Một loại thử nghiệm mới mà tôi vừa biết là thử nghiệm chim hoàng yến . Thử nghiệm canary là một thử nghiệm tự động, không phá hủy, được chạy thường xuyên trong môi trường sống , do đó nếu nó thất bại, điều gì đó thực sự tồi tệ đã xảy ra.

Ví dụ có thể là:

  • Có dữ liệu nào chỉ có sẵn trong quá trình phát triển / thử nghiệm xuất hiện trực tiếp không?
  • Có một quá trình nền không chạy được?
  • Người dùng có thể đăng nhập không?

2
Trang web có thể được ping hoàn toàn không - đủ thích hợp, một dịch vụ có tên Binary Canary tồn tại.
Dan Dascalescu

15
Cái tên này bắt nguồn từ việc khai thác than: hãy dùng canary với bạn "down t'pit". Khi nó hít nó, hãy nhanh chóng thoát ra. Chim hoàng yến rất nhạy cảm với nồng độ nhỏ của khí độc hại và sẽ chết trước khi nồng độ trở nên độc hại đối với con người. Nếu thử nghiệm Canary thất bại, hãy khắc phục nhanh chóng vì đó chỉ là vấn đề thời gian trước khi LIVE thất bại.
Robino

1
Cách chúng tôi sử dụng thử nghiệm Canary trong công việc của tôi là trước tiên chuyển một số khách hàng sang một phiên bản mới, thay vì tất cả họ cùng một lúc. Nếu một vài khách hàng đầu tiên sống sót, chúng tôi có thể thêm phần còn lại. Những người đầu tiên là những con chim hoàng yến.
00prometheus

2
@ 00prometheus, đó là thử nghiệm beta.
GregNash

1
@HarveyLin, mặc dù thử nghiệm Canary nhất thiết phải là thử nghiệm ngăn ngừa thảm họa, tất nhiên nó không chỉ được sử dụng theo cách này. Nhưng nguyên tắc chung là "kiểm tra cái này có hiệu quả không 'vì nó quan trọng". Tất nhiên, mọi bài kiểm tra đều có mục tiêu gần như giống nhau, nhưng khái niệm này rất cụ thể. Trong trường hợp của bạn, tôi sẽ không tính tất cả các bài kiểm tra là bài kiểm tra Canary.
Charles Roberto Canato

12

Trả lời từ một trong những trang web tốt nhất cho các kỹ thuật kiểm thử phần mềm:

Các loại kiểm thử phần mềm - danh sách đầy đủ bấm vào đây

Nhập mô tả hình ảnh ở đây

Đây là một mô tả khá dài và tôi sẽ không dán nó ở đây: nhưng nó có thể hữu ích cho những người muốn biết tất cả các kỹ thuật kiểm tra.


10

Kiểm tra đơn vị: Xác minh rằng thành phần cụ thể (nghĩa là lớp) đã tạo hoặc sửa đổi các chức năng như được thiết kế. Thử nghiệm này có thể là thủ công hoặc tự động, nhưng nó không vượt ra khỏi ranh giới của thành phần.

Kiểm thử tích hợp: Xác minh rằng sự tương tác của các thành phần cụ thể có chức năng như được thiết kế. Kiểm tra tích hợp có thể được thực hiện ở cấp độ đơn vị hoặc cấp độ hệ thống. Những xét nghiệm này có thể là thủ công hoặc tự động.

Kiểm tra hồi quy: Xác minh rằng các lỗi mới không được đưa vào mã hiện có. Những xét nghiệm này có thể là thủ công hoặc tự động.

Tùy thuộc vào SDLC của bạn ( thác nước , RUP , nhanh nhẹn , v.v.), các thử nghiệm cụ thể có thể được thực hiện theo "giai đoạn" hoặc tất cả có thể được thực hiện, nhiều hay ít, cùng một lúc. Ví dụ, kiểm thử đơn vị có thể được giới hạn cho các nhà phát triển, những người sau đó chuyển mã cho người kiểm tra để kiểm tra tích hợp và hồi quy. Tuy nhiên, một cách tiếp cận khác có thể có các nhà phát triển thực hiện kiểm thử đơn vị và một số mức độ tích hợp và kiểm tra hồi quy (sử dụng phương pháp TDD cùng với tích hợp liên tục và kiểm tra hồi quy đơn vị và đơn vị tự động).

Bộ công cụ sẽ phụ thuộc phần lớn vào cơ sở mã, nhưng có nhiều công cụ nguồn mở để thử nghiệm đơn vị (JUnit). Kiểm tra QTP của HP (Mercury) hoặc Borland's Silk đều là các công cụ để kiểm tra tích hợp và hồi quy tự động.


Đây là một trong số ít câu trả lời bao gồm một cái gì đó về các công cụ.
Peter Mortensen

8

Kiểm thử đơn vị : kiểm tra một mô-đun riêng lẻ hoặc thành phần độc lập trong một ứng dụng được biết là kiểm thử đơn vị. Việc kiểm tra đơn vị sẽ được thực hiện bởi nhà phát triển.

Kiểm thử tích hợp : kết hợp tất cả các mô-đun và kiểm tra ứng dụng để xác minh giao tiếp và luồng dữ liệu giữa các mô-đun có hoạt động tốt hay không. Thử nghiệm này cũng được thực hiện bởi các nhà phát triển.

Kiểm tra khói Trong thử nghiệm khói, họ kiểm tra ứng dụng một cách nông và rộng. Trong thử nghiệm khói, họ kiểm tra chức năng chính của ứng dụng. Nếu có bất kỳ sự cố chặn nào trong ứng dụng, họ sẽ báo cáo cho nhóm nhà phát triển và nhóm phát triển sẽ khắc phục và khắc phục lỗi và đưa lại cho nhóm thử nghiệm. Bây giờ nhóm thử nghiệm sẽ kiểm tra tất cả các mô-đun để xác minh xem các thay đổi được thực hiện trong một mô-đun có ảnh hưởng đến mô-đun khác hay không. Trong thử nghiệm khói các trường hợp thử nghiệm được kịch bản.

Kiểm tra hồi quy thực hiện các trường hợp kiểm thử tương tự lặp đi lặp lại để đảm bảo mô-đun không thay đổi không gây ra bất kỳ lỗi nào. Kiểm tra hồi quy được thử nghiệm chức năng


Điều đó trả lời tiêu đề, nhưng không phải là công cụ về hai loại thử nghiệm cuối cùng, để thử nghiệm khói hoặc thử nghiệm hồi quy. Nó cũng lặp lại các câu trả lời trước - nó có thể trở nên độc đáo bằng cách trả lời câu hỏi về các công cụ.
Peter Mortensen

7

KIỂM TRA ĐĂNG KÝ-

"Thử nghiệm hồi quy chạy lại các thử nghiệm trước đó đối với phần mềm đã thay đổi để đảm bảo rằng các thay đổi được thực hiện trong phần mềm hiện tại không ảnh hưởng đến chức năng của phần mềm hiện có."


18
Bạn đang trích dẫn từ đâu?
Daryl

4
Theo trang này , trích dẫn đó xuất phát từ bài viết "Kiểm thử phần mềm" trên Wikipedia mặc dù có vẻ như đoạn văn đã bị thay đổi vào một thời điểm nào đó kể từ năm 2010
Zach Lysobey

Dù sao, WP không phải là một nguồn hợp lệ. Nguồn tham khảo có thể có giá trị. Không có nguồn hợp lệ nào được tham chiếu trong WP, trong các bài viết cũng như trên các trang thảo luận, sẽ hỗ trợ cho tuyên bố rằng "không" tạo ra bất kỳ sự khác biệt nào. Tôi đã so sánh các đoạn văn bản trong danh sách kết quả từ các tìm kiếm trong Google Sách cho cả "regression test""non-regression test". Nó giống nhau.
Rainald62

Đó là câu trả lời (một phần) của tiêu đề, nhưng không phải là công cụ về các công cụ cho hai loại thử nghiệm cuối cùng, để thử nghiệm khói hoặc thử nghiệm hồi quy. Nó cũng lặp lại các câu trả lời trước - nó có thể trở nên độc đáo bằng cách trả lời câu hỏi về các công cụ.
Peter Mortensen

7

Tôi chỉ muốn thêm và cung cấp thêm một số bối cảnh về lý do tại sao chúng tôi có các cấp độ kiểm tra này, ý nghĩa thực sự của chúng với các ví dụ

Mike Cohn trong cuốn sách của mình, thành công với Agile, đã đưa ra thử nghiệm Kim tự tháp thử nghiệm như một cách để tiếp cận các thử nghiệm tự động trong các dự án. Có nhiều cách hiểu khác nhau về mô hình này. Mô hình giải thích loại thử nghiệm tự động nào cần được tạo, tốc độ họ có thể đưa ra phản hồi về ứng dụng đang được thử nghiệm và ai viết các thử nghiệm này. Về cơ bản có 3 cấp độ kiểm tra tự động cần thiết cho bất kỳ dự án nào và chúng như sau.

Kiểm tra đơn vị - Những kiểm tra thành phần nhỏ nhất trong ứng dụng phần mềm của bạn. Đây thực sự có thể là một hàm trong mã tính toán giá trị dựa trên một số đầu vào. Chức năng này là một phần của một số chức năng khác của cơ sở mã phần cứng / phần mềm tạo nên ứng dụng.

Ví dụ: Hãy sử dụng ứng dụng máy tính dựa trên web. Các thành phần nhỏ nhất của ứng dụng này cần được kiểm tra đơn vị có thể là một hàm thực hiện phép cộng, một hàm khác thực hiện phép trừ, v.v. Tất cả các chức năng nhỏ này kết hợp lại tạo nên ứng dụng máy tính.

Nhà phát triển trong lịch sử viết các bài kiểm tra này vì chúng thường được viết bằng ngôn ngữ lập trình giống như ứng dụng phần mềm. Các khung kiểm tra đơn vị như JUnit và NUnit (cho java), MSTest (cho C # và .NET) và Jasmine / Mocha (cho JavaScript) được sử dụng cho mục đích này.

Ưu điểm lớn nhất của các bài kiểm tra đơn vị là, chúng chạy rất nhanh bên dưới giao diện người dùng và chúng tôi có thể nhận được phản hồi nhanh về ứng dụng. Điều này sẽ bao gồm hơn 50% các bài kiểm tra tự động của bạn.

Các thử nghiệm tích hợp / API - Những thử nghiệm các thành phần khác nhau của hệ thống phần mềm với nhau. Các thành phần có thể bao gồm cơ sở dữ liệu thử nghiệm, API (Giao diện lập trình ứng dụng), các công cụ và dịch vụ của bên thứ 3 cùng với ứng dụng.

Ví dụ: Trong ví dụ về máy tính của chúng tôi ở trên, ứng dụng web có thể sử dụng cơ sở dữ liệu để lưu trữ các giá trị, sử dụng API để thực hiện một số xác thực phía máy chủ và nó có thể sử dụng công cụ / dịch vụ của bên thứ 3 để xuất bản kết quả lên đám mây để cung cấp thông tin khác nhau nền tảng.

Trong lịch sử, một nhà phát triển hoặc QA kỹ thuật sẽ viết các thử nghiệm này bằng nhiều công cụ khác nhau như Postman, SoapUI, JMeter và các công cụ khác như Testim.

Chúng chạy nhanh hơn nhiều so với kiểm tra UI vì chúng vẫn chạy bên dưới mui xe nhưng có thể tiêu tốn thời gian hơn một chút so với kiểm tra đơn vị vì nó phải kiểm tra giao tiếp giữa các thành phần độc lập khác nhau của hệ thống và đảm bảo chúng có tích hợp liền mạch. Điều này sẽ bao gồm hơn 30% các bài kiểm tra tự động.

Kiểm tra giao diện người dùng- Cuối cùng, chúng tôi có các bài kiểm tra xác thực giao diện người dùng của ứng dụng. Các thử nghiệm này thường được viết để kiểm tra dòng chảy từ đầu đến cuối thông qua ứng dụng.

Ví dụ: Trong ứng dụng máy tính, có thể kết thúc luồng kết thúc, mở trình duyệt-> Nhập url ứng dụng máy tính -> Đăng nhập bằng tên người dùng / mật khẩu -> Mở ứng dụng máy tính -> Thực hiện một số thao tác trên máy tính -> xác minh những kết quả đó từ UI -> Đăng xuất khỏi ứng dụng. Đây có thể là một kết thúc để kết thúc dòng chảy sẽ là một ứng cử viên tốt cho tự động hóa giao diện người dùng.

Trong lịch sử, QA kỹ thuật hoặc người kiểm tra thủ công viết bài kiểm tra UI. Họ sử dụng các khung công tác nguồn mở như Selenium hoặc các nền tảng thử nghiệm UI như Testim để tác giả, thực hiện và duy trì các thử nghiệm. Các thử nghiệm này cung cấp nhiều phản hồi trực quan hơn khi bạn có thể thấy các thử nghiệm đang chạy như thế nào, sự khác biệt giữa kết quả thực tế và dự kiến ​​thông qua ảnh chụp màn hình, nhật ký, báo cáo thử nghiệm.

Hạn chế lớn nhất của các bài kiểm tra UI là, chúng tương đối chậm so với các bài kiểm tra cấp độ Đơn vị và API. Vì vậy, nó chỉ bao gồm 10-20% các bài kiểm tra tự động tổng thể.

Hai loại thử nghiệm tiếp theo có thể khác nhau dựa trên dự án của bạn nhưng ý tưởng là-

Kiểm tra khói

Đây có thể là sự kết hợp của 3 cấp độ thử nghiệm ở trên. Ý tưởng là chạy nó trong mỗi lần kiểm tra mã và đảm bảo các chức năng quan trọng của hệ thống vẫn hoạt động như mong đợi; sau khi thay đổi mã mới được hợp nhất. Họ thường cần chạy trong 5 - 10 phút để nhận phản hồi nhanh hơn về các lỗi

Kiểm tra hồi quy

Chúng thường được chạy ít nhất một lần một ngày và bao gồm các chức năng khác nhau của hệ thống. Họ đảm bảo ứng dụng vẫn hoạt động như mong đợi. Chúng có nhiều chi tiết hơn các thử nghiệm khói và bao gồm nhiều kịch bản của ứng dụng bao gồm cả những tình huống không quan trọng.


Câu trả lời này có thể được thực hiện tốt hơn bằng cách trả lời câu hỏi về các công cụ để kiểm tra khói hoặc kiểm tra hồi quy .
Peter Mortensen

5

Kiểm thử đơn vị được hướng vào phần nhỏ nhất của việc thực hiện có thể. Trong Java, điều này có nghĩa là bạn đang kiểm tra một lớp duy nhất. Nếu lớp phụ thuộc vào các lớp khác, chúng bị làm giả.

Khi kiểm tra của bạn gọi nhiều hơn một lớp, đó là kiểm tra tích hợp .

Các bộ thử nghiệm đầy đủ có thể mất nhiều thời gian để chạy, vì vậy sau khi thay đổi, nhiều nhóm chạy một số thử nghiệm nhanh để hoàn thành để phát hiện các sự cố đáng kể. Ví dụ: bạn đã phá vỡ các URI thành các tài nguyên thiết yếu. Đây là những bài kiểm tra khói .

Kiểm tra hồi quy chạy trên mọi bản dựng và cho phép bạn tái cấu trúc hiệu quả bằng cách nắm bắt những gì bạn phá vỡ. Bất kỳ loại thử nghiệm nào cũng có thể là thử nghiệm hồi quy, nhưng tôi thấy các thử nghiệm đơn vị là hữu ích nhất trong việc tìm ra nguồn gốc của lỗi.


Điều đó trả lời tiêu đề, nhưng không phải là công cụ về hai loại thử nghiệm cuối cùng, để thử nghiệm khói hoặc thử nghiệm hồi quy. Nó cũng lặp lại các câu trả lời trước - nó có thể trở nên độc đáo bằng cách trả lời câu hỏi về các công cụ.
Peter Mortensen

4
  • Kiểm thử tích hợp: Kiểm thử tích hợp là tích hợp một yếu tố khác
  • Kiểm tra khói: Kiểm tra khói còn được gọi là kiểm tra phiên bản xây dựng. Kiểm tra khói là quá trình kiểm tra ban đầu được thực hiện để kiểm tra xem phần mềm được kiểm tra có sẵn sàng / ổn định để kiểm tra thêm hay không.
  • Kiểm tra hồi quy: Kiểm tra hồi quy là kiểm tra lặp lại . Cho dù phần mềm mới có được thực hiện trong một mô-đun khác hay không.
  • Kiểm thử đơn vị: Đây là một thử nghiệm hộp trắng. Chỉ có các nhà phát triển tham gia vào nó

Điều đó trả lời tiêu đề, nhưng không phải là công cụ về hai loại thử nghiệm cuối cùng, để thử nghiệm khói hoặc thử nghiệm hồi quy. Nó cũng lặp lại các câu trả lời trước - nó có thể trở nên độc đáo bằng cách trả lời câu hỏi về các công cụ.
Peter Mortensen

2

Kiểm thử đơn vị: Nó luôn thực hiện bởi nhà phát triển sau khi phát triển xong để tìm ra vấn đề từ phía kiểm thử trước khi họ đưa ra bất kỳ yêu cầu nào sẵn sàng cho QA.

Kiểm thử tích hợp: Có nghĩa là người kiểm tra phải xác minh mô-đun để xác minh mô-đun phụ khi một số đầu ra dữ liệu / chức năng được chuyển từ một mô-đun sang mô-đun khác. Hoặc trong hệ thống của bạn nếu sử dụng công cụ của bên thứ ba sử dụng dữ liệu hệ thống của bạn để tích hợp.

Kiểm tra khói: người kiểm tra đã thực hiện để xác minh hệ thống để kiểm tra mức cao và cố gắng tìm ra lỗi trình chặn trước khi thay đổi hoặc mã đi vào hoạt động.

Kiểm tra hồi quy: Người kiểm tra đã thực hiện hồi quy để xác minh chức năng hiện có do những thay đổi được triển khai trong hệ thống để cải tiến mới hoặc thay đổi trong hệ thống.


Chúng ta không phải tạo thử nghiệm trước khi thực hiện phát triển thực tế?
Vin Shahrdar

@VinShahrdar, Bạn đang nói về thử nghiệm Đơn vị?
Krunal

Đúng. Tôi thường tạo các bài kiểm tra đơn vị của mình trước khi viết mã sản xuất. Đó là cách bạn phải làm điều đó, đúng không?
Vin Shahrdar

1
Vâng .. Nhưng kiểm thử đơn vị cũng thực hiện trước khi QA phải đối mặt với nhà phát triển. Trước khi triển khai mã trên máy chủ QA, dev luôn thực hiện kiểm tra đơn vị
Krunal

2

Kiểm tra đơn vị

Kiểm thử đơn vị thường được thực hiện bởi phía nhà phát triển, trong khi người kiểm thử được phát triển một phần trong loại thử nghiệm này trong đó thử nghiệm được thực hiện theo từng đơn vị. Trong các trường hợp kiểm thử JUnit của Java cũng có thể kiểm tra xem mã viết có được thiết kế hoàn hảo hay không.

Thử nghiệm hội nhập:

Loại thử nghiệm này có thể sau khi thử nghiệm đơn vị khi tất cả / một số thành phần được tích hợp. Loại thử nghiệm này sẽ đảm bảo rằng khi các thành phần được tích hợp, chúng có ảnh hưởng đến khả năng hoặc chức năng làm việc của nhau không?

Kiểm tra khói

Loại thử nghiệm này được thực hiện sau cùng khi hệ thống được tích hợp thành công và sẵn sàng để đi vào máy chủ sản xuất.

Loại thử nghiệm này sẽ đảm bảo rằng mọi chức năng quan trọng từ đầu đến cuối đều hoạt động tốt và hệ thống đã sẵn sàng để triển khai trên máy chủ sản xuất.

Kiểm tra hồi quy

Loại thử nghiệm này rất quan trọng để kiểm tra rằng các lỗi không mong muốn / không mong muốn không có trong hệ thống khi nhà phát triển sửa một số vấn đề. Thử nghiệm này cũng đảm bảo rằng tất cả các lỗi được giải quyết thành công và do đó không có vấn đề nào khác xảy ra.


Điều đó trả lời tiêu đề, nhưng không phải là công cụ về hai loại thử nghiệm cuối cùng, để thử nghiệm khói hoặc thử nghiệm hồi quy. Nó cũng lặp lại các câu trả lời trước - nó có thể trở nên độc đáo bằng cách trả lời câu hỏi về các công cụ.
Peter Mortensen

2

Kiểm tra khói và vệ sinh đều được thực hiện sau khi xây dựng phần mềm để xác định xem có nên bắt đầu kiểm tra hay không. Sanity có thể hoặc không thể được thực hiện sau khi thử khói. Chúng có thể được thực hiện riêng rẽ hoặc cùng một lúc - sự tỉnh táo ngay sau khi hút thuốc.

Bởi vì kiểm tra độ tỉnh sâu hơn và mất nhiều thời gian hơn, trong hầu hết các trường hợp, nó rất đáng để tự động hóa.

Kiểm tra khói thường mất không quá 5-30 phút để thực hiện. Nói chung hơn: nó kiểm tra một số lượng nhỏ các chức năng cốt lõi của toàn hệ thống, để xác minh rằng tính ổn định của phần mềm đủ tốt để thử nghiệm thêm và không có vấn đề gì, ngăn chặn việc chạy các trường hợp thử nghiệm theo kế hoạch.

Thử nghiệm độ tinh khiết chi tiết hơn khói và có thể mất từ ​​15 phút cho đến cả ngày, tùy thuộc vào quy mô của công trình mới. Nó là một loại thử nghiệm chấp nhận chuyên biệt hơn, được thực hiện sau khi tiến hành hoặc thử nghiệm lại. Nó kiểm tra các tính năng cốt lõi của một số chức năng mới và / hoặc sửa lỗi cùng với một số tính năng liên quan chặt chẽ với chúng, để xác minh rằng chúng đang hoạt động theo logic hoạt động cần thiết, trước khi kiểm tra hồi quy có thể được thực hiện ở quy mô lớn hơn.


Điều này xây dựng phần nào, nhưng không phải về các công cụ cho hai loại thử nghiệm cuối cùng, để thử nghiệm khói hoặc thử nghiệm hồi quy . Nó có thể được làm cho độc đáo bằng cách trả lời câu hỏi về các công cụ.
Peter Mortensen

1

Đã có một số câu trả lời hay, nhưng tôi muốn tinh chỉnh thêm:

Kiểm thử đơn vị là hình thức kiểm tra hộp trắng duy nhất ở đây. Những người khác đang thử nghiệm hộp đen. Kiểm tra hộp trắng có nghĩa là bạn biết đầu vào; bạn biết hoạt động bên trong của cơ chế và có thể kiểm tra nó và bạn biết đầu ra. Với kiểm thử hộp đen, bạn chỉ biết đầu vào là gì và đầu ra phải là gì.

Vì vậy, rõ ràng thử nghiệm đơn vị là thử nghiệm hộp trắng duy nhất ở đây.

  • Đơn vị thử nghiệm kiểm tra các đoạn mã cụ thể. Thường là phương pháp.
  • Kiểm tra tích hợp kiểm tra xem phần tính năng mới của phần mềm của bạn có thể tích hợp với mọi thứ khác không.
  • Kiểm tra hồi quy. Đây là thử nghiệm được thực hiện để đảm bảo bạn không làm hỏng bất cứ thứ gì. Tất cả mọi thứ đã từng làm việc vẫn nên làm việc.
  • Kiểm tra khói được thực hiện như một thử nghiệm nhanh để đảm bảo mọi thứ đều ổn trước khi bạn tham gia vào thử nghiệm mạnh mẽ hơn.

5
Kiểm thử đơn vị không nhất thiết phải là hộp trắng. Một số thử nghiệm đơn vị tốt nhất tôi từng thấy về cơ bản là các ví dụ được rút ra từ các yêu cầu, chỉ định các kết quả dự kiến ​​độc lập với bất kỳ khái niệm triển khai nào.
joel.neely

1
thêm vào đó, các bài kiểm tra đơn vị của bạn được bao gồm trong các bài kiểm tra hồi quy của bạn, do đó kiểm tra hồi quy không phải là kiểm tra hộp trắng hay đen. Tôi đã đi xa để nói rằng ngay cả các thử nghiệm tích hợp và khói có thể là thử nghiệm hộp trắng hoặc hộp đen.
Lieven Keersmaekers

1
Tôi sẽ không đồng ý với điều này. Kiểm thử triển khai mẫu thiết kế là một hình thức kiểm thử tích hợp và là kiểm thử hộp trắng.
Hazok

Điều đó trả lời tiêu đề, nhưng không phải là công cụ về hai loại thử nghiệm cuối cùng, để thử nghiệm khói hoặc thử nghiệm hồi quy . Nó cũng lặp lại các câu trả lời trước - nó có thể trở nên độc đáo bằng cách trả lời câu hỏi về các công cụ.
Peter Mortensen

1

Kiểm tra khói đã được giải thích ở đây đã và đơn giản. Kiểm tra hồi quy đến dưới kiểm tra tích hợp.

Kiểm tra tự động có thể được chia thành chỉ hai.

Kiểm tra đơn vị và kiểm tra tích hợp (đây là tất cả những gì quan trọng)

Tôi sẽ gọi sử dụng cụm từ "kiểm tra dài" (LT) cho tất cả các bài kiểm tra như kiểm tra tích hợp, kiểm tra chức năng, kiểm tra hồi quy, kiểm tra giao diện người dùng, v.v. Và kiểm tra đơn vị là "kiểm tra ngắn".

Một ví dụ LT có thể là, tự động tải một trang web, đăng nhập vào tài khoản và mua một cuốn sách. Nếu thử nghiệm vượt qua, nhiều khả năng nó sẽ chạy trên trang web trực tiếp theo cùng một cách (do đó tham chiếu 'giấc ngủ tốt hơn'). Long = khoảng cách giữa trang web (bắt đầu) và cơ sở dữ liệu (kết thúc).

Và đây là một bài viết tuyệt vời thảo luận về lợi ích của thử nghiệm tích hợp (thử nghiệm dài) so với thử nghiệm đơn vị .


1

Kiểm tra hồi quy - Là một loại kiểm thử phần mềm nơi chúng tôi cố gắng bao quát hoặc kiểm tra xung quanh sửa lỗi . Các chức năng xung quanh sửa lỗi không được thay đổi hoặc thay đổi do sửa chữa được cung cấp. Các vấn đề được tìm thấy trong quá trình đó được gọi là các vấn đề hồi quy .

Kiểm tra khói: Là một loại thử nghiệm được thực hiện để quyết định có chấp nhận bản dựng / phần mềm để thử nghiệm QA tiếp theo hay không.

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.