SlideShare a Scribd company logo
1 of 42
Download to read offline
PHPUnit
Mustafa İlerİ
TEMMUZ'13 -PHPISt
Test Driven Development
Mustafa İLERİ
@mustafaileri
http://tr.linkedin.com/in/mustafaileri
mustafa.ileri@sonsuzdongu.com
http://sonsuzdongu.com/blog
TEST ODAKLI GELİŞTİRME
Kısa gelİştİrme süreçlerİNİN tekrarlarına dayalı bİr yazılım gelİştİrme sürecİdİr.
TEST ODAKLI Gelİştİrme sürecİnİn temelİnde testler vardır.
Kent Beck tarafından ortaya atılmıştır.
TEST ODAKLI GELİŞTİRME Sürecİ
TESTLERİNİZİ YAZIN.
Testlerİ ÇALIŞTIRIP TEST SONUÇLARININ BAŞARISIZ OLDUĞUNU
GÖRÜN (KIRMIZI).
TESTİN GEREKSİNİMLERİNİ YERİNE GETİREN METODLARI
YAZIN.
TEKRAR TESTLERİ ÇALIŞTIRIN VE TESTLERİN BAŞARILI
OLDUĞUNU GÖRÜN (YEŞİL).
KODUNUZU DÜZENLEYİN.
AYNI SÜRECİ TEKRAR EDİN.
1.
2.
3.
4.
5.
6.
BİRİM (UNIT)
GELİŞTİRİLEN YAZILIMIN Test edİLEBİLİR EN KÜÇÜK PARÇASIDIR.
BİRİM TESTLERİ (UNIT TESTS)
BİRİM TESTİ, YAZILIM GelİŞTİRMEDE BİR YAZILIM TASARIMI VE
GELİŞTİRME YÖNTEMİDİR.
BU YÖNTEMDE YAZILIMCI, YAZILIM KODUNU OLUŞTURAN BİRİMLERİN
KULLANIMA HAZIR OLDUĞUNA İKNA OLUR.
NEDENNEDEN bİRİM TEST YAZMALIYIZ?bİRİM TEST YAZMALIYIZ?
KOD KAYNAKLI SORUNLARI DAHA RAHAT BULABİLMEK.KOD KAYNAKLI SORUNLARI DAHA RAHAT BULABİLMEK.
KOD ÜZERİNDE DAHA RAHAT DEĞİŞİKLİK YAPABİLMEYİ SAĞLAMAK.KOD ÜZERİNDE DAHA RAHAT DEĞİŞİKLİK YAPABİLMEYİ SAĞLAMAK.
ENTEGRASYON VE KULLANICI TESTİ SÜREÇLERİNİ DAHA RAHAT GEÇİREBİLMEK.ENTEGRASYON VE KULLANICI TESTİ SÜREÇLERİNİ DAHA RAHAT GEÇİREBİLMEK.
YAZDIĞIMIZ METODLARIN (BİRİMLERİN) KULLANIM ÖRNEĞİNİ SAĞLAMAK.YAZDIĞIMIZ METODLARIN (BİRİMLERİN) KULLANIM ÖRNEĞİNİ SAĞLAMAK.
DAHA İYİ KOD YAZABİLMEK.DAHA İYİ KOD YAZABİLMEK.
KODUN ÇALIŞIP ÇALIŞMADIĞINI BİZ ÇOK İYİ BİLİRİZ!KODUN ÇALIŞIP ÇALIŞMADIĞINI BİZ ÇOK İYİ BİLİRİZ!
YeŞİlİ koruyalım
Kodunuzu göndermeden önce mutlaka tüm testleri çalıştırın.
Whenever you are tempted to type something intoWhenever you are tempted to type something into
a print statement or a debugger expression, writea print statement or a debugger expression, write
it as a test instead.it as a test instead.
Martin FowlerMartin Fowler
bİRİM TEST ÖZELLİKLERİ
➔ HER BİR TEST BİR ÜNİTEYİ (METODU) TEST ETMELİDİR.
➔ BİRİM TESTLERİN BAĞIMLILIKLARI OLMAMALIDIR.
➔ KOLAY YAZILABİLİR, OKUNABİLİR VE ÇALIŞTIRILABİLİR OLMADIR.
➔ BİRİM TEST YAPARKEN GEREKSİNİMLERİ VE TESTE VERİLECEK CEVABI BİLİNİYOR
OLMALIDIR (WHITE BOX TESTING).
ÇOK MUÇOK MU ZAMANZAMAN ALIYOR?ALIYOR?
MICROSOFT VE IBM'İN YAPTIĞI ARAŞTIRMAYA GÖRE TEST YAZMAK,MICROSOFT VE IBM'İN YAPTIĞI ARAŞTIRMAYA GÖRE TEST YAZMAK,
GELİŞTİRME SÜRESİNİGELİŞTİRME SÜRESİNİ %15 - %35%15 - %35UZATIRKENUZATIRKEN
PROJEDEKİ HATA (BUG) SAYISINIPROJEDEKİ HATA (BUG) SAYISINI %40 - %90%40 - %90AZALTIYOR.AZALTIYOR.
PHPUNITPHPUNIT
SEBASTIAN BERGMANNSEBASTIAN BERGMANN TARAFINDAN PHP İLE GELİŞTİRİLMİŞ
BİR BİRİM TEST “FRAMEWORK”ÜDÜR. XUNIT AİLESİNDEN
TÜREMİŞTİR.
https://github.com/sebastianbergmann/phpunit/
http://phpunit.de/manual/3.8/en/installation.htmlhttp://phpunit.de/manual/3.8/en/installation.html
PHPUNIT GEREKSİNİMLERİ VE YÜKLEME
PHPUNIT 3.7 GEREKSİNİMLER
MIN PHP 5.3.3 ÖNERİLEN PHP 5.4.7
PHPUNIT 3.8 GEREKSİNİMLER
PHP 5.4.7
YÜKLEME
PEAR
pear config-set auto_discover 1
pear install pear.phpunit.de/PHPUnit
COMPOSER
{
"require": {
"phpunit/phpunit": "3.8.*"
},
"config": {
"bin-dir": "/usr/local/bin/"
}
}
PHAR
wget http://pear.phpunit.de/get/phpunit.phar
chmod +x phpunit.phar
temel kuralLAR
1. Test sınıfları “PHPUnit_Framework_TestCase” sınıfından türetilmelidir.
2. Test sınıfları “Test“ kelimesi ile biltmelidir.(FooBarTest)
3. Test sınıflarının isimleri ile bulunduğu dosyaların isimleri aynı olmalıdır.(FooBarTest.php)
4. Test metodları “test“ kelimesi ile başlamalıdır (testDemoMethod) veya test “annotation“ı kullanılmalıdır.
5. Test metodları “public“ olmalıdır.
6. Test sınıfları en az 1 adet test metodu içermelidir. Aksi durumda test başarısız olur.
7. Test metodları en az 1 adet onaylama (assertion) içermelidir.
İLKİLK TESTTEST
class DemoTest extends PHPUnit_Framework_TestCaseclass DemoTest extends PHPUnit_Framework_TestCase
{{
public function testDemo()public function testDemo()
{{
$this->assertTrue(true);$this->assertTrue(true);
}}
}}
ONAYLAMA İFADELERİ, BELİRLİ PARAMETRELER İLE TEST EDİLEN BİRİMİN VERDİĞİ
DÖNÜŞ DEĞERİNİ KONTROL ETMEYE YARAR.
public function testArrayHasKey()
{
$this->assertArrayHasKey('foo', array('bar' => 'baz'));
}
Failed asserting that an array has the key 'foo'.
FAIL!
public function testArrayHasKey()
{
$this->assertArrayHasKey('bar', array('bar' => 'baz'));
}
SUCCESS!
ONAYLAMA İFADELERİ (ASSERTIONS)
assertArrayHasKey()
assertClassHasAttribute()
assertClassHasStaticAttribute()
assertContains()
assertContainsOnly()
assertContainsOnlyInstancesOf()
assertCount()
assertEmpty()
assertEqualXMLStructure()
assertEquals()
assertFalse()
assertFileEquals()
assertFileExists()
assertGreaterThan()
assertGreaterThanOrEqual()
assertInstanceOf()
assertInternalType()
assertJsonFileEqualsJsonFile()
assertJsonStringEqualsJsonFile()
assertJsonStringEqualsJsonString()
assertLessThan()
assertLessThanOrEqual()
assertNull()
assertObjectHasAttribute()
assertRegExp()
assertStringMatchesFormat()
assertStringMatchesFormatFile()
assertSame()
assertSelectCount()
assertSelectEquals()
assertSelectRegExp()
assertStringEndsWith()
assertStringEqualsFile()
assertStringStartsWith()
assertTag()
assertThat()
assertTrue()
assertXmlFileEqualsXmlFile()
assertXmlStringEqualsXmlFile()
AssertXmlStringEqualsXmlString()
ONAYLAMA İFADELERİ (ASSERTIONS)
PHPUNIT, FARKLI DURUMLARIN DOĞRULUĞUNU KONTROL ETMEK İÇİN ÇOK SAYIDA
DOĞRULAMA İFADESİ SAĞLAR.
http://phpunit.de/manual/3.8/en/writing-tests-for-phpunit.html#writing-tests-for-phpunit.assertions
ONAYLAMA İFADELERİ (ASSERTIONS)
KENDİ DOĞRULAMA İFADELERİNİZİ YAZABİLİRSİNİZ.
/**
* Assert response code
*
* @param int $code
* @param string $message
* @return void
*/
public function assertResponseCode($code, $message = '')
{
$this->_incrementAssertionCount();
require_once 'Zend/Test/PHPUnit/Constraint/ResponseHeader.php';
$constraint = new Zend_Test_PHPUnit_Constraint_ResponseHeader();
$response = $this->response;
if (!$constraint->evaluate($response, __FUNCTION__, $code)) {
$constraint->fail($response, $message);
}
}
BİR TEST İÇİNDEBİR TEST İÇİNDE BİRDEN FAZLA ONAYLAMA İFADESİBİRDEN FAZLA ONAYLAMA İFADESİ KULLANABİLİRSİNİZ.KULLANABİLİRSİNİZ.
TESTİN BAŞARILI OLABİLMESİ İÇİNTESTİN BAŞARILI OLABİLMESİ İÇİN BÜTÜN ONAYLAMA İFADELERİ SAĞLANMALIDIRBÜTÜN ONAYLAMA İFADELERİ SAĞLANMALIDIR..
ONAYLAMA İFADELERİ (ONAYLAMA İFADELERİ (ASSERTIONSASSERTIONS))
Annotations
PHPUNIT, “annotatıon” KULLANARAK AÇIKLAMA SATIRINDA TEST METODU İÇİN
BELLİ DEKLARASYONLAR YAPMAYI DESTEKLER.
@author
@backupGlobals
@backupStaticAttributes
@codeCoverageIgnore*
@covers
@coversNothing
@dataProvider
@depends
@expectedException
@expectedExceptionCode
@expectedExceptionMessage
@group
@outputBuffering
@preserveGlobalState
@requires
@runTestsInSeparateProcesses
@runInSeparateProcess
@test
@testdox
@ticket
http://phpunit.de/manual/3.8/en/appendixes.annotations.html
DATA PROVIDER
“@dataprovider providerMethodName” şeklinde belirtilir ve test
için kullanılacak verileri dizi olarak sağlar.
class DataTest extends PHPUnit_Framework_TestCase
{
/**
* @dataProvider provider
*/
public function testAdd($a, $b, $c)
{
$this->assertEquals($c, $a + $b);
}
public function provider()
{
return array(
array(0, 0, 0),
array(0, 1, 1),
array(1, 0, 1),
array(1, 1, 3)
);
}
1) DataProviderTest::testAdd with data set #3 (1, 1, 3)
Failed asserting that 2 matches expected 3.
Depends
“@depends dependedMethodName” şeklinde belirtilir ve test
metodları arasındaki bağımlılıkları belirtir.
class DependencyTest extends PHPUnit_Framework_TestCase
{
public function testEmpty()
{
$stack = array();
$this->assertEmpty($stack);
return $stack;
}
/**
* @depends testEmpty
*/
public function testPush(array $stack)
{
array_push($stack, 'foo');
$this->assertEquals('foo', $stack[count($stack)-1]);
$this->assertNotEmpty($stack);
return $stack;
}
}
EXPECTED EXCEPTION / CODE
“@expectedException NotFoundException” şeklinde kullanılır ve beklenilen hata türü
belirlenir.
“@expectedExceptionCode 100” şeklinde kullanılır ve beklenilen hata kodu belirlenir.
“@expectedExceptionMessage Right Message” şeklinde kullanılır ve beklenilen hata mesajı
belirlenir.
class ExceptionTest extends PHPUnit_Framework_TestCase
{
/**
* @expectedException InvalidArgumentException
* @expectedExceptionCode 20
* @expectedExceptionMessage Right Message
*/
public function testExceptionHasRightCode()
{
throw new InvalidArgumentException('Right Message', 20);
}
}
TAKLİT NESNELERİTAKLİT NESNELERİ
((MOCK OBJECTSMOCK OBJECTS))
Testİn Yazıldığı BİRİMDE bulunan bağımlıTestİn Yazıldığı BİRİMDE bulunan bağımlı
nesneler GİBİ davranan taklİt nesnelerİDİR.nesneler GİBİ davranan taklİt nesnelerİDİR.
TEMEL AMAÇ;TEMEL AMAÇ; DIŞA BAĞIMLILIĞI KALDIRMAKDIŞA BAĞIMLILIĞI KALDIRMAK VEVE
TESTLERİN İZOLASYONUNUTESTLERİN İZOLASYONUNU SAĞLAMAK.SAĞLAMAK.
GENELDE VERİTABANI, MAıL CLIENT VE WEBGENELDE VERİTABANI, MAıL CLIENT VE WEB
SERVİSLER İÇİN KULLANILIR.SERVİSLER İÇİN KULLANILIR.
TAKLİT NESNELERİ (TAKLİT NESNELERİ (MOCK OBJECTSMOCK OBJECTS))
<?php
class Service_User
{
...
public function setUserModel($model)
{
$this->_userModel = $model;
}
...
public function getBankAccountByUserId($userId)
{
$bankAccount = $this->_userModel->getBankAccountByUserId($userId);
(is_array($bankAccount) && sizeof($bankAccount > 0))
? $this->setServiceResponseData($bankAccount)
: $this->setServiceResponseError
('bankAccount', 'Bank account cannot be found.');
return $this->getServiceResponse();
}
...
TAKLİT NESNELERİ (MOCK OBJECTS)
<?php
class Model_User
{
...
public function getBankAccountByUserId($userId)
{
$select = $this->db()->select()
->from(array('BA' => 'bankAccount'))
->join(array('B' => 'bank'),
'B.id = BA.bankId')
->where('userId = ?', $userId);
return $this->db()->fetchRow($select);
}
...
}
TAKLİT NESNELERİ (TAKLİT NESNELERİ (MOCK OBJECTSMOCK OBJECTS))
<?php
class UserServiceTest extends Zend_Test_PHPUnit_ControllerTestCase
{
public function testGetBankAccountByUserId()
{
$userService = new Service_User();
$mockOfModel = $this->getMock('Model_User');
$mockOfModel->expects($this->once())
->method('getBankAccountByUserId')
->with(0)
->will($this->returnValue(array(1, 2, 3, 4, 5)));
$userService->setUserModel($mockOfModel);
$serviceResponse = $userService->getBankAccountByUserId(0);
if ($serviceResponse->getSuccess()) {
$this->assertTrue(is_array($serviceResponse->getData()));
} else {
$this->assertTrue(false);
}
}
}
PHPUNIT EKLENTİLERİ
DBUNIT
pear install phpunit/DbUnit
"phpunit/dbunit": ">=1.2"
Veritabanı etkileşimlerini test etmeye yarar.
INVOKER
pear install phpunit/PHP_Invoker
"phpunit/php-invoker": "*"
Zaman aşımı durumlarını test etmeye yarar.
SELENIUM
pear install phpunit/PHPUnit_Selenium
"phpunit/phpunit-selenium": ">=1.2"
PHPUnit için Selenium RC entegrasyonu sağlar.
XHProf
pear install phpunit/PHPUnit_TestListener_XHProf
Test edilen kodu otomatik olarak analiz eder.
http://phpunit.de/manual/3.8/en/installation.html
Command Lıne Tool
Bir yapılandırma dosyanız var ise, testler phpunit komutu ile çalıştırılır.
Yapılandırma dosyanız yok ise yardım için phpunit yazmanız yeterli.
phpunit DependencyTest
phpunit DependencyTest.php
➜ tests phpunit DependencyTest
PHPUnit 3.7.19 by Sebastian Bergmann.
...SFI.E.
Time: 0 seconds, Memory: 5.50Mb
OK (3 tests, 5 assertions)
(.) ➜ Test başarılı
(F) ➜ Test başarısız
(S) ➜ Test değerlendirmeye alınmadı
(I) ➜ Test henüz tamamlanmamış $this->markTestIncomplete();
(E) ➜ Hata oluşma durumu
http://phpunit.de/manual/3.8/en/textui.html
Code Coverage
Code Coverage, yazılan testlerin, projenizdeki kodların ne kadarını kapsadığını ölçümler
ve raporlar.
Fakat bunun için xDebug'ın kurulu olması gerekmektedir.
PHPUnit, bu raporu HTML olarak oluşturabilir.
Code Coverage sürekli yapılan geliştirmelerde kodunuzun güvenirliği üzerindeki değişimi
rahatça görebilmenizi sağlar.
Code Coverage
Code Coverage
Code Coverage
Code Coverage
Phpunıt Yapılandırması
Testlerin genel yapılandırması bir xml dosyası ile belirlenebilir.
testsuites: Test paketleri oluşturulmasını sağlar.
groups: Testlere dahil edilecek veya çıkarılacak gruplar belirlenir.
filter: Code Coverage'a dahil edilecek veya hariç tutulacak birimler belirlenebilir.
phpunit.xml
<phpunit bootstrap="./bootstrap.php" colors="true">
<testsuite name="Application Test Suite">
<directory>./application</directory>
</testsuite>
<testsuite name="Library Test Suite">
<directory>./library</directory>
</testsuite>
<filter>
<blacklist>
<directory suffix=".php">/usr/lib/php/pear/Zend</directory>
</blacklist>
</filter>
</phpunit>
http://phpunit.de/manual/3.8/en/appendixes.configuration.html
Test tİPLERİ
BİRİM TEST
ENTEGRASYON TESTİ
SİSTEM TESTİ
KULLANICI KABUL TESTİ
➜➜➜
ENTEGRASYON TESTİ
ASLINDA BİRİM TESTİN BİR TÜRÜDÜR.
BİRİM TEST, BİRİMİ TEST EDERKEN; ENTEGRASYON TESTİ BERABER ÇALIŞAN
BİRİMLERİ, MODÜLLERİ TEST EDER.
1. BİLEŞEN TESTİ: SADECE BİR BİLEŞENİ TEST EDER. DIŞA BAĞIMLILIKLAR İÇİN
TAKLİT NESNELERİ (MOCK OBJECTS) KULLANILIR.
2. ENTEGRASYON TESTİ: BİR VEYA BİRDEN FAZLA BİLEŞENİ TEST EDER. İHTİYAÇ
DUYULMASI DURUMUNDA DIŞA BAĞIMLI BİLEŞENLERE ERİŞEBİLİR.
SİSTEM TESTİ
YAZILIM VE DONANIM SİSTEMLERİNİN ENTEGRE EDİLMESİYLE, SİSTEMİN
BEKLENEN ŞARTLARA UYGUNLUĞUNUN TEST EDİLMESİDİR.
YAZILIM PERFORMAS TESTİ
YÜK TESTİ
UYUMLULUK TESTİ
STRES TESTİ
ÖLÇEKLENEBİLİRLİK TESTİ
VS...
KULLANICI KABUL TESTİ
GELİŞTİRİLEN YAZILIMın, SON KULLANICININ BEKLENTİLERİNİ KARŞILAYIP
KARŞILAYAMADIĞINI TEST EDER.
ÖNCEDEN TANIMLANMIŞ TEST SENARYOLARININ DOĞRULUĞUNU KONTROL EDer.
KULLANICI KABUL TESTİ, TEST UZMANLARI TARAFINDAN GERÇEKLEŞTİRİLİR.
SON KULLANICI TESTLERİ BEHAT VEYA SELENIUM KULLANARAK OTOMATİZE
EDİLEBİLİR.
kaynaklar
http://www.slideshare.net/lemiorhan/the-engines-of-software-development-testing-and-test-driven-development
http://www.slideshare.net/markstory/phpunit-and-you?from_search=10
http://www.slideshare.net/mjlivelyjr/automated-unit-testing?from_search=38
http://www.slideshare.net/ferca_sl/unit-testing-with-phpunit?from_search=47
http://www.cihataltuntas.com/test-driven-development/
http://en.wikipedia.org/wiki/Test-driven_development
http://en.wikipedia.org/wiki/Software_testing
Resimler
http://diogoosorio.com/blog/entry/test-driven-development-tdd-using-phpunit
http://elberling.dk/advertising-illustrations/crash-test-dummy-head-038/
http://www.thesaleslion.com/massive-blog-growth-havetime-takes/
http://amyshirateitel.com/2011/12/17/vintage-space-fun-fact-gene-kranzs-vest/
http://toutelaculture.com/arts/folk-rock-et-protest-songs-dylan-sexpose-a-la-cite-de-la-musique/
http://www.ahawallpaper.com/the-ring-two/1280x1024-0-773500.html
http://www.movievortex.com/2009/11/fight-clubs-blu-ray-debut-contains-surprise/
http://commons.wikimedia.org/wiki/File:Martin_Fowler_-_Swipe_Conference_2012_.jpg
http://www.freegreatpicture.com/green-sky/grass-material-15815
sorularsorular

More Related Content

What's hot

Çaylak Javacılara Yol Haritası
Çaylak Javacılara Yol HaritasıÇaylak Javacılara Yol Haritası
Çaylak Javacılara Yol Haritası
Murat Can ALPAY
 
Oylg2013 web uygulamalari sizmatesti
Oylg2013 web uygulamalari sizmatestiOylg2013 web uygulamalari sizmatesti
Oylg2013 web uygulamalari sizmatesti
Mehmet Ince
 

What's hot (20)

Web Application Testing
Web Application Testing Web Application Testing
Web Application Testing
 
Test Driven Development
Test Driven Development Test Driven Development
Test Driven Development
 
Jasminebdd
JasminebddJasminebdd
Jasminebdd
 
PhpSpec ve TDD
PhpSpec ve TDDPhpSpec ve TDD
PhpSpec ve TDD
 
Çaylak Javacılara Yol Haritası
Çaylak Javacılara Yol HaritasıÇaylak Javacılara Yol Haritası
Çaylak Javacılara Yol Haritası
 
Java 1
Java 1Java 1
Java 1
 
Selenium sunum
Selenium sunumSelenium sunum
Selenium sunum
 
Test Güdümlü Geliştirme ve Birim Testler
Test Güdümlü Geliştirme ve Birim TestlerTest Güdümlü Geliştirme ve Birim Testler
Test Güdümlü Geliştirme ve Birim Testler
 
Selenium
SeleniumSelenium
Selenium
 
Visual Studio Developer Tools
Visual Studio Developer ToolsVisual Studio Developer Tools
Visual Studio Developer Tools
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Clean Code & Refactoring
Clean Code & RefactoringClean Code & Refactoring
Clean Code & Refactoring
 
Php projelerinde ci_uygulama
Php projelerinde ci_uygulamaPhp projelerinde ci_uygulama
Php projelerinde ci_uygulama
 
Sunum tdd
Sunum tddSunum tdd
Sunum tdd
 
Ozgur web teknolojileri'13
Ozgur web teknolojileri'13Ozgur web teknolojileri'13
Ozgur web teknolojileri'13
 
Devops Kime Lazım? Neden Lazım?
Devops Kime Lazım? Neden Lazım?Devops Kime Lazım? Neden Lazım?
Devops Kime Lazım? Neden Lazım?
 
Oylg2013 web uygulamalari sizmatesti
Oylg2013 web uygulamalari sizmatestiOylg2013 web uygulamalari sizmatesti
Oylg2013 web uygulamalari sizmatesti
 
progressokulu.com Advanced Business Language Slide 1
progressokulu.com Advanced Business Language Slide 1progressokulu.com Advanced Business Language Slide 1
progressokulu.com Advanced Business Language Slide 1
 
DevOps Pratikleri ile Yazılım Dünyasında Neler Değişiyor?
DevOps Pratikleri ile Yazılım Dünyasında Neler Değişiyor?DevOps Pratikleri ile Yazılım Dünyasında Neler Değişiyor?
DevOps Pratikleri ile Yazılım Dünyasında Neler Değişiyor?
 
Gradle ile Proje Insası
Gradle ile Proje InsasıGradle ile Proje Insası
Gradle ile Proje Insası
 

Similar to Php unit ve tdd

Web Uygulamalarında Kaynak Kod Analizi - 1
Web Uygulamalarında Kaynak Kod Analizi - 1Web Uygulamalarında Kaynak Kod Analizi - 1
Web Uygulamalarında Kaynak Kod Analizi - 1
Mehmet Ince
 
Açikkaynak
AçikkaynakAçikkaynak
Açikkaynak
eturkay
 
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleri
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleriVisual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleri
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleri
Murat Başeren
 

Similar to Php unit ve tdd (20)

ASP.Net MVC ile Web Uygulamaları -12(Test Drive Developmet)
ASP.Net MVC ile Web Uygulamaları -12(Test Drive Developmet)ASP.Net MVC ile Web Uygulamaları -12(Test Drive Developmet)
ASP.Net MVC ile Web Uygulamaları -12(Test Drive Developmet)
 
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 3
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 3Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 3
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 3
 
Web Uygulamalarında Kaynak Kod Analizi - 1
Web Uygulamalarında Kaynak Kod Analizi - 1Web Uygulamalarında Kaynak Kod Analizi - 1
Web Uygulamalarında Kaynak Kod Analizi - 1
 
In Turkish: Yazılım Test-Kod Mühendisliği (YTKM): Kaliteli Test-Kodu Geliştir...
In Turkish: Yazılım Test-Kod Mühendisliği (YTKM): Kaliteli Test-Kodu Geliştir...In Turkish: Yazılım Test-Kod Mühendisliği (YTKM): Kaliteli Test-Kodu Geliştir...
In Turkish: Yazılım Test-Kod Mühendisliği (YTKM): Kaliteli Test-Kodu Geliştir...
 
Jmeter
JmeterJmeter
Jmeter
 
Açikkaynak
AçikkaynakAçikkaynak
Açikkaynak
 
Yazilim Projelerinde Test Sureci
Yazilim Projelerinde Test SureciYazilim Projelerinde Test Sureci
Yazilim Projelerinde Test Sureci
 
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleri
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleriVisual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleri
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleri
 
Windows 7 Ortamında Zararlı Yazılım Analizi
Windows 7 Ortamında Zararlı Yazılım AnaliziWindows 7 Ortamında Zararlı Yazılım Analizi
Windows 7 Ortamında Zararlı Yazılım Analizi
 
Silk Test Framework Kurulumu ve Yazılım Test Otomasyon Mimarisine Giriş
Silk Test Framework Kurulumu ve Yazılım Test Otomasyon Mimarisine GirişSilk Test Framework Kurulumu ve Yazılım Test Otomasyon Mimarisine Giriş
Silk Test Framework Kurulumu ve Yazılım Test Otomasyon Mimarisine Giriş
 
Web İçin Teknoloji Geliştirmek
Web İçin Teknoloji GeliştirmekWeb İçin Teknoloji Geliştirmek
Web İçin Teknoloji Geliştirmek
 
Teste bakıs v01
Teste bakıs v01Teste bakıs v01
Teste bakıs v01
 
EXPLOIT POST EXPLOITATION
EXPLOIT POST EXPLOITATIONEXPLOIT POST EXPLOITATION
EXPLOIT POST EXPLOITATION
 
45965 php-source-code-analysis
45965 php-source-code-analysis45965 php-source-code-analysis
45965 php-source-code-analysis
 
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş SüreciASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
 
50 Soruda Yazılım Testi
50 Soruda Yazılım Testi50 Soruda Yazılım Testi
50 Soruda Yazılım Testi
 
Mes Scada ERP Entegrasyonu
Mes Scada ERP EntegrasyonuMes Scada ERP Entegrasyonu
Mes Scada ERP Entegrasyonu
 
Mes Scada ERP Yazılımı
Mes Scada ERP YazılımıMes Scada ERP Yazılımı
Mes Scada ERP Yazılımı
 
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 1
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 1Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 1
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 1
 
Wordpress Nereye Koşuyor?
Wordpress Nereye Koşuyor?Wordpress Nereye Koşuyor?
Wordpress Nereye Koşuyor?
 

Php unit ve tdd