Sự khác biệt giữa kiểm thử tích hợp và kiểm tra chức năng là gì? [đóng cửa]


132

Là kiểm tra chức năng và kiểm tra tích hợp giống nhau?

Bạn bắt đầu thử nghiệm thông qua thử nghiệm đơn vị, sau đó sau khi hoàn thành thử nghiệm đơn vị, bạn đi thử nghiệm tích hợp nơi bạn kiểm tra toàn bộ hệ thống. Là thử nghiệm chức năng giống như thử nghiệm tích hợp? Bạn vẫn lấy toàn bộ hệ thống và kiểm tra sự phù hợp về chức năng.


1
có thể trùng lặp [Cách Agile: Kiểm thử tích hợp so với Kiểm tra chức năng hoặc cả hai? ] ( stackoverflow.com/questions/555899/
Pascal Thivent

14
Tôi có thể đề nghị bạn chấp nhận một số câu trả lời từ các câu hỏi trong quá khứ bạn đã thực hiện?
Stefano Borini

Xem câu trả lời của tôi ở đây: stackoverflow.com/questions/2741832/
Kẻ

6
Tôi phải nói câu hỏi này đại diện cho những gì sai với trang web này. Có gì sai với câu hỏi này? Làm thế nào là nó quá rộng? Đó là hỏi một cái gì đó RẤT cụ thể, liên quan đến lập trình. Sự khác biệt giữa một cái gì đó thậm chí có thể được biểu diễn bằng toán học Có vẻ như có một số lượng lớn các câu hỏi thực sự quan trọng, thực sự có liên quan mà ge đóng cửa vì lý do không thể giải thích được. Tôi biết bạn rất nghiêm túc, mọi người sẽ nói với tôi rằng tôi sai, nhưng thực tế những điều này đang bị phá vỡ đối với các trang web như Quara.com chứng minh rằng tôi đúng. [Về cơ bản SO đang thoái lui thị phần].
Jim Maguire

1
Tôi đồng ý với @JimMaguire: câu hỏi khi được hỏi là câu hỏi "có / không" (cộng với giải thích tại sao có hay không). Tôi không thấy lý do tại sao nó được coi là không tập trung.
bob

Câu trả lời:


101

Kiểm thử tích hợp là khi bạn kiểm tra nhiều hơn một thành phần và cách chúng hoạt động cùng nhau. Ví dụ, làm thế nào một hệ thống khác tương tác với hệ thống của bạn hoặc cơ sở dữ liệu tương tác với lớp trừu tượng dữ liệu của bạn. Thông thường, điều này đòi hỏi một hệ thống được cài đặt đầy đủ, mặc dù ở dạng tinh khiết nhất thì không.

Kiểm tra chức năng là khi bạn kiểm tra hệ thống theo các yêu cầu chức năng của sản phẩm. Quản lý sản phẩm / dự án thường viết những điều này lên và QA chính thức hóa quá trình những gì người dùng sẽ thấy và trải nghiệm, và kết quả cuối cùng của những quy trình đó sẽ là gì. Tùy thuộc vào sản phẩm này có thể được tự động hay không.


9
Thanx ... có nhưng trong kiểm tra chức năng cũng có khi chúng tôi đang kiểm tra hệ thống theo yêu cầu chức năng mà thời gian đó chúng tôi cũng coi đó là một hệ thống tích hợp .. Và trong khi thực hiện chức năng chỉnh sửa, chúng tôi cũng sẽ tìm ra cách các đơn vị khác nhau hoạt động cùng nhau để có thể trở thành thử nghiệm tích hợp ...
Mishthi

3
Đặc biệt trong môi trường của chúng tôi, chúng tôi luôn coi thử nghiệm đơn vị là thử nghiệm nunit được viết đối với một lớp duy nhất, thử nghiệm tích hợp là thử nghiệm nunit hoặc thử nghiệm kịch bản lệnh sql yêu cầu nhiều hơn lớp hoặc cơ sở dữ liệu hoặc hệ thống khác (thường yêu cầu cài đặt đầy đủ) và kiểm tra chức năng là kiểm tra mà QA chạy hoặc kiểm tra giao diện người dùng tự động.
aceinthehole

1
Ngoài ra, tôi muốn nói rằng nếu bạn chưa thực hiện kiểm thử tích hợp trước khi kiểm tra chức năng thì bạn sẽ thực hiện cả hai cùng một lúc và bạn sẽ tìm thấy lỗi trong các phần tích hợp trong khi bạn đang kiểm tra các yêu cầu chức năng.
aceinthehole

1
Làm thế nào đây không phải là câu trả lời được chấp nhận!?
tftd

@tftd vì trình tự động của quesiton này đã không hoạt động kể từ năm 2010 ...
t3chb0t

20

Kiểm tra chức năng :

Có, chúng tôi đang kiểm tra toàn bộ sản phẩm hoặc phần mềm về chức năng xem nó có hoạt động đúng chức năng hay không (nút kiểm tra, liên kết, v.v.)

Ví dụ: Trang đăng nhập.

bạn cung cấp tên người dùng và mật khẩu, bạn kiểm tra xem nó có đưa bạn đến trang chủ hay không.

Kiểm thử tích hợp :

Có, bạn chỉ kiểm tra phần mềm tích hợp nhưng bạn kiểm tra luồng dữ liệu đang diễn ra ở đâu và có bất kỳ thay đổi nào xảy ra trong cơ sở dữ liệu không.

Ví dụ: Gửi e-mail

Bạn gửi một thư cho ai đó, có luồng dữ liệu và cũng thay đổi cơ sở dữ liệu (bảng đã gửi tăng giá trị lên 1)


Ghi nhớ - nhấp vào liên kết và hình ảnh không phải là thử nghiệm tích hợp. Hy vọng bạn hiểu lý do tại sao, bởi vì không có thay đổi trong cơ sở dữ liệu bằng cách chỉ cần nhấp vào một liên kết.

Hy vọng điều này đã giúp bạn.


3
Cơ sở dữ liệu là chi tiết thực hiện của trạng thái chương trình. Nhấp vào liên kết cũng có thể thay đổi trạng thái chương trình.
alehro 17/03/2017

@ jsborn17 là thử nghiệm tích hợp áp dụng cho ứng dụng giao diện người dùng giao tiếp với API ngay cả khi chúng tôi không thể chạy API?
Wancieho

8

Đây là một sự khác biệt quan trọng, nhưng thật không may, bạn sẽ không bao giờ tìm thấy thỏa thuận. Vấn đề là hầu hết các nhà phát triển định nghĩa những điều này theo quan điểm riêng của họ. Nó rất giống với cuộc tranh luận về Sao Diêm Vương. (Nếu nó ở gần Mặt trời hơn, nó có phải là một hành tinh không?)

Kiểm tra đơn vị là dễ dàng để xác định. Nó kiểm tra CUT ( Code Under Test ) và không có gì khác. (Chà, càng ít càng tốt.) Điều đó có nghĩa là giả, giả, và đồ đạc.

Ở đầu kia của quang phổ, có nhiều người gọi là thử nghiệm tích hợp hệ thống . Đó là thử nghiệm càng nhiều càng tốt, nhưng vẫn tìm kiếm lỗi trong CUT của riêng bạn.

Nhưng những gì về sự rộng lớn giữa?

  • Ví dụ, nếu bạn kiểm tra nhiều hơn một chút so với CUT thì sao? Điều gì sẽ xảy ra nếu bạn bao gồm một hàm Fibonacci, thay vì sử dụng một vật cố mà bạn đã tiêm? Tôi sẽ gọi đó là thử nghiệm chức năng , nhưng thế giới không đồng ý với tôi.
  • Điều gì nếu bạn bao gồm time()hoặc rand()? Hoặc nếu bạn gọi http://google.com? Tôi sẽ gọi thử nghiệm hệ thống đó , nhưng một lần nữa, tôi chỉ có một mình.

Vì sao vấn đề này? Bởi vì các bài kiểm tra hệ thống là không đáng tin cậy. Chúng là cần thiết, nhưng đôi khi chúng sẽ thất bại vì những lý do ngoài tầm kiểm soát của bạn. Mặt khác, các bài kiểm tra chức năng phải luôn vượt qua, không được thất bại ngẫu nhiên; nếu chúng nhanh, chúng có thể được sử dụng ngay từ đầu để sử dụng Phát triển dựa trên thử nghiệm mà không cần viết quá nhiều thử nghiệm cho việc triển khai nội bộ của bạn. Nói cách khác, tôi nghĩ rằng các bài kiểm tra đơn vị có thể rắc rối hơn giá trị của chúng, và tôi có một công ty tốt .

Tôi đặt các bài kiểm tra trên 3 trục, với tất cả các số 0 của chúng khi kiểm tra đơn vị :

  1. Kiểm tra chức năng: sử dụng mã thực sâu hơn và sâu hơn vào ngăn xếp cuộc gọi của bạn.
  2. Tích hợp thử nghiệm: ngày càng cao lên gọi stack của bạn; nói cách khác, kiểm tra CUT của bạn bằng cách chạy mã sẽ sử dụng nó.
  3. Kiểm tra hệ thống: ngày càng có nhiều hoạt động không thể lặp lại (bộ lập lịch O / S, đồng hồ, mạng, v.v. )

Một bài kiểm tra có thể dễ dàng là cả 3, ở các mức độ khác nhau.


kiểm tra chức năng luôn vượt qua? hoặc bạn có nghĩa là kiểm tra chức năng phải luôn luôn vượt qua?
aceinthehole

1
Họ không nên thất bại ngẫu nhiên. Khi họ thất bại, họ nên thất bại mọi lúc. Ví dụ, họ không nên bao gồm các cuộc gọi đến các máy chủ khác. Có lẽ họ nên được gọi là Kiểm tra hành vi ? Tôi không biết thuật ngữ tốt nhất. Tôi chỉ biết rằng chúng là các thử nghiệm quan trọng nhất và chúng thường bị bỏ qua trong khoảng cách rộng giữa các thử nghiệm đơn vị thuần túy, hoàn toàn bị chế giễu và thử nghiệm tích hợp hệ thống cấp cao .
cdunn2001

"Họ không nên thất bại ngẫu nhiên." - Thuật ngữ có thể là họ "xác định"
kleaver

7

Kiểm tra chức năng: Đây là một quá trình kiểm tra trong đó từng và mọi thành phần của mô-đun được kiểm tra. Ví dụ: Nếu một trang web chứa trường văn bản, các thành phần radio, Nút và thả xuống, v.v ... cần phải kiểm tra.

Kiểm thử tích hợp: Quá trình kiểm tra dữ liệu giữa 2 mô-đun.


4

Tôi sẽ nói rằng cả hai được liên kết chặt chẽ với nhau và rất khó khăn để phân biệt giữa chúng. Theo quan điểm của tôi, Kiểm thử tích hợp là một tập hợp con của kiểm thử chức năng.

Kiểm tra chức năng dựa trên các yêu cầu ban đầu bạn nhận được. Bạn sẽ kiểm tra hành vi ứng dụng như mong đợi với các yêu cầu.

Khi nói đến thử nghiệm tích hợp, đó là sự tương tác giữa các mô-đun. Nếu mô-đun A gửi đầu vào, mô-đun B có thể xử lý nó hay không.


+1 cho "Kiểm thử tích hợp là tập hợp con của kiểm tra chức năng" - kinh nghiệm của tôi cũng cho thấy cách tiếp cận kiểm tra như vậy là có ý nghĩa nhất nếu bạn nhắm đến kết quả nhanh. Ví dụ, trong mã kiểm tra của tôi, tôi thường coi hệ thống là một đơn vị tích hợp duy nhất - Tôi thiết lập cơ sở dữ liệu trong bộ nhớ và sau đó cung cấp cho bộ điều khiển MVC ứng dụng của tôi một số dữ liệu kiểm tra và xác minh phản hồi của chúng, đồng thời xác minh dữ liệu trong cơ sở dữ liệu để hãy chắc chắn rằng tất cả xác thực dữ liệu đã hoạt động như mong đợi, để tránh các lỗi khi bộ điều khiển MVC trả về phản hồi chính xác, nhưng nó không thực sự được chuyển chính xác đến lớp cơ sở dữ liệu.
JustAMartin

4

Kiểm thử tích hợp - Kiểm thử tích hợp không gì khác ngoài việc kiểm tra các mô-đun khác nhau. Bạn phải kiểm tra mối quan hệ giữa các mô-đun. Đối với ex bạn mở facebook thì bạn thấy trang đăng nhập sau khi nhập id đăng nhập và mật khẩu, bạn có thể thấy trang chủ của facebook do đó trang đăng nhập là một mô-đun và trang chủ là một mô-đun khác. bạn phải kiểm tra chỉ mối quan hệ giữa chúng có nghĩa là khi bạn đăng nhập thì chỉ trang chủ phải được mở chứ không phải hộp thông báo hoặc bất cứ điều gì khác. Có 2 loại chính của thử nghiệm tích hợp Cách tiếp cận TOP-DOWN và phương pháp BOTTOM UP.

Kiểm tra chức năng - Trong kiểm tra chức năng, bạn chỉ phải nghĩ về đầu vào và đầu ra. Trong trường hợp này, bạn phải suy nghĩ như một người dùng thực tế. Kiểm tra những gì đầu vào bạn đã đưa ra và những gì đầu ra bạn nhận được là Kiểm tra chức năng. bạn phải chỉ quan sát đầu ra. Trong kiểm tra chức năng, bạn không cần kiểm tra mã hóa ứng dụng hoặc phần mềm.


2

Trong một thử nghiệm chức năng, người kiểm tra chỉ tập trung vào Chức năng và chức năng phụ của ứng dụng. Chức năng của ứng dụng có nên hoạt động đúng hay không.

Trong kiểm thử tích hợp, kiểm tra phải kiểm tra sự phụ thuộc giữa các mô-đun hoặc mô-đun phụ. Ví dụ cho các bản ghi mô-đun nên được tìm nạp và hiển thị chính xác trong mô-đun khác.


2

Kiểm thử tích hợp: - Khi kiểm tra đơn vị được thực hiện và các vấn đề được giải quyết cho các thành phần liên quan thì tất cả các thành phần cần thiết cần tích hợp trong một hệ thống để có thể thực hiện thao tác. Sau khi kết hợp các thành phần của hệ thống, Để kiểm tra xem hệ thống có hoạt động tốt hay không, loại thử nghiệm này được gọi là Thử nghiệm tích hợp.

Kiểm tra chức năng: - Kiểm tra chủ yếu được chia thành hai loại là Kiểm tra chức năng 2. Kiểm tra chức năng ** Kiểm tra chức năng: - Để kiểm tra xem phần mềm có hoạt động theo yêu cầu của người dùng hay không. ** Kiểm tra phi chức năng: - Để kiểm tra xem phần mềm có đáp ứng các tiêu chí chất lượng như Kiểm tra căng thẳng, Kiểm tra bảo mật hay không, v.v.

Thông thường, Khách hàng sẽ chỉ cung cấp các yêu cầu cho Kiểm tra chức năng và đối với kiểm tra Không chức năng, các yêu cầu không được đề cập nhưng ứng dụng nhất thiết phải thực hiện các hoạt động đó.


2

Thử nghiệm hội nhập

  • Nó có thể được xem như là cách các mô-đun khác nhau của hệ thống làm việc cùng nhau.
  • Chúng tôi chủ yếu đề cập đến chức năng tích hợp của các mô-đun khác nhau, thay vì các thành phần khác nhau của hệ thống.
  • Để bất kỳ hệ thống hoặc sản phẩm phần mềm nào hoạt động hiệu quả, mọi thành phần phải được đồng bộ hóa với nhau.
  • Hầu hết các công cụ thời gian chúng tôi sử dụng để kiểm tra tích hợp sẽ được chọn mà chúng tôi đã sử dụng để kiểm tra đơn vị.
  • Nó được sử dụng trong các tình huống phức tạp, khi kiểm thử đơn vị chứng tỏ là không đủ để kiểm tra hệ thống.

    Thử nghiệm chức năng

  • Nó có thể được định nghĩa là kiểm tra chức năng cá nhân của các mô-đun.
  • Nó đề cập đến việc thử nghiệm sản phẩm phần mềm ở cấp độ cá nhân, để kiểm tra chức năng của nó.
  • Các trường hợp thử nghiệm được phát triển để kiểm tra phần mềm cho kết quả mong đợi và bất ngờ.
  • Loại thử nghiệm này được thực hiện nhiều hơn từ góc độ người dùng. Điều đó có nghĩa là, nó xem xét sự mong đợi của người dùng đối với một loại đầu vào.
  • Nó cũng được gọi là thử nghiệm hộp đen cũng như thử nghiệm hộp gần


  • 1

    Kiểm tra chức năng của ứng dụng thường được gọi là kiểm tra chức năng, trong đó kiểm tra tích hợp là kiểm tra luồng dữ liệu từ mô-đun này sang mô-đun khác. Hãy lấy ví dụ về ứng dụng chuyển tiền. Giả sử chúng tôi có trang trong đó chúng tôi nhập tất cả thông tin đăng nhập và nếu chúng tôi nhấn nút chuyển và sau đó nếu chúng tôi nhận được bất kỳ thành công nào, thì đây là thử nghiệm chức năng. Nhưng trong ví dụ tương tự nếu chúng tôi xác minh chuyển tiền thì đó là kiểm tra tích hợp.


    0

    Các tác giả phân kỳ rất nhiều về điều này. Tôi không tin có "sự" giải thích chính xác cho điều này. Nó thực sự phụ thuộc.

    Chẳng hạn để kiểm tra kỳ vọng.

    Ngoài ra còn có các bài kiểm tra chấp nhận, lần lượt là một tài liệu "sống" của hệ thống (thông thường họ sử dụng Gherkin để có thể viết chúng bằng ngôn ngữ tự nhiên), mô tả tất cả các tính năng của ứng dụng thông qua nhiều kịch bản, lần lượt được tự động hóa bởi một nhà phát triển. Những người, IMHO, cũng có thể được coi là cả hai, kiểm tra chức năng và kiểm tra tích hợp.

    Một khi bạn hiểu khái niệm chính đằng sau mỗi khái niệm đó, bạn sẽ linh hoạt hơn về vấn đề đúng hay sai. Vì vậy, một lần nữa IMHO, một bài kiểm tra chức năng cũng có thể được coi là một bài kiểm tra tích hợp. Đối với thử nghiệm tích hợp, tùy thuộc vào loại tích hợp mà nó đang thực hiện, nó có thể không cân nhắc một thử nghiệm chức năng - nhưng bạn thường có một số yêu cầu khi bạn viết thử nghiệm tích hợp, vì vậy hầu hết thời gian cũng có thể được cân nhắc như một bài kiểm tra chức nă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.