Birim testleri ile fonksiyonel testler arasındaki fark nedir? Birim testi bir işlevi de test edebilir mi?
Birim testleri ile fonksiyonel testler arasındaki fark nedir? Birim testi bir işlevi de test edebilir mi?
Yanıtlar:
Birim Testi - bir sınıftaki yöntem (işlev) gibi tek bir birimin, tüm bağımlılıklar alay edilerek test edilmesi.
Fonksiyonel Test - AKA Entegrasyon Testi, bir sistemdeki bir dilim işlevselliği test eder. Bu, birçok yöntemi test eder ve Veritabanları veya Web Hizmetleri gibi bağımlılıklarla etkileşime girebilir.
Birim testleri, geliştiriciye kodun işleri doğru yaptığını söyler; fonksiyonel testler geliştiriciye kodun doğru şeyleri yaptığını söyler .
Daha fazla bilgiyi Fonksiyon Testine Karşı Birim Testinde okuyabilirsiniz.
Birim test ve fonksiyonel testin iyi açıklanmış gerçek yaşam benzeşimi aşağıdaki gibi açıklanabilir,
Çoğu zaman bir sistemin gelişimi bir evin inşasına benzetilir. Bu benzetme tam olarak doğru olmasa da, birim ve fonksiyonel testler arasındaki farkı anlamak amacıyla genişletebiliriz.
Ünite testi, bir evin şantiyesini ziyaret eden bir bina müfettişine benzer. Evin çeşitli iç sistemleri, temel, çerçeveleme, elektrik, sıhhi tesisat vb. Evin parçalarının doğru ve güvenli bir şekilde çalışmasını, yani bina kodunu karşılamasını sağlar (test eder).
Bu senaryodaki fonksiyonel testler, aynı şantiyeyi ziyaret eden ev sahibine benzer. İç sistemlerin uygun davranacağını, bina müfettişinin görevini yerine getirdiğini varsayar. Ev sahibi bu evde yaşamanın nasıl olacağına odaklanmıştır. Evin nasıl göründüğü ile ilgileniyor, çeşitli odalar rahat bir boyutta, evin ailenin ihtiyaçlarına uyuyor mu, sabah güneşini yakalamak için iyi bir noktada pencereler.
Ev sahibi evde fonksiyonel testler yapıyor. Kullanıcının perspektifi var.
Bina müfettişi evde birim testleri yapıyor. İnşaatçının perspektifi var.
Özet olarak,
Birim Testleri bir programcı perspektifinden yazılır . Bir sınıfın belirli bir yönteminin (veya birimin ) bir dizi belirli görevi yerine getirmesini sağlamak için yapılırlar .
Fonksiyonel Testler kullanıcının bakış açısından yazılır . Bunlar sistem sağlamak işleyen kullanıcılar için bekliyor gibi.
Birim testi bağımsız bir davranış birimini test eder . Davranış birimi nedir? Sistemin bağımsız olarak birim testine tabi tutulabilen en küçük parçasıdır. (Bu tanım gerçekten bir tanım değil, IOW aslında daire şeklinde hiç ama pratikte oldukça iyi iş gibi görünüyor, çünkü sıralama-sezgisel anlamak can.)
İşlevsel bir test, bağımsız bir işlev parçasını test eder.
Bir davranış birimi çok küçük: Ben bu aptal "yöntem başına bir birim test" mantrasından kesinlikle hoşlanmıyorum, boyut açısından bakıldığında doğru. Bir davranış birimi, bir yöntemin bir parçası ile belki de birkaç yöntem arasında bir şeydir. En fazla bir nesne, ancak birden fazla değil.
Bir işlevsellik parçası genellikle birçok yöntem içerir ve çeşitli nesneler arasında ve genellikle birden çok mimari katman boyunca keser.
Bir birim testi şöyle bir şey olurdu: Ben validate_country_code()
fonksiyonu çağırmak ve ülke kodunu geçmek zaman 'ZZ'
dönmelidir false
.
İşlevsel bir test: gönderim formunu ülke koduyla doldurduğumda ZZ
, ülke kodumu bir menüden seçmeme izin veren bir yardım sayfasına yönlendirilmeliyim.
Birim testleri geliştiriciler tarafından geliştiriciler için geliştiricinin bakış açısından yazılır.
İşlevsel testler kullanıcı tarafından karşılanabilir, bu durumda geliştiriciler tarafından kullanıcılar ile birlikte (veya belki de doğru araçlar ve hatta kullanıcılar tarafından bile doğru kullanıcılar ile) kullanıcılar için kullanıcının bakış açısından yazılırlar. Veya geliştirici ile karşı karşıya olabilirler (örneğin, kullanıcının umursamadığı bir iç işlevsellik parçasını tanımladıklarında), bu durumda geliştiriciler tarafından geliştiriciler için yazılır, ancak yine de kullanıcının bakış açısından.
İlk durumda, fonksiyonel testler aynı zamanda kabul testleri olarak ve fonksiyonel gereksinimlerin ya da işlevsel bir spesifikasyonun yürütülebilir bir kodlaması olarak kullanılabilir, ikinci durumda, entegrasyon testleri olarak da işlev görebilirler.
Birim testleri sık sık değişir, fonksiyonel testler büyük bir sürümde asla değişmemelidir.
TLDR:
Soruyu cevaplamak için: Birim Testi , İşlevsel Testin bir alt türüdür .
İki büyük grup vardır: Fonksiyonel ve Fonksiyonel Olmayan Test. Bulduğum en iyi (kapsamlı olmayan) örnek bu (kaynak: www.inflectra.com ):
(1) Birim Testi: Küçük kod snippet'lerinin testi (işlevler / yöntemler). (Beyaz kutu) fonksiyonel test olarak düşünülebilir.
İşlevler bir araya getirildiğinde, muhtemelen test edilebilecek bir Kullanıcı Arayüzü ile bir modül = bağımsız bir parça oluşturursunuz (Modül Testi). En az iki ayrı modülünüz olduğunda, bunları birbirine yapıştırırsınız ve sonra gelir:
(2) Entegrasyon Testi: İki veya daha fazla (alt) modül veya (alt) sistem parçasını bir araya getirip birlikte güzel oynadıklarını görün.
Daha sonra 3. modülü entegre edersiniz, ardından 4. ve 5. modları sizin veya ekibinizin uygun gördüğü sırayla birleştirirsiniz ve tüm yapboz parçaları bir araya getirildiğinde gelir
(3) Sistem Testi: SW'yi bir bütün olarak test etmek. Bu hemen hemen " Tüm parçaların entegrasyon testi " dir.
Bu uygunsa, o zaman gelir
(4) Kabul Testi: Müşterinin gerçekten istediğini oluşturduk mu? Tabii ki, Kabul Testi sadece müşterinin bir spor araba istediğini ve bir minibüs inşa ettiğinizi fark ettiğiniz son aşamada değil , yaşam döngüsü boyunca yapılmalıdır .
Functional Test
bir şekilde standart bir terim değildir ve farklı insanlar için farklı anlamları vardır.
"İşlevsel test", kodunuzda bir işlevi (yöntemi) test ettiğiniz anlamına gelmez. Bu, genel olarak, sistem işlevselliğini test ettiğiniz anlamına gelir - çalıştırdığımdafoo file.txt
komut satırında çalıştığımda file.txt
, belki de satırlar tersine çevrilir. Buna karşılık, tek bir ünite testi genellikle tek bir yöntemin tek bir vakasını kapsar - length("hello")
5 döndürmeli ve length("hi")
2 döndürmelidir.
Ayrıca bkz. IBM'in birim test ve işlevsel test arasındaki çizgiyi ele alması .
Temel ayrım, fonksiyonel testlerin uygulamayı dışarıdan kullanıcı açısından test etmesidir. Birim testleri uygulamayı içeriden, programcının bakış açısından test eder. İşlevsel testler, doğru işlevlere sahip bir uygulama oluşturmanıza yardımcı olmalı ve yanlışlıkla yanlışlıkla kırmamanızı garanti etmelidir. Birim testleri, temiz ve hatasız kod yazmanıza yardımcı olmalıdır.
Harry Percival'ın "Python TDD" kitabından alınmıştır
ISTQB'ye göre bu ikisi karşılaştırılamaz. Fonksiyonel test, entegrasyon testi değildir.
Birim testi, test düzeylerinden biridir ve fonksiyonel test, test türüdür.
Temelde:
Bir sistemin (veya bileşenin) işlevi 'ne yaptığıdır'. Bu tipik olarak bir gereksinim spesifikasyonunda, fonksiyonel bir spesifikasyonda veya kullanım durumlarında tarif edilir.
süre
Birim, modül ve program testi olarak da bilinen bileşen testi, ayrıca test edilebilen yazılımın (örn. Modüller, programlar, nesneler, sınıflar, vb.) Hatalarını arar ve çalıştığını doğrular.
ISTQB bileşen / birim testine göre fonksiyonel veya fonksiyonel olmayabilir:
Bileşen testi, işlevselliğin ve kaynak davranışı (örneğin bellek sızıntıları), performans veya sağlamlık testi gibi yapısal olmayan özelliklerin yanı sıra yapısal testlerin (örn. Karar kapsamı) test edilmesini içerebilir.
Yazılım testinin temellerinden alıntılar - ISTQB sertifikası
Rails'te, birim klasörünün modelleriniz için testler yapması, fonksiyonel klasörün ise denetleyicileriniz için testler yapması ve entegrasyon klasörünün, herhangi bir sayıda etkileşimde bulunan denetleyiciyi içeren testleri tutması amaçlanmıştır. Fikstür, test verilerini düzenlemenin bir yoludur; demirbaşlar klasöründe bulunurlar. Test_helper.rb dosyası, testleriniz için varsayılan yapılandırmayı içerir. u ziyaret edebilir bu .
Ben böyle düşünüyorum: Bir birim testi kod yapmak istediğiniz şeyi yaptığını (örneğin a ve b parametresi eklemek istedim, aslında onları eklemek ve çıkarma yok), fonksiyonel testler, tüm kodların doğru bir sonuç almak için birlikte çalıştığını test eder, böylece kodun aslında yapmasını istediğiniz şey sistemde doğru sonucu alır.
AFAIK, birim testi fonksiyonel test DEĞİLDİR. Küçük bir örnekle açıklayayım. Bir e-posta web uygulamasının oturum açma işlevinin, bir kullanıcının yaptığı gibi çalışıp çalışmadığını test etmek istersiniz. Bunun için fonksiyonel testleriniz böyle olmalıdır.
1- existing email, wrong password -> login page should show error "wrong password"!
2- non-existing email, any password -> login page should show error "no such email".
3- existing email, right password -> user should be taken to his inbox page.
4- no @symbol in email, right password -> login page should say "errors in form, please fix them!"
İşlevsel testlerimiz geçersiz girişlerle giriş yapıp yapamayacağımızı kontrol etmeli mi? Örneğin. E-postada @ simgesi yok, kullanıcı adında birden fazla nokta var (yalnızca bir noktaya izin verilir), @ vb. Genellikle hayır! Bu tür testler birim testlerinize girer.
Aşağıdaki testlerde gösterildiği gibi, birim girişlerin içinde geçersiz girişlerin reddedilip reddedilmediğini kontrol edebilirsiniz.
class LoginInputsValidator
method validate_inputs_values(email, password)
1-If email is not like string.string@myapp.com, then throw error.
2-If email contains abusive words, then throw error.
3-If password is less than 10 chars, throw error.
İşlevsel test 4'ün aslında birim test 1'in yaptığı şeyi yaptığına dikkat edin. Bazen, fonksiyonel testler, birim testlerle yapılan testlerin bazılarını (hepsi değil) farklı nedenlerle tekrarlayabilir. Örneğimizde, geçersiz giriş girerken belirli bir hata mesajının görünüp görünmediğini kontrol etmek için fonksiyonel test 4'ü kullanıyoruz . Tüm kötü girişlerin reddedilip reddedilmediğini test etmek istemiyoruz. Birim testlerin işi budur.
BİRİM TESTİ
Birim testi, genellikle işlevler veya yöntemler olan en küçük kod biriminin test edilmesini içerir. Birim testi çoğunlukla birim / yöntem / işlev geliştiricisi tarafından yapılır, çünkü bir işlevin özünü anlarlar. Geliştiricinin temel amacı kodları birim testlerle kapsamaktır.
Bazı fonksiyonların birim testlerle test edilememesi sınırlıdır. Tüm birim testlerinin başarıyla tamamlanmasından sonra bile; ürünün doğru çalışacağını garanti etmez. Ünite testi yalnızca bir kullanım için yazılırken aynı işlev sistemin birkaç bölümünde kullanılabilir.
FONKSİYONEL TEST
Koda bakmadan bir ürünün fonksiyonel yönleri üzerinde testlerin yapılacağı bir Kara Kutu testi türüdür. Fonksiyonel testler çoğunlukla özel bir Yazılım test cihazı tarafından yapılır. Ürünün belirtilen işlevselliğini test etmek için standartlaştırılmamış veriler kullanan pozitif, negatif ve BVA tekniklerini içerecektir. Test kapsamı, fonksiyonel testlerle birim testlerden daha iyi bir şekilde gerçekleştirilir. Test için uygulama GUI'sini kullanır, bu nedenle bir kodun hangi işlevden sorumlu olduğunu belirlemek yerine arayüzün belirli bir bölümünün tam olarak neyin sorumlu olduğunu belirlemek daha kolaydır.
çok basit bir şekilde şunu söyleyebiliriz:
daha fazlasını buradan okuyun .
Ünite testi : - Birim testi, özellikle ürün geliştirilirken ürün bileşenini bileşene göre test etmek için kullanılır. Junit ve Nunit tipi aletler de ürünü Üniteye göre test etmenize yardımcı olacaktır. ** Entegrasyon sonrası sorunları çözmek yerine, geliştirme sürecinin başlarında çözülmesi her zaman rahattır.
Fonksiyonel Test: - Test söz konusu olduğunda, 1.Fonksiyonel Test 2.Fonksiyonel Test olarak iki ana Test türü vardır.
Fonksiyonel Olmayan Test, Test Cihazının ürünün müşterinin bahsetmediği tüm kalite niteliklerini yerine getireceğini test edeceği bir testtir, ancak bu kalite nitelikleri orada olmalıdır. Gibi: -Performans, Kullanılabilirlik, Güvenlik, Yük, Stres vb.Ama Fonksiyonel Test : - Müşteri zaten gereksinimleri ile mevcut ve bunlar düzgün bir şekilde belgelenmiştir, test görevlisi Uygulama İşlevselliğinin uygun olup olmadığını çapraz kontrol etmektir. Teklif Edilen Sistem ile ilgili. Bu amaçla Test Cihazı, önerilen Sistem ile Uygulanan işlevselliği test etmelidir.
Birim testi genellikle geliştiriciler tarafından yapılır. Aynı şeyi yapmanın amacı, kodlarının düzgün çalıştığından emin olmaktır. Genel kural, birim testini kullanarak koddaki tüm yolları kapsamaktır.
Fonksiyonel Test : Bu iyi bir referanstır. Fonksiyonel Test Açıklaması