Kabul testleri ile fonksiyonel testler arasındaki gerçek fark nedir?
Her birinin önemli noktaları veya amaçları nelerdir? Okuduğum her yerde belirsiz bir şekilde benzerler.
Yanıtlar:
Benim dünyamda şu terimleri kullanıyoruz:
fonksiyonel test : Bu bir doğrulama aktivitesidir; doğru çalışan bir ürün geliştirdik mi? Yazılım iş gereksinimlerini karşılıyor mu?
Bu tür testler için, bu senaryonun "gerçek dünyada" var olma olasılığı düşük olsa bile, aklımıza gelen tüm olası senaryoları kapsayan test senaryolarına sahibiz. Bu tür testleri yaparken maksimum kod kapsamını hedefliyoruz. O anda yakalayabileceğimiz herhangi bir test ortamını kullanıyoruz, kullanılabilir olduğu sürece "üretim" kalibre olması gerekmez.
kabul testi : Bu bir doğrulama faaliyetidir; doğru şeyi mi yaptık? Müşterinin gerçekten ihtiyacı olan bu mu?
Bu genellikle müşteriyle işbirliği içinde veya dahili bir müşteri temsilcisi (ürün sahibi) tarafından yapılır. Bu tür testler için, yazılımın kullanılmasını beklediğimiz tipik senaryoları kapsayan test senaryoları kullanırız. Bu test, "üretim benzeri" bir ortamda, müşterinin kullanacağıyla aynı veya ona yakın donanım üzerinde gerçekleştirilmelidir. "Hastalıklarımızı" test ettiğimiz zamandır:
Güvenilirlik, Kullanılabilirlik : Stres testi ile doğrulanmıştır.
Ölçeklenebilirlik : Bir yük testi ile doğrulanmıştır.
Kullanılabilirlik : Müşteriye bir inceleme ve gösteri ile doğrulanır. Kullanıcı arayüzü beğenilerine göre yapılandırılmış mı? Müşteri markasını tüm doğru yerlere yerleştirdik mi? İstedikleri tüm alanlar / ekranlar bizde mi?
Güvenlik (diğer adıyla, Güvenliğe uygunluk) : Demo yoluyla doğrulanır. Bazen bir müşteri, bir güvenlik denetimi ve / veya izinsiz giriş testi yapmak için dışarıdan bir firma tutacaktır.
Sürdürülebilirlik : Yazılım güncellemelerini / yamalarını nasıl sunacağımızın gösterilmesi ile doğrulanır.
Yapılandırılabilirlik : Müşterinin sistemi ihtiyaçlarına göre nasıl değiştirebileceğinin gösterilmesiyle doğrulanır.
Bu hiçbir şekilde standart değildir ve buradaki çelişkili cevapların da gösterdiği gibi "standart" bir tanım olduğunu düşünmüyorum. Kuruluşunuz için en önemli şey, bu terimleri tam olarak tanımlamanız ve onlara bağlı kalmanızdır.
Patrick Cuff'ın cevabını beğendim. Eklemek istediğim şey, bir test seviyesi ile benim için göz açıcı olan bir test türü arasındaki ayrımdır .
Test seviyesinin V modeli kullanılarak açıklanması kolaydır , bir örnek: Her test seviyesinin kendisine karşılık gelen geliştirme seviyesi vardır . Tipik bir zaman özelliğine sahiptir, geliştirme yaşam döngüsünün belirli bir aşamasında yürütülürler.
Bir test türü belirli bir deney amacına odaklanan bir özellikleri olduğunu. Test türleri , teknik veya işlevsel olmayan yönler olarak da bilinen kalite yönlerinizi vurgular. Test türleri olabilir herhangi birinde yürütülecek Test seviyesinde . ISO / IEC 25010: 2011'de belirtilen kalite özelliklerini test türleri olarak kullanmayı seviyorum .
Tamamlamak için. Regresyon testi denen bir şey de var . Bu, test seviyesi ve test türünün yanında ekstra bir sınıflandırmadır . Bir regresyon testi sizin üründe kritik dokunur bir şey çünkü tekrar istediğiniz bir testtir. Aslında, her test seviyesi için tanımladığınız testlerin bir alt kümesidir . Ürününüzde küçük bir hata düzeltmesi varsa, her zaman tüm testleri tekrarlayacak zamanınız olmaz. Regresyon testi buna bir cevaptır.
Fark, problemi test etmek ile çözümü arasındadır. Yazılım, her ikisi de test edilebilir bir soruna çözümdür.
İşlevsel test, yazılımın sorunu nasıl çözdüğünüzün sınırları dahilinde bir işlev gerçekleştirdiğini doğrular. Bu, fabrikadan çıkmadan önce seri üretilen ürünler üzerinde yapılan testlere benzer bir yazılım geliştirmenin ayrılmaz bir parçasıdır. İşlevsel bir test, ürünün gerçekten sizin (geliştirici) düşündüğünüz gibi çalıştığını doğrular.
Kabul testleri, ürünün gerçekten çözmek için yapıldığı sorunu çözdüğünü doğrular. Bu, en iyi şekilde kullanıcı (müşteri) tarafından yapılabilir, örneğin yazılımın yardımcı olduğu görevlerini yerine getirir. Yazılım bu gerçek dünya testini geçerse, önceki çözümün yerini aldığı kabul edilir. Bu kabul testi bazen sadece üretimde düzgün bir şekilde yapılabilir, özellikle de anonim müşterileriniz varsa (örneğin bir web sitesi). Bu nedenle, yeni bir özellik yalnızca günler veya haftalarca kullanımdan sonra kabul edilecektir.
İşlevsel test - tasarladığınız veya oluşturduğunuz niteliklere (işlevler, hız, hatalar, tutarlılık vb.) Sahip olduğunu doğrulayarak ürünü test edin.
Kabul testi - ürünü kendi bağlamında test edin, bu insan etkileşimini (simülasyonunu) gerektirir, orijinal problem (ler) üzerinde istenen etkiyi test edin.
Cevap fikirdir. Birçok projede çalıştım ve test yöneticisi ve yayıncı olarak çalıştım ve tüm farklı roller ve çeşitli kitaplardaki açıklamalar farklı, işte benim varyasyonum:
İşlevsel test: iş gereksinimlerini alın ve hepsini işlevsel bir bakış açısından iyi ve kapsamlı bir şekilde test edin.
kabul testi: "ödeme yapan" müşteri, teslim edilen ürünü kabul edebilmek için yapmayı sevdiği testleri yapar. Müşteriye bağlıdır, ancak genellikle testler fonksiyonel test kadar kapsamlı değildir, özellikle şirket içi bir projeyse, paydaşlar daha önceki test aşamalarında yapılan test sonuçlarını gözden geçirir ve bunlara güvenir.
Dediğim gibi bu benim bakış açım ve deneyimim. Fonksiyonel test sistematiktir ve kabul testi daha çok iş departmanının şeyi test etmesidir.
İzleyici. Fonksiyonel test, yazılımı üreten ekibin üyelerine bekledikleri şeyi yaptığından emin olmaktır. Kabul testi, tüketicinin ihtiyaçlarını karşıladığından emin olmaktır.
Dürbün. İşlevsel test, bir seferde yalnızca bir bileşenin işlevselliğini test eder. Kabul testi, ürünün tüketici için yazılımı kabul etmeden önce test etmesi için yeterince önemli olan her yönünü kapsar (yani, kabul edilebilirliğini belirlemek için test etmek için harcayacağı zaman veya paraya değecek herhangi bir şey).
Yazılım fonksiyonel testleri, entegrasyon testlerini ve sistem testlerini geçebilir; yalnızca müşteri özelliklerin ihtiyaçlarını karşılamadığını keşfettiğinde kabul testlerinde başarısız olmak için. Bu genellikle birinin teknik özellikleri berbat ettiği anlamına gelir. Yazılım ayrıca bazı işlevsel testlerde başarısız olabilir, ancak kabul testini geçebilir çünkü müşteri, yazılımın ihtiyaç duyduğu temel şeyleri kabul edilebilir derecede iyi yaptığı sürece bazı işlevsel hatalarla uğraşmaya isteklidir (beta yazılımı genellikle ondan önceki bir kullanıcı alt kümesi tarafından kabul edilecektir. tamamen işlevseldir).
Fonksiyonel Test: Nihai program yapısına bakılmaksızın, belirtilen fonksiyonel gereksinimlerden elde edilen test verilerinin uygulanması. Kara kutu testi olarak da bilinir.
Kabul Testi: Bir sistemin kabul kriterlerini karşılayıp karşılamadığını belirlemek için yapılan resmi test - son kullanıcının sistemi kabul edip etmeyeceğini belirlemesini sağlar.
Benim görüşüme göre temel fark, testlerin başarılı olup olmadığını kimin söylediğidir.
İşlevsel bir test, sistemin önceden tanımlanmış gereksinimleri karşıladığını test eder. Sistemin geliştirilmesinden sorumlu kişiler tarafından yapılır ve kontrol edilir.
Kullanıcılar tarafından bir kabul testi imzalanır. İdeal olarak, kullanıcılar test etmek istediklerini söyleyeceklerdir, ancak pratikte, kullanıcılar yeterince zaman harcamadığından, işlevsel bir testin gün batımı olması muhtemeldir. Bu görüşün, havacılık ve diğer güvenlik açısından kritik öneme sahip diğer kullanıcı gruplarıyla ilgilendiğim iş kullanıcılarından geldiğini unutmayın, bu farklılığa pek sahip olmayabilir.
... bir sistemde (örneğin, yazılım, çok sayıda imal edilmiş mekanik parça veya kimyasal ürün grupları) teslim edilmeden önce gerçekleştirilen kara kutu testidir.
Bu söylemeye devam etse de:
Aynı zamanda fonksiyonel test, kara kutu testi, yayın kabulü, QA testi, uygulama testi, güven testi, son test, doğrulama testi veya fabrika kabul testi olarak da bilinir.
"alıntı gerekli" işareti ile.
İşlevsel test (aslında Sistem Testine yönlendirir):
sistemin belirtilen gereksinimlere uygunluğunu değerlendirmek için eksiksiz, entegre bir sistem üzerinde yürütülür. Sistem testi kara kutu testinin kapsamına girer ve bu nedenle kodun veya mantığın iç tasarımı hakkında bilgi gerektirmemelidir.
Yani bu tanımdan hemen hemen aynı şeyler.
Deneyimlerime göre, kabul testi genellikle fonksiyonel testlerin bir alt kümesidir ve müşteri tarafından resmi onay sürecinde kullanılırken, fonksiyonel / sistem testleri geliştirici / QA departmanı tarafından yürütülür.
İkisi arasındaki ilişki: Kabul testi genellikle fonksiyonel testi içerir, ancak ek testler içerebilir. Örneğin etiketleme / dokümantasyon gereksinimlerini kontrol etmek.
Fonksiyonel test , test edilen ürünün, test edilen cihazın tepkisini incelerken, hedef ortamın tipik olarak ürettiği veya ötesinde çeşitli uyarımlar (test kapsamında) üretebilen bir test ortamına yerleştirildiği zamandır.
Fiziksel bir ürün (yazılım değil) için iki ana Kabul testi türü vardır : tasarım testleri ve üretim testleri. Tasarım testleri tipik olarak, üretim testini geçen çok sayıda ürün numunesi kullanır. Farklı tüketiciler tasarımı farklı şekillerde test edebilir.
Tasarım, ürün spesifikasyonuna göre test edildiğinde kabul testleri doğrulama olarak adlandırılır ve ürün tüketicinin gerçek ortamına yerleştirildiğinde kabul testleri doğrulama olarak adlandırılır.
Kabul testleri sadece müşteri tarafından yürütülen ve test ediyor içeren test diğer tür:
Fonksiyonel testlere karşı fonksiyonel olmayan testler (alt türleri) için - bu SO sorusuna verdiğim cevaba bakın .
Aynı şeydir.
Kabul testleri, sistem devreye alınmadan veya teslim edilmeden önce gerçek üretim / dağıtım ortamıyla mümkün olduğunca aynı şekilde tamamlanan sistem üzerinde gerçekleştirilir.
Kabul testini otomatik bir şekilde veya manuel olarak yapabilirsiniz.