Entegrasyon testi ile fonksiyonel test arasındaki fark nedir? [kapalı]


132

Fonksiyonel test ve entegrasyon testleri aynı mı?

Testinize birim testi ile başlarsınız, ardından ünite testini tamamladıktan sonra sistemi bir bütün olarak test ettiğiniz entegrasyon testine gidersiniz. Fonksiyonel test, entegrasyon testiyle aynı mıdır? Hala sistemi bir bütün olarak alıyor ve işlevsellik uygunluğu açısından test ediyorsunuz.


1
[The Agile Way: Integration Testing - Functional Testing veya her ikisinin olası kopyası? ] ( stackoverflow.com/questions/555899/… )
Pascal Thivent

14
Geçmişte yaptığınız sorulardan bazı cevapları kabul etmenizi önerebilir miyim?
Stefano Borini

Cevabımı burada görün: stackoverflow.com/questions/2741832/…
Andrejs

6
Bu sorunun bu sitede neyin yanlış olduğunu temsil ettiğini söylemeliyim. Bu sorunun nesi yanlış? Nasıl çok geniş? Programlamayla ilgili ÇOK spesifik bir şey soruyor. Bir şey arasındaki fark nedir, matematiksel olarak bile temsil edilebilir Görünüşe göre, anlaşılmaz nedenlerle kapatılan çok sayıda gerçekten önemli, gerçekten alakalı sorular var. Ciddi olduğunuzu biliyorum SO insanlar bana yanıldığımı söyleyecekler, ancak bu soruların Quara.com gibi sitelere bölünmesi haklı olduğumu kanıtlıyor. [Temelde SO, pazar payından vazgeçmektir].
Jim Maguire

1
@JimMaguire'a katılıyorum: sorulan soru bir "evet / hayır" sorusudur (artı neden evet veya hayır'ın açıklaması). Neden odaklanmadığını anlamıyorum.
bob

Yanıtlar:


101

Entegrasyon testi, birden fazla bileşeni ve bunların birlikte nasıl çalıştığını test ettiğiniz zamandır. Örneğin, başka bir sistemin sizin sisteminizle nasıl etkileşime girdiği veya veri tabanının veri soyutlama katmanınızla nasıl etkileşim kurduğu. Genellikle bu, en saf haliyle gerektirmese de, tam olarak kurulmuş bir sistem gerektirir.

Fonksiyonel test, sistemi ürünün fonksiyonel gereksinimlerine göre test ettiğiniz zamandır. Ürün / Proje yönetimi genellikle bunları yazar ve QA, bir kullanıcının ne görmesi ve deneyimlemesi gerektiği ve bu süreçlerin nihai sonucunun ne olması gerektiği sürecini resmileştirir. Ürüne bağlı olarak bu otomatik olabilir veya olmayabilir.


9
Teşekkürler ... evet ama fonksiyonel testlerde de sistemi fonksiyonel gereksinime karşı test ettiğimizde, o zaman onu entegre bir sistem olarak alıyoruz .. Ve fonksiyonel tetsing yaparken, farklı birimlerin nasıl çalıştığını da öğreneceğiz. Entegrasyon testi olarak düşünülmesi için birlikte ...
Mishthi

3
Özellikle ortamımızda, birim testini her zaman tek bir sınıfa karşı yazılmış nunit testi, entegrasyon testleri nunit testleri veya sınıftan daha fazlasını gerektiren sql betik testleri veya bir veritabanı veya başka bir sistem (genellikle tam kurulum gerektiren) olduğunu düşündük. ve fonksiyonel testler, KG'nin çalıştırdığı test veya otomatik UI testidir.
aceinthehole

1
Ayrıca, fonksiyonel testten önce entegrasyon testi yapmadıysanız, ikisini de aynı anda yapıyorsunuz ve fonksiyonel gereksinimleri test ederken sadece entegrasyon parçalarında hatalar bulacağınızı söyleyebilirim.
aceinthehole

1
bu nasıl kabul edilen cevap değil !?
tftd

@tftd, çünkü bu sorgunun sahibi 2010'dan beri aktif değil ...
t3chb0t

20

Fonksiyonel Test :

Evet, ürün veya yazılımı bir bütün olarak işlevsel olarak düzgün çalışıp çalışmadığını test ediyoruz (düğmeleri, bağlantıları vb.)

Örneğin: Giriş sayfası.

kullanıcı adı ve şifreyi verirseniz, sizi ana sayfaya götürüp götürmediğini test edersiniz.

Entegrasyon Testi :

Evet, yalnızca entegre yazılımı test edersiniz, ancak veri akışının nerede gerçekleştiğini ve veritabanında herhangi bir değişiklik olup olmadığını test edersiniz.

Örneğin: E-posta gönderme

Birine bir mail gönderiyorsunuz, bir veri akışı var ve ayrıca veritabanında değişiklik var (gönderilen tablo değeri 1 artırır)


Unutmayın - bağlantıları ve resimleri tıklamak entegrasyon testi değildir. Umarım nedenini anladınız, çünkü sadece bir bağlantıya tıklayarak veritabanında bir değişiklik olmaz.

Umarım bu size yardımcı olmuştur.


3
Veritabanı, program durumunun uygulama ayrıntısıdır. Bağlantıya tıklamak da program durumunu değiştirebilir.
alehro

@ jsborn17, API'yi çalıştıramasak da bir API ile iletişim kuran bir ön uç uygulaması için entegrasyon testi uygulanabilir mi?
Wancieho

8

Bu önemli bir ayrım, ancak ne yazık ki asla bir anlaşma bulamayacaksınız. Sorun, çoğu geliştiricinin bunları kendi bakış açılarından tanımlamasıdır. Pluto tartışmasına çok benziyor. (Güneş'e daha yakın olsaydı, bir gezegen olur muydu?)

Birim testinin tanımlanması kolaydır. CUT'u ( Test Altındaki Kod ) ve başka hiçbir şeyi test etmez. (Olabildiğince az şey.) Bu, alaylar, sahteler ve demirbaşlar demektir.

Yelpazenin diğer ucunda birçok insanın sistem entegrasyon testi dediği şey var . Bu, mümkün olduğu kadar test ediyor, ancak yine de kendi CUT'nizde hata arıyor.

Peki ya aralarındaki geniş alan?

  • Örneğin, CUT'tan biraz daha fazlasını test ederseniz ne olur? Enjekte ettiğiniz bir fikstürü kullanmak yerine bir Fibonacci işlevi eklerseniz ne olur? Ben buna işlevsel test derdim ama dünya benimle aynı fikirde değil.
  • Ya eklerseniz time()veya rand()? Ya da ararsan ne olur http://google.com? Ben buna sistem testi derdim ama yine yalnızım.

Bu neden önemli? Çünkü sistem testleri güvenilmezdir. Bunlar gereklidir, ancak bazen sizin kontrolünüz dışındaki nedenlerden dolayı başarısız olurlar. Öte yandan, fonksiyonel testler her zaman başarılı olmalı, rastgele başarısız olmamalıdır; hızlılarsa, dahili uygulamanız için çok fazla test yazmadan Test-Driven Development'ı kullanmak için en başından itibaren kullanılabilirler. Başka bir deyişle, birim testlerinin değerinden daha fazla sorun olabileceğini düşünüyorum ve iyi bir arkadaşlığım var .

Tüm sıfırları birim testinde olmak üzere 3 eksende testler koydum :

  1. İşlevsel test: gerçek kodu çağrı yığınınızın derinliklerinde ve derinliklerinde kullanmak.
  2. Entegrasyon testi: çağrı yığınınızı yukarı ve yukarı ; başka bir deyişle, CUT'nizi kullanacak kodu çalıştırarak test edin.
  3. Sistem testi: gittikçe daha fazla tekrarlanamayan işlem (O / S zamanlayıcı, saat, ağ vb. )

Bir test kolayca farklı derecelerde 3 olabilir.


fonksiyonel testler her zaman geçer mi? yoksa fonksiyonel testlerin her zaman geçmesi gerektiğini mi söylüyorsunuz ?
aceinthehole

1
Rastgele başarısız olmamaları gerekir. Başarısız olduklarında, her seferinde başarısız olmaları gerekir. Örneğin, diğer ev sahiplerine yapılan aramaları içermemelidir. Belki de Davranış Testleri olarak adlandırılmaları gerekir ? En iyi terimi bilmiyorum. Sadece bunların en önemli testler olduğunu biliyorum ve genellikle saf, tamamen alay edilen birim testleri ile üst düzey sistem entegrasyon testleri arasındaki geniş boşlukta gözden kaçıyorlar .
cdunn2001

"Rastgele başarısız olmamalılar." - Buradaki terim "deterministik" olabilir
kleaver

7

Fonksiyonel Test: Modülün her bir bileşeninin test edildiği bir test sürecidir. Örneğin: Bir web sayfasında metin alanı, radyo bottonu, Düğmeler ve Açılır menü vb. Bileşenlerin kontrol edilmesi gerekir.

Entegrasyon Testi: 2 modül arasındaki veri akışının kontrol edildiği süreç.


4

Her ikisinin de birbirine sıkı sıkıya bağlı olduğunu ve aralarında ayrım yapmanın çok zor olduğunu söyleyebilirim. Benim görüşüme göre, Entegrasyon testi, fonksiyonel testin bir alt kümesidir.

İşlevsellik testi, aldığınız ilk gereksinimlere dayanır. Gereksinimlerle birlikte uygulama davranışının beklendiği gibi olduğunu test edeceksiniz.

Entegrasyon testi söz konusu olduğunda, modüller arasındaki etkileşimdir. Bir modül bir giriş gönderirse, B modülü bunu işleyebilir veya işlemeyebilir.


"Entegrasyon testi, fonksiyonel testin bir alt kümesidir" için +1 - deneyimlerime göre, testlere bu tür bir yaklaşımın, hızlı bir sonuç elde etmeyi hedefliyorsanız en anlamlı olduğunu gösteriyor. Örneğin, test kodumda sistemi genellikle tek bir entegre birim olarak ele alıyorum - bellek içi veri tabanı kuruyorum ve ardından uygulama MVC denetleyicilerimi bazı test verileriyle besliyorum ve yanıtlarını doğrularım ve ayrıca veri tabanındaki verileri doğrularım MVC denetleyicisi doğru yanıtı döndürdüğünde hatalardan kaçınmak için tüm veri doğrulamasının beklendiği gibi çalıştığından emin olun, ancak gerçekte veritabanı katmanına doğru bir şekilde geçirilmez.
JustAMartin

4

Entegrasyon testi - Entegrasyon testi, farklı modüllerin test edilmesinden başka bir şey değildir. Modüller arasındaki ilişkiyi test etmelisiniz. Örneğin, facebook'u açtığınızda, oturum açma kimliği ve şifresini girdikten sonra oturum açma sayfasını görürsünüz, facebook'un ana sayfasını görebilirsiniz, dolayısıyla oturum açma sayfası bir modül ve ana sayfa başka bir modüldür. yalnızca aralarındaki ilişkiyi kontrol etmeniz gerekir, oturum açtığınızda yalnızca ana sayfanın açık olması gerektiği mesaj kutusu veya başka bir şey olmamalıdır. Entegrasyon testi YUKARI-AŞAĞI yaklaşımı ve BOTTOM UP yaklaşımı olmak üzere 2 ana tip vardır.

Fonksiyonel Test - Fonksiyonel testte sadece girdi ve çıktı hakkında düşünmeniz gerekir. Bu durumda gerçek bir kullanıcı gibi düşünmelisiniz. Hangi girdiyi verdiğinizin ve hangi çıktıya sahip olduğunuzun test edilmesi İşlevsel testtir. sadece çıktıyı gözlemlemelisiniz. Fonksiyonel testlerde uygulama veya yazılımın kodlamasını test etmenize gerek yoktur.


2

Bir İşlevsel testte, test cihazı yalnızca İşlevselliğe ve uygulamanın alt işlevselliğine odaklanır. Uygulamanın işlevselliği düzgün çalışmalı ya da çalışmamalı.

Entegrasyon testinde test cihazı, modüller veya alt modüller arasındaki bağımlılığı kontrol etmelidir.Modül kayıtları için örnek, başka bir modülde doğru şekilde alınıp görüntülenmelidir.


2

Entegrasyon Testi: - Birim testi yapıldığında ve sorunlar ilgili bileşenlere çözüldüğünde, gerekli tüm bileşenlerin bir işlem gerçekleştirebilmesi için tek bir sistem altında entegre edilmesi gerekir. Sistemin bileşenlerini birleştirdikten sonra, sistemin düzgün çalışıp çalışmadığını test etmek için bu tür testlere Entegrasyon Testi denir.

Fonksiyonel Test: - Test, 1. Fonksiyonel Test 2. Fonksiyonel Olmayan Test ** Fonksiyonel Test olarak iki kategoriye ayrılır: - Yazılımın kullanıcının gereksinimlerine göre çalışıp çalışmadığını test etmek. ** İşlevsel Olmayan Test: - Yazılımın Stres Testi, Güvenlik testi vb. Kalite kriterlerini karşılayıp karşılamadığını test etmek için.

Genellikle, Müşteri yalnızca İşlevsel Test ve İşlevsel Olmayan test için gereksinimleri sağlayacaktır. Gereksinimlerden bahsedilmemeli, ancak uygulama mutlaka bu etkinliği gerçekleştirmelidir.


2

Entegrasyon testi

  • Sistemin farklı modüllerinin birlikte nasıl çalıştığı görülebilir.
  • Çoğunlukla, sistemin farklı bileşenlerinden ziyade farklı modüllerin entegre işlevselliğine atıfta bulunuyoruz.
  • Herhangi bir sistem veya yazılım ürününün verimli çalışması için her bileşenin birbiriyle senkronize olması gerekir.
  • Entegrasyon testi için kullandığımız çoğu zaman aracı, birim testi için kullandığımız seçilecektir.
  • Karmaşık durumlarda, birim testinin sistemi test etmek için yetersiz olduğu durumlarda kullanılır.

    Fonksiyonel test

  • Modüllerin bireysel işlevselliğini test etmek olarak tanımlanabilir.
  • İşlevselliğini kontrol etmek için yazılım ürününü bireysel düzeyde test etmeyi ifade eder.
  • Yazılımın beklenen ve beklenmeyen sonuçları kontrol etmek için test senaryoları geliştirilir.
  • Bu tür testler daha çok kullanıcı bakış açısıyla gerçekleştirilir. Yani kullanıcının bir tür girdi beklentisini dikkate alır.
  • Kara kutu testi ve kapalı kutu testi olarak da adlandırılır


  • 1

    Uygulamanın işlevselliğinin kontrol edilmesi genellikle fonksiyonel test olarak bilinir; burada entegrasyon testi, bir modülden diğerine veri akışını kontrol etmektir. Para transferi uygulaması örneğini ele alalım, varsayalım ki tüm kimlik bilgilerini girdiğimiz bir sayfamız var ve eğer transfer düğmesine basarsak ve bundan sonra herhangi bir başarı elde edersek, O zaman bu işlevsel testtir. Ancak aynı örnekte, miktar transferini doğrularsak bu entegrasyon testidir.


    0

    Yazarlar bu konuda çok farklıdır. Bunun "doğru" yorumu olduğuna inanmıyorum. Gerçekten bağlıdır.

    Örneğin: çoğu Rails geliştiricisi, birim testlerini model testleri, işlevsel testleri kontrolör testleri ve entegrasyon testlerini, uygulamayı son bir kullanıcının bakış açısından incelemek için Capybara gibi bir şey kullanan, yani sayfanın oluşturulan HTML'sinde DOM'u kullanarak gezinme olarak kabul eder. beklentileri kontrol etmek için.

    Ayrıca, sistemin "canlı" bir dokümantasyonu olan (genellikle bunları doğal dilde yazmayı mümkün kılmak için Gherkin kullanırlar), uygulamanın tüm özelliklerini birden çok senaryo aracılığıyla açıklayan ve daha sonra otomatikleştirilen kabul testleri de vardır. bir geliştirici tarafından. Bunlar, IMHO, hem fonksiyonel testler hem de entegrasyon testleri olarak düşünülebilir.

    Bunların her birinin arkasındaki temel kavramı anladığınızda, doğru veya yanlış konusunda daha esnek olursunuz. Dolayısıyla, yine IMHO, fonksiyonel bir test de bir entegrasyon testi olarak kabul edilebilir. Entegrasyon testi için, uyguladığı entegrasyon türüne bağlı olarak, fonksiyonel bir test olarak değerlendirilmeyebilir - ancak bir entegrasyon testi yazarken genellikle aklınızda bazı gereksinimler vardır, bu nedenle çoğu zaman fonksiyonel bir test.

    Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
    Licensed under cc by-sa 3.0 with attribution required.