Veritabanı Testi - Mülakat Soruları

Veritabanı testi, veri geçerliliği, veri bütünlüğü testi, veritabanıyla ilgili performans kontrolü ve veritabanındaki Prosedürlerin, tetikleyicilerin ve işlevlerin test edilmesini içerir.

Veritabanı testinin yapılmasının birçok nedeni vardır. Arka uç sistemi verileri depolamaktan sorumlu olduğundan ve çok amaçlı erişildiğinden, veritabanında veri bütünlüğü, doğrulama ve veri tutarlılığı kontrolü yapmaya ihtiyaç vardır.

Veritabanı testi yapmanın yaygın nedenlerinden bazıları şunlardır:

  • Veritabanı arka ucuna yapılan çağrıların karmaşıklığını kolaylaştırmak için geliştiriciler, View ve Stored Prosedürler.

  • Bunlar Stored prosedürler ve Viewsmüşteri ayrıntılarını (ad, iletişim bilgileri vb.) ve satış verilerini eklemek gibi kritik görevleri içerir. Bu görevlerin çeşitli düzeylerde test edilmesi gerekir.

  • Ön uçta gerçekleştirilen kara kutu testi önemlidir, ancak sorunu izole etmeyi zorlaştırır. Arka uç sistemindeki testler, verilerin sağlamlığını artırır. Bu nedenle veritabanı testi arka uç sistemde yapılır.

  • Bir veritabanında, veriler birden çok uygulamadan gelir ve veritabanında zararlı veya yanlış verilerin depolanması olasılığı vardır. Bu nedenle, veritabanı bileşenlerini düzenli olarak kontrol etmeye ihtiyaç vardır. Ayrıca veri bütünlüğü ve tutarlılığı düzenli olarak kontrol edilmelidir.

Veritabanı testi yaparken izlemeniz gereken adımlar aşağıdaki gibidir -

  • Veritabanında bulunan veriler doğrulanmalıdır.
  • Kısıtlamaların korunduğunu doğrulayın.
  • Prosedürlerin performansı ve tetikleyicilerin yürütülmesi kontrol edilmelidir.
  • Geri alma ve işlem taahhüdü kontrol edilmelidir.

Bir veritabanının işlevi ve yapısı temelinde, DB testi aşağıdaki kategorilere ayrılabilir -

  • Structural Database testing - Tablo ve sütun testi, şema testi, depolanan prosedürler ve görünüm testleri, tetikleyicileri kontrol etme vb. İle ilgilenir.

  • Functional Testing- Veritabanının işlevselliğini kullanıcı açısından kontrol etmeyi içerir. En yaygın İşlevsel test türü Beyaz kutu ve kara kutu testidir.

  • Nonfunctional Testing - Yük testi, veritabanında risk testi, stres testi, minimum sistem gereksinimi ve veritabanının wot performansını ele alır.

Depolanan prosedür testlerini gerçekleştirmek için kullanılan en yaygın araçlar LINQ, SP Test aracı vb.

Birleştirmeler, iki veya daha fazla tabloyu mantıksal bir şekilde bağlamak için kullanılır. Yaygın birleştirme türleri şunları içerir: İç birleştirme, Eşit olmayan, Dış birleştirme, Kendi kendine birleştirme ve Çapraz birleşim.

Tek bir masayı kendi içinde birleştirebilirsiniz. Bu durumda aynı tabloyu iki kez kullanıyorsunuz.

Step 1 - Veritabanına bağlanın

db_connect(query1 DRIVER {drivername};SERVER server_name;UID uidname;
   PWD password;DBQ database_name );

Step 2 - Veritabanının sorgusunu yürütün -

db_excecute_query (write the required query that is to execute); Specify the appropriate condition

Step 3 - Kullanarak veritabanı bağlantısını kesin

db_disconnect(query);

Çıktı veritabanı kontrol noktalarını kullanarak, SQL manuel sorgu seçenekleri seçilmelidir. Burada seçme sorgusu yazılabilir.

İlk olarak, saklı yordamın gerekliliğini kontrol edin. Sonraki adım, saklı yordamda belirtilen tablolarla karşılaştırıldığında dizinlerin, birleşmelerin, silme işlemlerinin ve güncellemelerin doğru olup olmadığını kontrol etmektir.

Ardından, aşağıdaki görevleri gerçekleştirin -

  • Çağırma prosedürü adını, çağrı parametrelerini ve farklı girdi parametresi kümeleri için beklenen yanıtları doğrulayın.

  • Prosedürü TOAD veya MySQL veya Query Analyzer ile yürütün.

  • Farklı parametreler göndererek mevcut prosedürleri yeniden yürütün ve sonuçları beklenen değerlere göre kontrol edin.

  • Süreci tamamlayarak, testleri WinRunner ile otomatikleştirin.

Test cihazı, EXEC komutunu kullanarak veritabanındaki saklı yordamı çağırmalıdır. Herhangi bir parametre gerekliyse, bunların geçilmesi gerekir. Saklanan prosedürün yürütülüp yürütülmediğini onaylamak için farklı parametre değerleri geçilmelidir. Bu komutu çağırırken, veritabanının doğasını ve davranışını kontrol etmeli ve doğrulamalıdır.

Example - Saklanan prosedür bazı tabloyu doldurmak için yazılırsa, tablo değerleri kontrol edilmelidir.

Üç tür SQL deyimimiz var -

  • Veri Manipülasyon Dili (DML)
  • Veri Tanımlama Dili (DDL)
  • Veri Kontrol Dili (DCL)

DDL ifadeleri, veritabanı yapısını veya şemasını tanımlamak için kullanılır. Bazı örnekler -

  • CREATE - veritabanında nesneler oluşturmak için

  • ALTER - veritabanının yapısını değiştirir

  • DROP - veritabanından nesneleri silin

İşleçler, bir SQL deyimindeki koşulları belirtmek ve bir ifadedeki birden çok koşul için bağlaç görevi görmek için kullanılır.

  • Aritmetik operatörler
  • Karşılaştırma / İlişkisel Operatörler
  • Mantıksal operatörler
  • Operatörleri Ayarla
  • Koşulları reddetmek için kullanılan operatörler

Birleşim, iki veya daha fazla Select deyiminin sonuçlarını birleştirmek için kullanılır. Ancak yinelenen satırları ortadan kaldıracaktır. Birlik bir küme operatörüdür.

Unioniki veya daha fazla Select deyiminin sonuçlarını birleştirmek için kullanılır. Ancak yinelenen satırları ortadan kaldıracaktır

Union All işlem Union'a benzer, ancak yinelenen satırları da gösterir.

Tetikleyiciler, veritabanının Bütünlüğünü korumak için kullanılır. Tetikleyicinin çalıştırılıp çalıştırılmadığını kontrol etmek için denetim günlüklerini kontrol edebilirsiniz.

Tetikleyiciler talep üzerine çalıştırılamaz. Tanımlandıkları tabloda ilişkili bir eylem (ekleme, silme ve güncelleme) gerçekleştiğinde çağrılırlar. Tetikleyiciler, iş kurallarını, denetimi uygulamak ve ayrıca bilgi tutarlılığı kontrolleri için kullanılır.

İlk olarak, fonksiyonel gereksinimi alın. Ardından, tablo yapısını, Birleştirmeleri, İmleçleri ve Tetikleyicileri, kullanılan Depolanan yordamı ve diğer parametreleri anlayın. Ardından, bu nesnelere girdi olarak farklı değerler içeren bir test durumu yazabilirsiniz.

DB testi, kullanıcılar tarafından görülemeyen arka uç bileşenlerin test edilmesini içerir. Veritabanı bileşenlerini ve MySQL ve Oracle gibi DBMS sistemlerini içerir.

Ön uç testi, bir uygulamanın işlevlerinin ve formlar, grafikler, menüler, raporlar vb. Gibi bileşenlerinin kontrol edilmesini içerir. Bu bileşenler, VB.net, C #, Delphi vb. Gibi ön uç geliştirme araçları kullanılarak oluşturulur.

Veritabanı testi gerçekleştirme süreci, diğer uygulamaların test edilmesine benzer. DB testi, aşağıdaki temel süreçlerle tanımlanabilir -

  • Ortamı kurma
  • Bir test yap
  • Test sonucunu kontrol edin
  • Beklenen sonuçlara göre doğrulama
  • Bulguları ilgili paydaşlara bildirin

Test senaryolarını geliştirmek için çeşitli SQL ifadeleri kullanılır. DB testi gerçekleştirmek için kullanılan en yaygın SQL ifadesi select ifadesidir. Bunun dışında çeşitli DDL, DML, DCL ifadeleri de kullanılabilir.

Example - Oluştur, Ekle, Seç, Güncelle vb.

Görünüm, kendi başına gerçekte var olmayan, bunun yerine bir veya daha fazla temel tablodan türetilen bir tablodur. Başka bir deyişle, görünümü doğrudan temsil eden saklanan bir dosya yoktur, bunun yerine bir görünüm tanımı veri sözlüğünde saklanır.

Temel tabloların büyümesi ve yeniden yapılandırılması görünümlere yansıtılmaz. Böylece görünüm, kullanıcıları veritabanındaki değişikliklerden izole edebilir. Bu nedenle mantıksal veri bağımsızlığını açıklar.

Kullanıcı görünümlerini ve bunların kavramsal şema ile eşleşmelerini belirtir.

Bir tabloyu herhangi bir bilgi kaybetmeden birden çok tabloya ayırma işlemidir. Normalleştirme, aşağıdaki hedeflere ulaşmak için yapılır -

  • Artıklığı en aza indirmek için.
  • Ekleme, silme ve anormallikleri en aza indirmek için.

İndeksleme, belirli verilerin ne kadar hızlı bulunabileceğini belirlemeye yönelik bir tekniktir. Sorgu performans optimizasyonu için kullanılır. İndeksleme aşağıdaki türlerde olabilir -

  • İkili arama stili indeksleme
  • B-Ağaç indeksleme
  • Ters liste indeksleme
  • Bellek yerleşik tablosu
  • Tablo indeksleme

SQL, normalleştirilmiş ilişkisel veritabanı yapılarında veri erişim işlemleri için özel olarak tasarlanmış bir Yapılandırılmış Sorgu dilidir.

SQL ile diğer geleneksel programlama dilleri arasındaki temel fark, SQL deyimlerinin nasıl gerçekleştirileceğinden ziyade hangi veri işlemlerinin gerçekleştirilmesi gerektiğini belirlemesidir.

Saklanan prosedürler, kullanıcı tanımlı bir işlemi gerçekleştirmek için kullanılır. Depolanan yordamda bir dizi bileşik SQL deyimi bulunabilir. Bir saklı yordam, SQL komutlarını yürütür ve sonucu istemciye döndürür.

PL / SQL, tüm veritabanı bilgisi erişim ifadeleri için imleçler kullanır. Dil, iki tür imleç kullanımını destekler - örtük ve açık.

Cold Backup- Yedek geri alma, örnek kapatıldığında veritabanı dosyalarının yedeklenmesi, günlüklerin yinelenmesi ve kontrol dosyası olarak bilinir. Bu, genellikle diskten doğrudan banda bir dosya kopyasıdır. Tutarlı bir kopya garantilemek için örneği kapatmanız gerekir.

Soğuk yedekleme gerçekleştirilirse, veri dosyası kaybı durumunda kullanılabilen tek seçenek, tüm dosyaları en son yedeklemeden geri yüklemektir. Son yedekleme kaybolduktan sonra gerçekleştirilen tüm değişiklikler.

Hot Backup- Bazı veritabanları dosyaların yedek kopyasını oluştururken kapanamaz, bu nedenle soğuk yedekleme mevcut bir seçenek değildir. Bu tür veritabanları için sıcak yedekleme kullanıyoruz.

SQL alt sorgusu, aynı anda iki veya daha fazla tabloyu sorgulamanın bir yoludur. Alt sorgunun kendisi, başka bir SQL SELECT ifadesinin WHERE yan tümcesinde bulunan ve parantez içine alınarak ayrılmış bir SQL SELECT ifadesidir. Bazı alt sorgular eşdeğer SQL birleştirme yapılarına sahiptir, ancak ilişkili alt sorgular bir birleştirme ile çoğaltılamaz

Böyle bir durumda, aşağıdaki yönleri test etmeniz gerekir -

  • Birden çok değerli bağımlılıklar
  • İşlevsel bağımlılıklar
  • Aday anahtarlar
  • Birincil anahtarlar
  • Yabancı anahtarlar

Veritabanına gidip ilgili bir SQL sorgusu çalıştırabilirsiniz. WinRunner'da veritabanı denetim noktası işlevini kullanabilirsiniz. Uygulama görüntüleme işlevi sağlıyorsa, aynısını ön uçtan doğrulayabilirsiniz.

Veriye dayalı test, uygulamanın birden fazla test verisiyle test edileceği bir otomasyon test süreci olarak tanımlanır. Test cihazının sistemin önünde oturduğu ve ön uç arayüzden manuel olarak farklı yeni giriş değerleri girdiği yeniden test etmekten basit ve kolaydır.

Test senaryolarını yürüttükten ve önceden tespit edilmiş ve düzeltilmiş kusurları bulduğunuzda. Orijinal kusurun başarıyla giderildiğini doğrulamak için aynı testin farklı giriş değerleriyle yeniden yürütülmesine Yeniden test denir.

Yeniden test, küçük bir farkla Veriye Dayalı Test olarak da adlandırılır -

  • Retesting - Uygulama testi tamamen yeni veri kümesiyle yapılan manuel bir test sürecidir.

  • Data-driven Testing- Uygulamanın birden çok test verisi ile test edileceği bir Otomasyon test sürecidir. Test cihazının sistemin önünde oturduğu ve ön uç arayüzden manuel olarak farklı yeni giriş değerleri girdiği yeniden test etmekten basit ve kolaydır.

Dört tür veriye dayalı test vardır -

  • Klavye aracılığıyla dinamik test verileri gönderimi
  • .Txt, .doc düz dosyalar aracılığıyla Veriye Dayalı Testler
  • Ön uç nesneler aracılığıyla Veriye Dayalı Testler
  • Excel sayfası aracılığıyla Veriye Dayalı Testler

Performans testi, bir sistemin ağır bir iş yükü altında hız, hassasiyet ve kararlılık açısından nasıl performans gösterdiğini belirleyen bir yazılım test tekniğidir.

Veritabanı kurtarma testi yapılırken aşağıdaki kilit noktalar dikkate alınmalıdır -

  • Veritabanı sisteminde değişikliklerin veya değişikliklerin meydana geldiği zaman aralığı.

  • Kurtarma planınızın uygulanmasını istediğiniz dönem.

  • Veri tabanı sistemindeki verilerin hassasiyeti. Veriler ne kadar kritikse, yazılımı o kadar düzenli olarak test etmeniz gerekecektir.

Test verilerini oluşturmak için aşağıdaki araçlar kullanılır -

  • Veri Fabrikası
  • DTM Veri Oluşturucu
  • Turbo Veriler

Kullanılabilecek iki tür yedekleme vardır -

  • Physical Backups- Fiziksel yedekleme, Veritas net back, IBM Tivoli Manager gibi üçüncü taraf yedekleme araçlarını veya işletim sistemi yardımcı programlarını kullanarak kullanıcı yöneticisi yedeklemelerini kullanarak yedeklemeyi içerir.

  • Logical Backups - Veritabanının mantıksal yedeklemesi, tablolar, dizinler, prosedürler vb. Gibi mantıksal nesnelerin yedeklenmesini içerir.

Veri yedeklemesi almak için yaygın bir araç, veritabanı yedeklemesi almak için bir Oracle yardımcı programı olan Oracle Recovery Manager'dır (RMAN).

Veritabanı kurtarma testinde aşağıdaki eylemler gerçekleştirilir -

  • Veritabanı sisteminin test edilmesi
  • SQL dosyalarının test edilmesi
  • Kısmi dosyaların test edilmesi
  • Veri yedeklemesinin test edilmesi
  • Yedekleme aracının test edilmesi
  • Günlük yedeklerini test etme

Veritabanı güvenlik testleri, güvenlik mekanizmalarındaki döngü deliklerini bulmak ve ayrıca veritabanı sisteminin güvenlik açıklarını veya zayıflıklarını bulmak için yapılır.

Aşağıdaki yönleri kontrol etmek için veritabanı güvenlik testi yapılır -

  • Authentication
  • Authorization
  • Confidentiality
  • Availability
  • Integrity
  • Resilience

SQL Enjeksiyon tehdidi, kötü amaçlı SQL ifadelerinin veritabanı sistemine eklendiği ve veritabanı sisteminden kritik bilgileri almak için yürütüldüğü bir veritabanı sistemindeki en yaygın saldırı türüdür. Bu saldırı, kullanıcı uygulamalarının uygulanmasındaki boşluklardan yararlanır. Bu kullanıcı girişlerini önlemek için alanlar dikkatlice ele alınmalıdır.

Aşağıdaki araçlar veritabanı güvenlik testi yapmak için kullanılabilir: Zed Attack Proxy, Paros, Social Engineer Toolkit, Skipfish, Vega, Wapiti ve Web Scarab.

Veritabanı testi yapılırken karşılaşılan yaygın zorluklar şunlardır:

  • Test kapsamı çok büyük
  • Ölçeği küçültülmüş test veritabanı
  • Veritabanı yapısındaki değişiklikler
  • Karmaşık Test Planları
  • İyi SQL anlayışı