23 Temmuz 2018 Pazartesi

Emma

Java kullanıcıları için oluşturulan bir kod kapsama aracıdır. Eclipse uygulamasında eski versiyonu hazır olarak bulumaktadır. Emma kod kamsama aracının yeni versiyonu ise Eclipse marketten kolaylıkla indirilebilir. Programın en büyük avantajı çalışılan kodu inceleyerek kod kapsaması ve kod kapsama ölçümü yapılabilir.
Emma'nın Sahip Olduğu Özellikler

Hızlı Test Döngüsü: Ayrı pencerelere ve uygulamaya gerek yoktur, kodlar direk analiz edilebilir.
Zengin Kapsama Analizi: Test sonuçları açık bir şekilde kullanıcıya gösterilir.
Kullanım Rahatlığı: Herhangi bir kuruluma veya kod değişikliğine ihtiyaç duyulmaz.



Emma - Hesap Makinesi Örneği

 Test senaryolarımızı oluşturalım
Kodlarımızı kapsayıp sonucu inceleyelim

Emma- String Kod Örneği


Örneğin Açıklaması

Şimdi kod kapsama oranlarının değişimini yakından görmek adına bir örnek inceleyelim.
Bunu bir önceki slayttaki örneğe yeni testler ekleyerek yapalım.
MyUnit classında şöyle bir fonksiyon tanımlayalım.

Fonksiyonumuza ait bir de test case oluşturalım.
Test kapsamını çalıştırıp tablomuzu inceleyelim.


Gördüğümüz gibi testte %36,4 gibi bir başarı oranı var.
Bunun sebebi, kod kapsama işleminde hem true hem de false koşullarının incelenip işlenmesidir.

Şimdi aynı testi bir de ‘false’ yani doğru değer döndürecek şekilde kapsayıp çıkacak değerleri inceleyelim.

Kontrol edilen olumsuz koşul olmadığında %100lük bir kapsama oranı aldık.

Constructor yapısının kullanıldığı bu örneği inceleyelim.
Test sınıfında hayvan nesnesini ve test senaryosunu oluşturalım.

Önceki slaytlardaki kodlar kapsanmış haldeydi. Ve testler başarılı olduğundan yeşil renk ile işaretlenmiş haldeler.
Karmaşıklıktan uzak durmak adına işlemleri fonksiyonlar içinde yazıp daha sonra üstte return ettik.


Sıra test senaryolarını oluşturmakta
 
 

Programda yanlış karakter girilmediği için false durumu çalıştırılmadı.
Bu durum kapsama sonucunda aşağıdaki gibi belirtiliyor.
Dizi Kullanım Örneği
Demo adında oluşturduğumuz sınıfta üç fonksiyon tanımlayalım.
İlk fonksiyon dizinin elemanlarını bir arttırsın.
İkinci fonksiyon elemanların değerini bir azaltsın
Son fonksiyon da her elemanı iki ile çarpsın


Test sınıfını oluşturup senaryoları yazalım

Başarısız olan testlerin gösterimini anlamak adına ‘testAddOneToArray’ testine yanlış değerler verip durumu inceleyelim



İçerik Hazırlayan : Sinan Aktepe

Kaynaklar
http://emma.sourceforge.net/
https://www.eclemma.org/
https://www.jetbrains.com/dotcover/whatsnew/
https://www.atlassian.com/blog/announcements/atlassian-clover-open-source

Resharper - dotCover

.NET için geliştirilmiş ve visual studio içinde menüye kolaylıkla eklenip çalıştırılabilen bir araçtır. Bilgisayarınızda bulunan Visual Studio sürümlerini seçebileceğiniz bir arayüze sahiptir.
Dotcover
 
Resharper

Kurulum


Örnekler
 

Örnek Çalıştırmak İçin
 
Testlerin başarısız yada başarılı olduğunu gösteren ekran

Coverage oranları

String ile ilgili örnekler
Kelime işlem sınıfında;
Kelimenin uzunluğunu gösteren,
Kelime içinden bir bölümü silen
Ve harf değişimini sağlayan fonksiyonlar tanımlayalım.
Daha sonra test senaryolarını yazıp kodlarımızı kapsayalım


 
  
Stringlerle ilgili başka bir örneğe bakalım.

 
Listeler ve Collection Assert

Test initialize ile bir başlangıç durumu oluşturalım ve bu durum üzerine birkaç test oluşturup kapsama işlemini gerçekleştirelim.



İlk testte elemanların sırasını değiştirip sonucu inceleyelim.


Banka Hesap Örneği





İçerik Hazırlayan: Sinan Aktepe


Kaynaklar
https://en.wikipedia.org/wiki/Code_coverage
http://blog.solvepark.com/makale/yazilim-testi-nedir
https://stackoverflow.com/questions/195008/what-is-code-coverage-and-how-do-you-measure-it

Clover

Atlassian tarafından geliştirilmiş,  Java ve Groovy için tasarlanmış ve açık kaynak kodlu olan bir code coverage aracıdır.

FastText

FastText, metin sınıflandırılması için Facebook AI Research ekibi tarafından geliştirilen gensim yapısında bulunan, metinleri veya kelimleri sürekli vektörlere dönüştüren bir kütüphanedir (1).

FastText Nasıl Çalışır?

Yukarıdaki şekilde CBOW & SKIPGRAM yapılarının farklılıkları gösterilmektedir. CBOW modelinde tüm kelimeleri kapsayan bir bakış açısı (seling, these, leather, jacket) ve vektör toplamı bir arada kullanır. SKIPGRAM modelinde ise hedef kelime (fine) verildi ise hedefe rasgele bir yakın kelime kullanarak hedefi belirlemeye çalışır (2) .
 
 Kelimeler arasındaki benzerliği açı yöntemi ile hesaplama formülü yukarıda verilmiştir.


Similarity formülün python kodu yukarıda verilmiştir. Genel olarak FastText ticari alandada önemli olan metin sınıflandırılması üzerine tasarlanmıştır  (Örnek; Spam postalarının tespiti)  FastText diğer metin sınıflandırma yapılarına göre daha hızlı ve performaslı olduğu söylenmektedir (3).

FastText Gereksinimleri

Genel olarak FastText Mac OS ve Linux  dağıtımlarına dayanır. İyi bir compiler (C11) desteğine ihtiyaç olacaktır.Kelime Değerlendirme için    Python 2.6 veya üstü NumPy ve SciPy Python bağlamaları için Python sürüm 2.7 veya 3.4 NumPy ve SciPy  pybind11 (2). Python ile FastText bağlarını(NumPy&SciPy) başarılı bir şekilde kuruduğumuz ve test ettiğimiz en eski dağıtımlardan biri de Debian jessiedir. Windows üzerinde de çalışabilir ama Linux üzerinde daha performanslı ve etkilidir.


FastText Kurulum

Debian üzerinde çalışıtığımız için öncelikle “python-pip” yükleme aracını sisteme kuralım.
debian@linuxpc:~$  sudo apt install python-pip
FastText git clone ile sisteme kurulumu
debian@linuxpc git clone https://github.com/facebookresearch/fastText.git
debian@linuxpc:~$ cd fastText
debian@linuxpc:~/fastText $ pip install

FastText komut satırında örnek kullanımı
debian@linuxpc:~/fastText $ ./fasttext skipgram -input data.txt -output model
FastText Gerçekleştirimi
 

 Yukarıdaki şekilde verilen hedef kelimenin en yakın olanları eğitilmiş modele göre tahmini.

Yukarıdaki örnekte kullanılan veri seti, toplamda 15404'lük sample'a sahiptir. Bunun 12404 adetlik kısmı eğtimi için 3000 adetlik kısmı ise test için ayrılmıştır. Sonrasında cooking.train eğitilmiş dosyası kullanılarak model_cooking adında vektör dosyası oluşturulmuş. Test kısmında model_cooking.bin dosyasını kullanarak daha önceden test için ayrılan veri seti kullanılarak test edilmiştir.

FastText Performansı
FastText'in diğer derin öğrenme yapılarına göre daha performanslı olduğu deneyimlenmiştir. Facebook AI Research tarafından yapılan deneyde bir kaç günlük eğitim süreleri ile eğitilen vektörle üzerinde yapılan araştırmalarda kendini kanıtlamış ve diğer yapılara göre daha yetenekli olduğu saptanmıştır (3).

Metin sınıflandırmasının dışında FastText kelimelerin vektör olarak öğrenmek için de kullanılabilir.
Çeşitli diller üzerinde çalışacak şekilde tasarlanmıştır. FastText, popüler word2vec aracından veya diğer son teknoloji morfolojik sözcük gösterimlerinden daha iyi performans elde edebilir (3).


İçerik Hazırlayan: Yusuf Dede

Kaynaklar
(1) https://fasttext.cc/docs/en/support.html
(2) https://github.com/facebookresearch/fastText
(3) https://research.fb.com/fasttext/