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/

19 Temmuz 2018 Perşembe

xUnit

xUnit; Nunit'te olduğu açık kaynak kodlu .Net dillerinde çalışan, projelerde birim testlerini yazmak ve yazılın birim testlerin çalıştırmak için geliştirilmiş bir test kütüphanesidir. Nunit'in kurulumuna çok benzer bir şekilde, Visual Studio'da menü çubuğundaki araçlar sekmesinden, uzantılar ve güncelleştirmelere butonuna tıklanıp, program listesinden aratılıp, bulunarak kurulum yapılabilir [1-3].

 
 xUnit Örnek


İçerik Hazırlayan: Mehmet Can Küçük

Kaynaklar:
[1] https://docs.microsoft.com/tr-tr/dotnet/core/testing/unit-testing-with-dotnet-test?
[2] https://medium.com/@selcukusta/xunit-ile-net-core-projelerinde-unit-test-5a1690bc4982?
[3] https://xunit.github.io/docs/comparisons.html?

Nunit

NUnit açık kaynak kodlu .Net platformu içerisindeki bütün dilleri destekleyen, yazılımlara birim testi yapmak için kullanılan bir frameworktür [1]. Visual Studio'da programında bulunan menü çubuğundaki araçlar sekmesinden, uzantılar ve güncelleştirmeler butonuna tıklandığında ortaya çıkan ekrandan aranarak kolayca listeden bulunup proje içerisine eklenebilir [2] .


Nunit Kod Örneği:

İçerik Hazırlayan: Mehmet Can Küçük

[1] http://nunit.org/
[2] http://www.csharpnedir.com/articles/read/?id=564

Selenium

Selenium; 2004 yılında Jason Huggins tarafından geliştirilmiştir, açık kaynak kodlu web sitelerinin testini gerçekleştirmek için oluşturulmuş javascript temelli bir kütüphanedir [1,2].


Selenium Araçları
  • Selenium IDE
  • Selenium Webdriver
  • Selenium Grid
  • Selenium Remote Control

Selenium IDE
Selenium IDE,  web tabanlı uygulamaların kolay bir şekilde browser üzerinde test edebilen bir Firefox eklentisidir. Sahip olduğu platform ve dil desteği (Java, .NET, Python, Ruby, PHP,Perl) nedeniyle oldukça popüler ve tercih edilen bir araçtır [1].



 Selenium WebDriver

Selenium webdriver bir Api'dir. Bu Api ile farklı dillerde (C#, Java, Ruby ve Phyton) test kodları yazılabilir [3]. Selenium webdriver farklı tarayacılarda (Chrome, Firefox, Opera, Internet Explorer vs.) çalışma desteği bulunsada Firefox ile daha sorunsuz olarak çalışmaktadır. 


Selenium Grid 

Selenium Grid testlerin paralel olarak farklı sunucularda, farklı tarayıcılarda ve farklı işletim sistemlerinde çalıştırılması için geliştirilmiş bir araçtır [4].

Selenium IDE Kurulumu
Tavsiye edilen tarayıcı Firefox'tur. Nedeni ise geliştirecileri arasında Firefox vardır.
Eklentinin kurulumu
https://addons.mozilla.org/tr/firefox/addon/selenium-ide/?src=search adresinden eklentimizi Firefox'a ekleyebiliriz. Kurulumdan sonra IDE ikonu tarayıcımızın sağ üstünde gözükecektir.

C# Selenium WebDriver KurulumuSelenium WebDriver, .Net içerisinde Nuget yöneticisinde kurulduğu için, öncelikle .Net üzerinde birim test projesi oluşturmamız gerekir. Proje oluşturulduktan sonra Solution Explorer kısmında sağ tıklayarak Nuget Paket yöneticisini açmamız gerekir. Arama kısmına Selenium yazıyoruz Selenium.WebDriver indiriyoruz kurulum tamamlanıyor. C# Selenium kütüphanelerini projemize eklememiz için "using OpenQA.Selenium; using OpenQA.Selenium.Firefox;" kodlarını kullanarak kullanmamız gereklidir.



Geckodriver Kurulumu

Selenium programının Firefox ile eşgüdümlü olarak çalışması için Geckodriver programının bilgisayara düzgün bir şekilde kurulması gerekmektedir [5].
Kurulum Linki: https://github.com/mozilla/geckodriver/releases
Daha sonra Rar dosyasını masaüstüne çıkarıp bilgisayarımdan sistem özelliklerine gidiniz. Daha sonra gelişmiş sistem ayarlarına gidiniz. Buradan ortam değişkenlerine tıklayınız. Sonrasında Path adlı değişkene Rardan çıkardığınız geckodriver.exe nin yolunu ekleyiniz.







C# Selenium ile www.unclesoftware.com  kullanıcı girişi testi




İçerik Hazırlayan: Mehmet Can Küçük


1 https://www.slideshare.net/Mahmutgndodu/selenium-ile-web-testi
2 https://www.seleniumhq.org/
3 https://medium.com/@cembakca_46615/selenium-web-driver-ba%C5%9Flang%C4%B1%C3%A7-14c8768eb4b0
4 https://www.keytorc.com/blog/selenium-grid-ile-testlerinizi-daha-hizli-kosun_3330/
5 http://www.mahsumakbas.com/tag/selenium-test-otomasyon/