Magento digital store theme has built specially for selling digital items like mobiles, tablet, computer, camera, ..etc. The digital market is expanding widely like running a mobile world
http://cmsmart.net/magento-themes/magento-digital-store-theme
L'associazione Maremmans lancia un concorso dedicato ai ragazzi delle scuole superiori di Grosseto e alla Maremma. Un nuovo racconto dell'identità maremmana affidato ai giovani per un nuovo punto di vista su un territorio meraviglioso.
Magento digital store theme has built specially for selling digital items like mobiles, tablet, computer, camera, ..etc. The digital market is expanding widely like running a mobile world
http://cmsmart.net/magento-themes/magento-digital-store-theme
L'associazione Maremmans lancia un concorso dedicato ai ragazzi delle scuole superiori di Grosseto e alla Maremma. Un nuovo racconto dell'identità maremmana affidato ai giovani per un nuovo punto di vista su un territorio meraviglioso.
07 - vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...Igor Bronovskyy
07 - Висновки з TDD, погляд початківця - Віталій Зінченко - IT Event 2013 (5)
Буде розглянуто підхід розробки програмного забезпечення та тестів, який дозволить досягти наступних цілей:
- глибокий та детальний аналіз вимог;
- одне розуміння функціональності продукту для усіх членів команди;
- хороша взаємодія між командами розробників та тестувальників;
- високий рівень покриття продукту тестами;
- скорочення часу необхідного для тестування;
Результатом виконання перелічених пунктів стане налагоджений процес розробки продукту, порозуміння між учасниками команди і найголовніше - якісне ПЗ.
Віталій Зінченко
http://itevent.if.ua/lecture/visnovki-z-tdd-poglyad-pochatkivtsya
"How I don't need a state management library in React app", Tetiana Melnyk Fwdays
A short compilation of my own experience with state management in React applications, or how I went from loving Redux to not using it at all, and do not regret it.
2. - Трохи історії
- Інсталяція PHPUnit
- Структура тесту
- Asserts
- Написання Тестів
- Data Providers
- Mock Objects
- Трохи про TDD
- Два слова про BDD
3. Трохи історії
SUnit - xUnit framework на Smalltalk (Kent Beck)
JUnit - порт xUnit на Java (Kent Beck & Erich Gamma)
PHPUnit - порт xUnit на PHP (Sebastian Bergmann)
SimpleTest - конкурет PHPUnit
6. Структура тесту
- Базовий інтерфейс
TestCase/TestSuite implements PHPUnit_Framework_Test
public function run(PHPUnit_Framework_TestResult $result);
- Запуск
$test->run($result):
$result->run($test):
$test->setUpBeforeClass() //once per class
$test->setUp()
$test->runTest()
$test->tearDown()
$test->tearDownAfterClass() //once per class
7. Структура тесту
- Інтерфейс suite`a
PHPUnit_Framework_TestSuite implements IteratorAggregate
- Запуск тестів з suite’а
foreach ($suite as $test) {
$test->run();
}
8. Asserts
- TestCase містить 90 методів assert
$this->assertEquals('expected', 'actual', 'custom message');
$this->assertThat('expected',
PHPUnit_Framework_Constraint $constraint, 'custom
message');
- 3 "marked" function
markTestIncomplete();
markTestSkipped();
fail();
10. Написання Тестів
class FirstTest extends PHPUnit_Framework_TestCase
{
public function testFirst()
{
$this->assertTrue(true);
}
}
class FirstTest extends PHPUnit_Framework_TestCase
{
/**
* @test
*/
public function first()
{
$this->assertTrue(true);
}
}
11. Data Providers
public function firstDataProvider()
{
return array(
'empty' => array(''),
'incorrect' => array('@#^&!^#*!#')
);
}
/**
* @test
* @dataProvider firstDataProvider
*/
public function first($data)
{
$this->assertFalse($object->validate($data));
}
17. Трохи про TDD
Простий приклад TDD
Спершу тест:
class EmailTest extends PHPUnit_Framework_TestCase
{
public function testGetDomainFromEmail()
{
$e = new Email();
$this->assertEquals(
'example.com',
$e->getDomainFromEmail('test@examlple.com')
);
}
}
Запускаєм тест. Результат Error.
18. Трохи про TDD
Найпростішим способом заставляєм працювати тест.
Підміняєм реалізацію (Fake It).
class Email
{
public function getDomainFromEmail($email)
{
return 'example.com';
}
}
Зелена плоса. Тест спрацьовує.
19. Трохи про TDD
Рефакторимо. Видаляємо дублювання.
class Email
{
public function getDomainFromEmail($email)
{
return explode('@', $email)[1];
}
}
Зелена плоса. Тест проходить. Метод працює так як нам
потрібно.
20. Трохи про TDD
Ще один приклад
Спершу тест:
class EmailTest extends PHPUnit_Framework_TestCase
{
public function testIsEmailValid()
{
$v = new Validator();
$this->assertTrue(
$v->isEmailValid('test@examlple.com')
);
}
}
Запускаєм тест. Результат Error.
21. Трохи про TDD
Найпростішим способом заставляєм працювати тест.
class Validator
{
public function isEmailValid($email)
{
return true;
}
}
Зелена плоса. Тест проходить.
22. Трохи про TDD
Добавимо більше тестових випадків (Triangulate).
public function isEmailValidDataProvider()
{
return array(
'correct' => array('test@example.com', true),
'incorrect' => array('incorrect', false),
);
}
public function testIsEmailValid($email, $expectedResult)
{
//...
$this->assertEquals($expectedResult, $v->isEmailValid
($email));
}
Запускаєм і на цей раз бачим Fail.
Далі пишемо правильну реалізацію.
23. Трохи про TDD
Якщо код зрозуміло пишіть зразу правильний тест.
(Oblivious Implementation).
24. Два слова про BDD
- Базується на TDD.
- Описує роботу Бізнесу та Девелоперів.
- Бізнес пише специфікації в вигляді тестів або
специфікації генеруються в тести.
- Девелопери пишуть код так щоб всі тести
спрацьовували.
Рішення для PHP:
Codeception
Behat
PHPUnit_Story
25. Матеріали
Книжки:
Kent Beck - XP. Test Driven Development
Martin Fowler - Refactoring: Improving the Design of Existing Code
Лінки:
http://www.phpunit.de/manual/3.8/en/index.html
http://behat.org/
http://codeception.com/
http://getcomposer.org/
http://en.wikipedia.org/wiki/Test-driven_development
http://en.wikipedia.org/wiki/Behavior-driven_development
26. Дякую за увагу!
Андрій Насінник
Копанія:
Magento
Email:
andriy.nas@gmail.com
https://github.com/Nas1k
Skype:
nas_ua