Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Istanbul PHP - TestFest 101

Istanbul PHP - TestFest 101

Istanbul PHP Meetup #20 TestFest 101 sunumu.

#istanbulphp #phptestfest

Avatar for Uğur Erkan

Uğur Erkan

October 18, 2017

Other Decks in Programming

Transcript

  1. PHP TestFest 101 ÖZET # TestFest Nedir # Geliştirme Ortamını

    Nasıl Hazırlarız # PHPT Test Dosyası Hakkında Bilgiler # Yeni Bir PHPT Dosyası Nasıl Oluşturulur # Testleri Nasıl Çalıştırırız # Neler İçin Test Gerekli # Her şey tamam, testi yazdım, ne yapmalıyım?
  2. PHP TestFest 101 # TESTFEST NEDİR Daha önce 2009 ve

    2010 da düzenlenmiş bir etkinlik. 105.000 commit 500 geliştirici. Amaç PHP metod ve sınıflarına test senaryoları oluşturup, PHP’nin gelişim macarasına denge getirmek. PHP Code Coverage’ı %100 görmek! Ödül Var! Test Yaz Luke! Yine production yalan! Olmüyür böyle!
  3. PHP TestFest 101 GELİŞTİRME ORTAMINI NASIL HAZIRLARIZ PHP Git reposu

    üzerinden php/php-src kopyalayıp başlıyoruz. Daha sonra klasik compiler süreci devreye giriyor. ./buildconf ile configure scriptini oluşturuyoruz. ./configure --help komutu ile kullanabileceğiniz derleme seçeneklerinin listesi görebilirsiniz. Kullanmak istediğiniz modülleri dahil etmeniz gerekiyor, minumum kurulumu enable-cli parametresi ile yapabilirsiniz.
 
 ./configure --enable-maintainer-zts --enable-debug --enable-cli Örneğin cURL desteği için --with-curl ekleyebilirsiniz.
  4. PHP TestFest 101 GELİŞTİRME ORTAMINI NASIL HAZIRLARIZ “Thank you for

    using PHP.” mesajını gördüyseniz scripti işlemimiz başarılı, artık make ile derleyebiliriz. make --jobs=(işlemci çekirdek sayınız+1) komutunu yazarak derleme işlemini başlatalım. Tamamlandığında php-src/sapi klasöründe çalışırtırılabilir php sürümü oluşmuş olacak.
  5. PHP TestFest 101 GELİŞTİRME ORTAMINI NASIL HAZIRLARIZ herdphp/docker-phpqa phpt dosyaları

    oluşturmak ve bunları farklı PHP versiyonlarında çalıştırmanızı sağlayan bir Docker wrapper’ı.
 Derleme sürecini Docker imajlarına bırakıyor istediğiniz versiyonu sizin için otomatik olarak kullanılabilir hale getiriyor.
 # Sizin için test dosyasını oluşturabilir. phpqa generate -f ucfirst -b # Son stabil versiyonda test edebilirsiniz phpqa run phpt/examples/closure_061.phpt 
 # İstediğiniz versiyonu belirtebilirsiniz phpqa run phpt/examples/closure_061.phpt 56 
 # Ya da tüm versiyonlarda çalıştırabilir. phpqa run phpt/examples/closure_061.phpt all +
  6. PHP TestFest 101 # PHPT TEST DOSYASI HAKKINDA BILGILER PHP

    komutlarını çalıştırıp, beklenen sonucun oluşturulup oluşturulmadığını kontrol eden basit metin dosyaları. Minimum olarak TEST, FILE ve EXPECT bölümlerinden oluşur. [--DESCRIPTION--] [--CREDITS--] [--SKIPIF--] [--REQUEST--] [--POST-- | --PUT-- | --POST_RAW-- | --GZIP_POST-- | --DEFLATE_POST-- | --GET--] [--COOKIE--] [--STDIN--] [--INI--] [--ARGS--] [--ENV--] --FILE-- | --FILEEOF-- | --FILE_EXTERNAL-- | --REDIRECTTEST-- [--HEADERS--] [--CGI--] [--XFAIL--] [--EXPECTHEADERS--] --EXPECT-- | --EXPECTF-- | --EXPECTREGEX-- | --EXPECT_EXTERNAL (….) [--CLEAN--] Örnek .phpt Şablonu Tüm .phpt Bölümleri
  7. PHP TestFest 101 YENİ BİR PHPT DOSYASI NASIL OLUŞTURULUR Basitçe

    metin dosyanızı açarak oluşturabilirsiniz.
 PHP Extensionları ile ilgili olan testler ext/ dizininde genel testler ise tests/ dizininde yer alıyor.
 --TEST-- --FILE-- --EXPECT-- --CREDITS-- bölümlerini oluşturun.
 
 TEST : Dosyanın yaptığı iş hakkında özet bilgi. FILE : Dosyanın test edeceği PHP kodunun bulunduğu bölüm. EXPECT : FILE bölümünün çalıştığında oluşturması gereken çıktı. CREDITS : Kendi bilgilerinizi paylaşacağınız bölüm.
 Ad Soyad <[email protected]> formatında ve etkinlik boyunca oluşturduğunuz dosyalara #phptestfest2017 #istanbulphp taglerini ekleyerek yazabilirsiniz.
  8. PHP TestFest 101 TESTLERİ NASIL ÇALIŞTIRIRIZ # run-tests.php PHP kaynak

    kodunun kök dizininde bulunan bir PHP script.
 Dizin ya da dosya olarak testleri çalıştırmanızı sağlıyor. sapi/cli/php run-tests.php -P tests/basic/001.phpt 
 # phpqa Bahsettiğimiz güzel tool, istediğiniz sürümde hemen testlerinizi yapıyor. 
 phpqa run dizin/test-dosyaniz.phpt
  9. PHP TestFest 101 NELER İÇİN TEST GEREKLİ PHP Coverage raporları

    üzerinden güncel durumu takip edip, testleri eksik olan eklentileri bulabilirsiniz. Güncel olarak %75'i tamamlanmış http://gcov.php.net Başarısız durumdaki testleri kontrol edip, hatalı ise düzeltebilirsiniz.
  10. PHP TestFest 101 HER ŞEY TAMAM, TESTİ YAZDIM, NE YAPMALIYIM?

    git commit '<3' phpcommunity/phptestfest-php-src reposuna 
 PHP TestFest 2017 - Istanbul PHP UG - { TEST Bölümü içeriği } formatında commit olarak gönderiyoruz.
  11. PHP TestFest 101 TEŞEKKÜRLER Uğur Erkan twitter.com/ugurerkan facebook.com/ugurerkan [email protected] #

    Kaynaklar 1. https://phptestfest.org/tutorials/ 2. http://gcov.php.net/ 3. https://qa.php.net/phpt_details.php 4. http://phpinternalsbook.com/tests/ phpt_file_structure.html 5. https://wiki.php.net/qa/testfest 6. https://github.com/phpcommunity/phptestfest-php-src 7. https://www.sammyk.me/speaking 8. http://www.ericstewart.org/tfvm/