9 Ocak 2017 Pazartesi

İlişkisel Model

İlişkisel model (relational model), günümüzde en yaygın biçimde kullanılan bir veritabanı modelidir. Ticari veritabanı yönetim sistemlerinin hemen hemen tümünde bu model kullanılmaktadır.

İlişkisel model, varlıklar arasındaki bağlantının, içerdiği değerlere göre sağlanması esasına dayanır. İlişkisel model, varlıklar arasında oluşan karmaşık ilişkileri basite indirgemek amacıyla geliştirilmiştir.

Bu yaklaşımda, veri tabanındaki tüm ilişkiler tablolar biçiminde tanımlanmaktadır.

İlişkisel Veritabanı
İlişkisel veritabanı, her biri özel isimlere sahip tablolardan oluşur. İlişkisel veri tabanında her bir tablo bir varlığa veya bir ilişkiye karşılık gelmektedir.







Tablonun sütunları nitelikleri; satırlar ise bu niteliklerin değerlerini ifade eder. Her bir satır bir “kayıt” olarak da düşünülebilir. Anahtar alan, tablonun tanımlayıcısıdır.


Tabloların Özellikleri
İlişkisel veritabanı içinde yer alan her bir tablo;
Sütunlardan oluşur ve her bir sütunun ayrı bir adı vardır.
Her bir sütun, aynı niteliğin tanımlandığı aynı etki alanının (domain) belirlediği değerleri içerir.
Her bir satır birbirinden farklıdır.
Satırların ve sütunların sırası önemsizdir.

Ad-lib testleri


Ad-lib test ler doğaçlama olarak yapılan rast gele sayılar ile programın test edilmesini sağlar.
Ad-lib testleri tam olarak sistem ile ilgili bir şey ispat edemesede. Genel anlamda kullanılabilrilike ile ilgili yapılan testlerdir.


Özet
Veri girişleri sistem için çok önemli noktalardır.
Güvenlik ve sistemin doğru çalışması açısından.
Dış dünyadaki veriler ,belli bir formata göre sistem içerisine alınmalıdırlar.
Çöp olarak belirlenen verilerin sistem içerisine alınmaması için anlık kontroller yapılmalıdır.
Hata kontlerleri sistemin en alt noktasından başlatılmalı ve her seferinde tek bir hata oluşturularak kontrol edilmesi gerekmektedir. Sonrasında ise hata sayıları arttırırlarak test işlermleri gerçekleştirilmelidir.
Onaylama testleri söz dizimini kapsayıcı şekilde olamlıdır.
Uç değerler ve sınır değerler test edilmesine öncelik verilmelidir.(Sınırlayıcıları düşünün.)
Otomatik test programları çalıştırılarak testler yapılmalıdır.
Anlık yapılan Ad-lib testleri ile sistemin durumu incelenebilir.
Değer üreteçleri ile programa değerler verilerek programın düzün olarak çalışıp çalışmadığına bakılmalıdır.


Söz dizimi Test Tasarım Tehlikeleri


Program dizannının nasıl olacağını bilmek sizin gereksiz “case” ler ile ilgilenmenizi ortadan kaldıracaktır.
Yapısal testti göz ardı etmeyin. Sözdizimi testtini yapı içerisinde gerçekleştirin.
Yapısal test ile söz dizim testtini birbirine karıştırmak kolaydır dikkat etmek gerekir.

Sözdizimi Test Sürücüleri

Test caseler genellikte bir data olarak saklanır. Bunun için bir program kullanılabilir.
Gereksiz verilerin olduğu “çöp” datalardan oluşan bilgileri bu hazırladığınız test caseleri içerisine almayın.

Tasarım Otomasyonu: İlkel Yöntem

Doğru  bir giriş dizeleri kümesi kapsayan belirtmek ,
için bir kelime işlemci kullanın.
Arama değiştirme alt string değerlerini kullanın.

Tasarım Otomasyonu: Rastgele StringÜreteçleri
Rasgele string içeren diziler ile programa değer vererek programın çalışma durumu değerlendirin.
( Kaba güç ile programı zorlama)


Verimlilik, Eğitim, Etkililik
Söz dizimi testi programları kullanan kişiler için büyük bir güven kaynağı verir.
Yazılım ekibi içersinde yeni başlayan  stajyerlere verilen kolayca bir eğitimi sonrası gerçekleştirile bilir.
Busayede stajer saatte 20-30 test durumları üretebilir.
Sözdizimi test acemi bir tester için inandırıcı mükemmel bir yoldur:
Bu sayede testtin sonsuz bir süreç olduğunu.
Hangi testlerin önce yapılması gerektiğini bilir.

Test Strateji

(Azdan çoğa yaklaşımı)
Girdi dizesinin tüm diğer bileşenleri doğru tutarak, her seferinde bir hata oluşturun.
Testleri komple bir set olarak belirleyin bu işlemin ardından. İkili üçlü hata setleri ile 1. adımdaki aşamayı tekrarlayın...
Her seferinde bir düzeye odaklanın bu odak seviyesini başlangıçta düşük tutarak adım adım yükseltin.


Örnek1 Telefon numarası
phone_number ::= exchange_part number_part
Boş değer atama
İlk kısmını değiştirme.
İkinci kısmı değiştirme.
İki kısmı birden değiştirme.
Önce birinci kısmı değiştirme ardımdan ikinci kısmı değiştirme.
Önce ikinci kısmı değiştirme ardından birinci kısmı değiştirme.
Yetersiz karakter girilmesi
Çok fazla karakter girilmesi.
Sayısal olmayan karakter girilmesi.
Kontrol karakterlerinin girilmesi.
Özel karakterler girilmesi.
other_digit ::= 2 | 3 | 4 | 5  6 | 7 | 8 | 9
special_digit  ::= 0| 1 | 2 | 5

Sınırlayıcı Hatalar
Sınırlayıcı karakterler bir karakter bittikten sonra diğer karakter arasında kullanılan karakterdir.
Eksik. örnek., (x+y
Yanlış. örnek., (x+y]
Fazla. örnek., (x+y))



Söz dizilimi kaynağı

Tasarımcı Test İşbirliği
Kılavuzlar
Ekranlar
Tasarım Belgeler
Prototip
Programcı Röportajlar
Hacking

Test Case Üretimi Hakkında


Yanlış eylemlerin olası üç türü vardır:
Tanımlama iyi bir dizilimde yapılmamış.
Tanıma kötü bir dizilimde olsa da program tarafından kabul edilmiş.
Tanıma sırasında dizi tanımaları oluşturulmamış.
Gerektiği yerde gerektiği kadar test case üretilmelidir.
Tüm veriler için kullanmaya zaman ve kaynak yoktur.

Syntax Testtinin Adımları

Hedef dilini ve formatını tanımla.
Test ve Debug işlemini gerçekleştir.
Normal koşullarda mimimum gereksinimler ile. Temel testleri gerçekleştir.
Geçersiz verilere karşı sistemi test ed. "çöp" koşullar. (yüksek sonuç)

Bu için bir yazılımda kullanılabilir

Syntax testinin otomatik olarak yapılması gerekmektedir.
Syntax (Söz dizimi) nasıl bulunur?
Her bir veri girişi kendine özgü bir söz dizimine sahiptir.
Yapı içerisinde
Resmen belirlenmiş
Belgesiz
Sadece anladım
Şartnameye test etmek için yaralı çöp değerlerine ihtiyaç duyulabilir.(Farklı değerlerle düzgün bir söz dizilimi yapılıyor mu sorusunu cevaplamak için)


Söz dizilim yapıları ve BNF


| = “or”.
* = “zero or more occurrences”.
+ = “one or more occurrences”.
      
        means “n repetitions of A”.

special_digit       ::= 0 | 1 | 2 | 5
other_digit         ::= 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
ordinary_digit    ::= special_digit | other_digit
exchange_part   ::= ordinary_digit
phone_number   ::= exchange_part number_part

Doğru bir telefon numarası:
4566654, 9904567, 3300000
Yanlış bir telefon numarası:
0551212, 123, 8, ABCDEFG

Neden BNF

BNF şartname kullanma biçimi için doğru bir yapı sağlar. Tasarım testi için kolay bir  yoldur.
Tasarımcıların işlerini kolaylaştır ır.
Bu aşamada doğru veriler ile yanlış verilerin ayrımı yapılana kadar tasarım başlatılmamalıdır.

Milyon Maymun Fenomeni

“A million monkeys sit at a million typewriters for a million years and eventually one of them will type Hamlet!”


“Giriş onaylama düşmanca bir dünyaya karşı ilk savunma hattıdır.”
Iyi bir kullanıcı arayüzü tasarımı çöp verileri sisteme kabul etmez.
İyi bir test farklı çöp değerleri ile yapılan testtir.
Giriş-tolerans testi genellikle sistem testlerin bir parçasıdır .

Varlık-İlişki Modelinin Tablolaştırılması



Örnek-2: Bir müşteri birden fazla otomobile sahip ve her otomobil modeline birden fazla müşteri sahip olabilir. Bu durumda otomobiller ile müşteriler arasındaki ilişki çoktan-çoğa biçimindedir.
Varlık-İlişki Modelinin Tablolaştırılması


ER şemasına uygun olarak aşağıdaki ifadeler yazılabilir:
Müşteri ={Müşteri No, Adı}
    Otomobil ={Oto Model, Renk}
    Sahip ={Müşteri No, Oto Model, Tarih}

Sahip isimli ilişkiye dayanılarak aşağıdaki tablo oluşturulabilir.


Varlık-İlişki Modelinin Tablolaştırılması

Örnek-3: Bir müşteri birden fazla otomobile sahip olabilir. Ancak tersi doğru değildir. Yani bir otomobil modeli iki farklı müşteriye ait olamaz. Bu durumda ER şeması aşağıdaki şekilde çizilebilir.





Varlık-İlişki Modelinin Tablolaştırılması

“Sahip” tablosu ile “Otomobil” tablosu aynı tablo içine birleştirilir.

Müşteri = {Müşteri No, Adı}

Otomobil = {Oto Model, Renk, Müşteri No, Tarih}

Bu durumda “Otomobil” tablosunun görünümü şu şekilde olacaktır:


Varlık-İlişki Modelinin Tablolaştırılması

Örnek-4: Bir müşteri sadece bir otomobil modeli satın alabilmektedir. Aynı biçimde, bir model otomobil sadece bir müşteriye satılabilmektedir. Böyle bir durumda varlık-ilişki modeli aşağıdaki şekilde olabilir:



Varlık-İlişki Modelinin Tablolaştırılması

Yöntem-1: Müşteri varlığı ile otomobil ve sahip ilişki şu şekilde ifade edilebilir:

Müşteri = {Müşteri No, Adı}

Otomobil = {Oto Model, Renk}

Sahip = {Müşteri No, Oto Model, Tarih}

Burada Sahip ilişkisine Müşteri No niteliği anahtar olarak düşünülmüştür.


Varlık-İlişki Modelinin Tablolaştırılması

Bunun yerine Oto Model varlığı da bir anahtar olarak tasarlanabilir:

Sahip = {Müşteri No, Oto Model, Tarih}

Oto Model niteliği anahtar kabul edilerek Sahip isimli ilişki şu şekilde tabloya dönüştürülebilir.



Varlık-İlişki Modelinin Tablolaştırılması

Yöntem-2: Sahip ile Otomobil varlıkları birleştirilerek Otomobil ya da Müşteri tablosu elde edilir.

Sahip ile Otomobil varlıkları birleştirilerek Otomobil tablosu elde edilir.

Müşteri = {Müşteri No, Adı}

Otomobil = {Oto Model, Renk,  Müşteri No,  Tarih}

Sahip ile Müşteri varlıkları birleştirilerek Müşteri tablosu elde edilir.

Müşteri = {Müşteri No, Adı, Oto Model, Tarih}

Otomobil = {Oto Model, Renk}



Varlık-İlişki Modelinin Tablolaştırılması

Yöntem-3: Sahip ile Otomobil ve Müşteri varlıkları bir tablo üzerinde birleştiriliyor. Bu tablonun adı Satış olsun. Bu tablo,

Müşteri = {Müşteri No, Adı, Oto Model, Renk, Tarih} veya

Müşteri = {Müşteri No, Adı, Oto Model, Renk, Tarih} biçiminde olabilir.

Müşteri No niteliğinin anahtar olarak kabul edildiği birinci durum için tablo şu şekilde düzenlenebilir:



Varlık-İlişki Şemaları

Varlık-ilişki modelinde varlıklar ve ilişkileri tanımlamak için aşağıda belirtilen şema öğeleri kullanılır.

İlişki Türlerinin Gösterilmesi

İlişki türleri;

Birden-bire
Birden-çoğa
Çoktan-bire
Çoktan-çoğa

biçiminde tanımlanmıştı. Bu ilişkiler, varlık-ilişki yani ER şemaları ile yandaki şekilde gösterilebilir.


Varlık-İlişki Modelinin Tablolaştırılması

Bir veritabanı, tablolardan oluşur.

Varlık-ilişki şemaları biçiminde çizilen bir veritabanı tablolar halinde gösterilebilir.

Veritabanının her varlık kümesi ve her ilişki kümesi için, bu isimlerle simgelenen birer tablo düzenlenir.


Varlık-İlişki Modelinin Tablolaştırılması

Örnek-1: Aşağıdaki varlık-ilişki şemasını göz önüne alalım. SSK No ve Hesap No alanları anahtar alanlardır.


Bu varlık-ilişki diyagramı aynı zamanda dış model (external model) olarakta adlandırılır.

Varlık-İlişki Modelinin Tablolaştırılması