Doğrulama ve doğrulama test sürecinin bir parçası mı?


9

Birçok kaynağa dayanarak test etmenin basit tanımının mümkün olduğunca çok hata bulmak olduğuna inanmıyorum - çalıştığından veya çalışmadığından emin olmak için test ediyoruz. Örneğin, takip formu ISTQB'yi test etmenin hedefleridir:

  1. (Yazılım ürünleri) belirtilen gereksinimleri karşıladığını belirleyin (Bence doğrulama)

  2. (Yazılım ürünleri) amaca uygun olduğunu gösterin (bence bu doğrulamadır)

  3. Hataları tespit et

    Testin doğrulama, doğrulama ve hata tespiti olduğunu kabul ediyorum. Bu doğru mu?


1
Test kitaplarının söylediği ilk şey, "test yazılımın doğru çalıştığını gösterme süreci değil. Bu hataları bulma sürecidir" dir. Ve kitaplardan, testi böyle tanımlamak için çok sayıda neden var. Bu nedenle, doğrulama, yazılımın gereksinimleri karşılamadığı yeri bulma sürecidir.
superM

Tanımlamaya göre, doğrulama gereksinimlerin karşılanmasını sağlar. Kitaplar aslında testi yazılımın kalitesini ölçme süreci olarak tanımlar. Eğer sistemin çalışıp çalışmadığını görmek amacıyla (pozitif) çalışıp çalışmadığını kontrol ediyorsanız, hata aramadığınız için test yapmıyor musunuz? :) Wikipedia'da: Test teknikleri, yazılım hataları bulma amacıyla bir program veya uygulama yürütme işlemini içerir, ancak bunlarla sınırlı değildir
John V

Kelime testinin sınırlarını tanımlamanın en iyi yolunun bir hipotezi test etmeyi düşünmek olduğunu düşünüyorum, bu durumda hipotezde yanlışlık veya yanlışlık olmadığını test etmeye çalışıyorsunuz, bu yararlı olduğunu doğrulamakla aynı şey değil ya da uygulanabilirliğini doğrulamak için, bu amaç ne olursa olsun, tüm davranış kapsamının tanımlanması durumudur.
Jimmy Hoffa

"Güzel bir soru" bonusu var :)
Andrew

Yanıtlar:


1

Bence tam olarak doğru anladın.

  1. Doğrulama ve Doğrulama farklı şeylerdir ve aslında oldukça iyi tanımlanmıştır. Belgeyi pek sevmiyorum, ancak ISO 9000ff KG için son derece alakalı ve Doğrulamayı bir ürünü gereksinimleriyle karşılaştırırken, Doğrulamayı gerçekten müşterinin / kullanıcının ihtiyaçlarına uygun olup olmadığını kontrol etmek olarak tanımlıyor ve bunun farklı olabileceğini biliyoruz. .

  2. Her ikisi de test yoluyla yapılabilir. Doğrulama, oluşturulan form gereksinimlerinin test edilmesine yol açacaktır. Doğrulama, gereksinimlere doğrudan başvurmadan Testler tarafından yapılan testlere yol açar. Bence buna genellikle keşif testi denir. Açıkçası, kullanıcıların gerçek ihtiyaçlarını gerçek anlamda anlayan insanlar tarafından yapılmalıdır, bu yüzden gerçek kullanıcılar tarafından alfa ve beta testi bariz seçeneklerdir.

  3. Teorik olarak, ilk ikisinin kapsadığı her şeyin bir hata olmadığını ve bu nedenle hataları ayrı bir hedef olarak bulmak mantıklı olmadığını iddia edebilir. Ama bence gerçekten doğrulayamayacağınız ya da doğrulayamadığınız şeyler var. Örneğin güvenlik: Bir yazılım sisteminin saldırılara karşı güvenli olduğunu nasıl doğrular veya doğrularsınız? Bunun yerine güvenlik açıklarını bulmaya çalışırsınız. Bu arama, sorun bulamazsa hiçbir şeyi doğrulamaz veya doğrulamaz, ancak başarılı olursa hata bulur.


Sorun, birçok kaynağın doğrulama dinamikken doğrulamanın yalnızca statik olduğunu belirtmesidir. Çok karışık. O zaman fonksiyonel test ne olurdu? Dinamik doğrulamasını söyleyebilirim ..
John V

1
Bu doğrulama ve doğrulama tanımını hangi kaynaklar kullanıyor? Öte yandan, testle biten herhangi bir şeyin tanımı konusunda net ve genel olarak anlaşılmış bir şey bilmiyorum. Bu yüzden sizin için fonksiyonel bir testin ne olduğunu gerçekten bilmiyorum.
Jens Schauder

ISO 12207, testi yalnızca bir doğrulama işlemi olarak kısıtlar.
John V

3

Wikipedia'dan: "... Başka bir deyişle, doğrulama ürünün gerçekte kullanıcının ihtiyaçlarını karşılamasını ve teknik özelliklerin ilk etapta doğru olmasını sağlarken doğrulama ürünün gereksinimlere ve tasarım özelliklerine göre inşa edilmesini sağlar Doğrulama "doğru şeyi oluşturduğunuzu" garanti eder. Doğrulama "doğru oluşturduğunuzu" garanti eder. Doğrulama, ürünün sağlandığı şekilde yerine getireceğini doğrular.

Kullanıcının ihtiyaçlarını test edemez ve spesifikasyonların kodla doğru olup olmadığını kontrol edemezsiniz. Dolayısıyla doğrulama test ile yapılmaz.

Doğrulama, gereksinimlerinizin ve tasarımınızın doğru olduğunu varsayar, böylece kod yazarak test edebilirsiniz (test).


Ben kabul etmem - test sadece kod test değil, aynı zamanda belge test vb vardır. BTW, wikipedia ayrıca diyor: Yazılım test bir yazılım programı / uygulama / ürün doğrulama ve doğrulama süreci olarak ifade edilebilir .. Sen doğrulamak programı tarafından yürütülmesi ve kullanıcının istediği bu olup olmadığı yatırım.
John V

Aslında haklısın. Test süreci Test Kabul Etmeyi de içerir, ancak Birim, Entegrasyon ve Sistem testi hakkında konuştum. Test sürecini bir bütün olarak düşünürsek, doğrulama ve doğrulama testlerle yapılır.
Mert Akcakaya

1

Gerçek dünya için test, yazılımın gereksinimlerini karşılayan yazılımın doğrulanması ve doğrulanmasıdır (iş / fonksiyonel / işlevsel olmayan). Bunların amacı, yazılımın amaca uygun olup olmadığını belirlemektir. Uygulamanın gereksinimlerini karşılamayan herhangi bir davranış, yazılımın amaca uygun olup olmadığını belirlemeden önce şiddetinin tartılması gereken bir kusurdur.

Düşük ciddiyetteki kusurlar muhtemelen yazılımı bir üretim tipi kullanıma aktarmada göstericiler değildir; Yüksek ciddiyet, bir düzeltme üretilmesini gerektirebilir. Gerçek dünyada tüm yazılımların kusurları vardır, bazıları kodlama sorunlarıdır ve diğerleri eksik gereksinimlerden kaynaklanmaktadır - bilinmeyen bir gereksinimleri test edemediğiniz için test edilemeyebilir.


1

Doğrulama ve onaylamanın birçok tanımı vardır. Birçok kişi V&V etiketini her ikisini de tek bir etkinlikte gruplamak için bile kullanır. Amaç, yazılımın doğru şeyleri ve doğru şeyleri yapmalarını sağlamaktır. Gereksinimlere uygunluğu kontrol etmek ya da hataları bulmaya çalışmak bu düzeyde gerekli değildir.

Test, doğrulama ve validasyon için kullanılan birçok teknikten biridir, aksi halde değildir. Kod incelemesi bir diğeri ve resmi doğrulama ile birlikte matematiksel kanıtlar bir diğeri.

Bununla birlikte, testler, gerekliliklere uygunluğu kontrol etmek amacıyla değil, hataları bulmak amacıyla yapılmalıdır.

Temel fark test cihazının aklındadır. Yazılımın amaçlandığı gibi çalıştığını gösteren bir test senaryosu oluşturmak (uyumluluğu kontrol etmek), yazılımın başarısız olduğunu gösteren bir test vakası oluşturmaktan (hataları bulma) çok daha kolaydır.

Harika bir test cihazı, yazılımı kırma konusunda tutkuludur, güvenli bir şekilde uygulamakla ilgili değildir.


teşekkürler, ama biz de gereksinimlerin karşılandığını göstermek için test etmiyoruz? Yazılımın çalıştığından emin oluruz (spesifikasyonları karşılar) ve daha sonra kusurları bulmaya çalışırız. Yani bu sadece hataları bulmakla ilgili değil. Test etmenin temel amacının böcekleri değil kaliteyi ölçmek olduğunu söyleyen bir kitabı hatırlıyorum. İlk noktanıza gelince, kod incelemesi, matematik kanıtı vb. De test ediliyor ve statik olarak adlandırılıyor.
John V

Kusurlar veya hatalar, gereksinimlerin aksine bulunur. İşin doğası aynıdır. Test cihazının verimliliğini artırmak için düşünme biçiminde sadece bir fark vardır. İlk noktama gelince, yazılım doğrulamasında kullanılan tüm terimlerin birçok tanımı vardır (ve bir ekibe katılırken ilk adım o takımdaki yerel lehçeyi elde etmektir), ancak insanların çoğu testin sadece dinamik olduğunu kabul eder tekniği. statik test , bir bilgisayar tarafından değil, kodun "test cihazı" göz önünde bulunduğunda gözden geçirilemeyecek kadar uzak olmayan bir oksimoron veya farklı bir tekniğe atıfta bulunur.
mouviciel

mouviciel: oksimoron? Ben öyle düşünmüyorum, statik test tam olarak mümkün olan (gereklilik sorunları, tasarım kusurları ..) yürütülmeden olası hataları kontrol etmek anlamına gelir. Gereksinimleri doğrulamak ve hataları kontrol etmek aynı şey değildir: bir alanın int32 değerini tutabildiğini test etmelisiniz. Bu çalıştığını test ediyor. Sonra daha yüksek değerler girmeye çalışabilirsiniz, bu hataları test ediyor ..
John V

1

Bunu pratik açıdan görelim. Test için test senaryoları tanımlamanız gerekir. Tipik olarak, test koşullarını belirtilen gereksinimler boyunca tanımlarsınız ve bunlar "mutlu günler" vakalarının yanı sıra "uç vakalar" ı da kapsamalıdır - özellikle ikincisi genellikle yazılımı kırma niyeti ile tanımlanır. Bazı testleriniz başarısız olduğunda, hatalar / kusurlar gösterirler. Her gereksinim için makul miktarda test vakasına sahipseniz ve tüm testler başarılı olduğunda, tüm gereksinimlerin yerine getirildiğini tam olarak kanıtlamış olmayabilirsiniz , ancak bunun olasılığını geliştirdiniz, bu nedenle bazı doğrulama yaptınız.

Dolayısıyla, sorunun bu kısmı için, hataların ve doğrulamanın bulunması aynı sürecin sadece iki tarafı olabilir:

  • testler başarısız oldu: kusur bulundu

  • testler geçer: doğrulama yapılır (en azından, yeterli ve doğru testleri sağlarsanız, bir dereceye kadar)

Doğrulama ile ilgili olarak: @Mert'in işaret ettiği gibi, doğrulama kabul testi ile yapılabilir, ancak diğer test biçimleri ile yapılamaz. Bu nedenle, genel olarak test etme, yalnızca kabul testi olarak yapıldığında bazı potansiyel kullanıcılar tarafından onaylanmasına neden olmaz.


0

Her şey "doğrulama" tanımınıza bağlıdır. Örneğin, resmi doğrulama genellikle KG ekibi tarafından yapılan bir şey değildir, bunun yerine geliştiricilerin sorumluluğundadır. Neredeyse hiç kimse onunla ilişkili yüksek maliyet nedeniyle resmi doğrulama yapmamaktadır (bilgi boşluğu ve gerekli kaynaklar).


0

Yazılım testi KG ile aynı değildir. Doğru anladın. Yazılım testi genel olarak kendi içinde birçok aşama (duman, birim, regresyon, entegrasyon, kullanıcı kabulü vb.) İçerir.

Bu nedenle, yazılımın gereksinimlere uygun şekilde çalıştığından emin olmak QA'nın (kalite güvence uzmanı - daha önce yıllar önce test uzmanları olarak adlandırılır) insan hedefidir. Ancak, sadece test etmek değildir . KG, söz konusu ürünün kalite kontrolünü yapmak için uygun süreç setinin mevcut olmasını veya en azından projenin tasarım aşamasına alınmasını sağlar.

Bu nedenle, ideal olarak KG'nizin uygulamayı bir dizi gereksinime göre doğrulamasını bekler ve sadece yazılımı kırarak ve kusurları bularak test etmeye çalışmazsınız.


KG sadece test DEĞİLDİR. KG, geliştirme süreçlerinin kalitesi ile ilgileniyor ..
John V

KG, uygulamayı bir dizi gereksinime göre doğrular.
Yusubov
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.