Практические основы тестирования на php Unit-test: понятия, тонкости, пути решения, вопросы для проработки.
PHPUnittest fast start
Разработано http://webgloss.ru
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестовMskDotNet Community
Как помочь тестам находить баги? Что лучше: каждый новый запуск на новом наборе данных или же стабильность? Как сделать тестовые данные эффективными?
В докладе рассматривается Property based подход для написания unit-тестов.
На реальных примерах будет показано то, какими возможностями обладает FsCheck в связке с C#, какие есть плюсы и минусы у данного инструмента и стоит ли тратить время на его изучение.
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестовMskDotNet Community
Как помочь тестам находить баги? Что лучше: каждый новый запуск на новом наборе данных или же стабильность? Как сделать тестовые данные эффективными?
В докладе рассматривается Property based подход для написания unit-тестов.
На реальных примерах будет показано то, какими возможностями обладает FsCheck в связке с C#, какие есть плюсы и минусы у данного инструмента и стоит ли тратить время на его изучение.
Использование юнит-тестов для повышения качества разработкиvictor-yastrebov
В докладе рассмотрены подходы к созданию надежных юнит-тестов, которые просты в поддержке и модернизации, а также принципы создания кода пригодного для покрытия автотестами. Приведены два способа внедрения зависимости: с использованием конструктора тестируемого объекта, а также с использованием подхода "выделить и переопределить". Каждый из способов разобран на примере, демонстрирующем особенности его реализации и применения. Приведен ряд практических советов, нацеленных на создание надежных юнит-тестов. Использование на практике приведенных подходов и принципов позволяет упростить процесс поддержки и модификации существующего кода, а также дает уверенность в надежности работы добавляемого нового функционала. В конечном итоге это приводит к повышению качества разрабатываемого продукта.
Оптимизация трассирования с использованием Expression templatesPlatonov Sergey
В докладе будет рассказано о тех фундаментальных причинах, приводящих к неоптимальному коду в продукте, будет предложен подход, лишённый найденных недостатков.
Докладываемый подход опирается на технологию Expression Templates, которая позволяет уменьшить количество действий и объём ресурсов, которые требуются для выполнения неких промежуточных действий в процессе формирования каждой записи в журнал. Эта технология используется для уменьшения количества промежуточных операций при вычислении сложных математических выражений. Новизна докладываемого подхода в том, что тот же самый принцип, на котором основана технология Expression Templates можно применить для того, чтобы целенаправленно исключить те промежуточные действия, которые в конечном итоге приводят к неоптимальному коду.
Завершается доклад обсуждением полученного эффекта, путей возможного дальнейшего развития и возможностей применения этой же технологии в других задачах.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms for those who already suffer from conditions like anxiety and depression.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms for those who already suffer from conditions like anxiety and depression.
This one-sentence document contains a series of repeating characters from 1938 to infinity. It appears to be conveying the concept of perpetuity or eternity through the use of an infinite sequence of characters without beginning or end.
Использование юнит-тестов для повышения качества разработкиvictor-yastrebov
В докладе рассмотрены подходы к созданию надежных юнит-тестов, которые просты в поддержке и модернизации, а также принципы создания кода пригодного для покрытия автотестами. Приведены два способа внедрения зависимости: с использованием конструктора тестируемого объекта, а также с использованием подхода "выделить и переопределить". Каждый из способов разобран на примере, демонстрирующем особенности его реализации и применения. Приведен ряд практических советов, нацеленных на создание надежных юнит-тестов. Использование на практике приведенных подходов и принципов позволяет упростить процесс поддержки и модификации существующего кода, а также дает уверенность в надежности работы добавляемого нового функционала. В конечном итоге это приводит к повышению качества разрабатываемого продукта.
Оптимизация трассирования с использованием Expression templatesPlatonov Sergey
В докладе будет рассказано о тех фундаментальных причинах, приводящих к неоптимальному коду в продукте, будет предложен подход, лишённый найденных недостатков.
Докладываемый подход опирается на технологию Expression Templates, которая позволяет уменьшить количество действий и объём ресурсов, которые требуются для выполнения неких промежуточных действий в процессе формирования каждой записи в журнал. Эта технология используется для уменьшения количества промежуточных операций при вычислении сложных математических выражений. Новизна докладываемого подхода в том, что тот же самый принцип, на котором основана технология Expression Templates можно применить для того, чтобы целенаправленно исключить те промежуточные действия, которые в конечном итоге приводят к неоптимальному коду.
Завершается доклад обсуждением полученного эффекта, путей возможного дальнейшего развития и возможностей применения этой же технологии в других задачах.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms for those who already suffer from conditions like anxiety and depression.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms for those who already suffer from conditions like anxiety and depression.
This one-sentence document contains a series of repeating characters from 1938 to infinity. It appears to be conveying the concept of perpetuity or eternity through the use of an infinite sequence of characters without beginning or end.
This document discusses and compares several popular web browsers: Firefox, Safari, Internet Explorer, and Opera. It provides a brief history of each browser, describes their current state, and compares their strengths, weaknesses, competitors and threats. Firefox is highlighted for its speed, security, and tabbed browsing features, while issues with compatibility and memory are noted. Safari is praised for its speed and design but criticized for limited extensions. Internet Explorer is assessed as improving with regular updates but initially slower. Opera is highlighted for its torrent and content blocking capabilities.
The document describes the process of constructing the front cover, contents page, and double page spread for a magazine. For the front cover, the author cropped an image and added a title, font, and other design elements. For the contents page, the author laid out the page structure and included a title, photo, and listing of stories and their page numbers. For the double page spread, the author included a large edited photo, title, pull quote placed in a window, and accompanying text, along with page numbers and a byline.
Paris Assembly open textbooks 4 Africa Kelsey Wiens
Half of the population is under 19 and it is projected that between 1 and 5 people out of every 100 will be of African descent by 2050. A large school funder in South Africa commissioned school readers but had no formal intellectual property policy. An open education organization called Siyavula released math and science textbooks under a Creative Commons license for grades 10-12 that were approved by the Department of Basic Education. These open textbooks led to positive educational outcomes.
This document contains scenic designs and plans for the play Medea including a scenic model, costumes, a scenic rendering, ground plan, and inspirational visual metaphors and imagery using kudzu to represent the themes of suffocation and loss of control in the play.
Katherine Wu documented her spring break trip in April 2011 where she visited several Northern California landmarks with a friend. They saw the Chandelier Tree, Point Cabrillo Lighthouse, Berkeley Botanical Garden, and Lawrence Hall of Science. At the botanical garden, Wu took photos of flowers, enjoyed the spring blooms, and found a unique blue-green flower that became her favorite.
Dokumen menjelaskan tentang rukun-rukun dan kewajiban haji serta larangan-larangan saat berihram. Terdapat enam rukun haji utama yaitu thawaf, sa'i, tahallul, tertib, bermalam di Muzdalifah, dan melempar jumrah. Jika ada pelanggaran terhadap larangan-larangan saat berihram akan dikenakan sanksi berupa membayar dam.
The document provides a review of trigonometric ratios such as sine, cosine, and tangent that are used to solve problems involving right triangles, includes examples of applying these ratios to solve practice problems involving missing side lengths and angle measures, and reviews special right triangles and the SOH CAH TOA method for remembering the trigonometric functions.
The document discusses opportunities and challenges around OpenUCT, an initiative at the University of Cape Town (UCT) to make university courses and educational resources openly available online. It identifies three main stakeholders - UCT, academics, and students. For each group, it outlines potential benefits, such as improving visibility of research for UCT, promoting collaboration among peers for academics, and increasing access to courses for students. However, it also discusses challenges, such as ensuring resources meet open standards, questions about institutional ownership, and overcoming technological barriers. It provides examples from the University of Malawi on successfully implementing open educational resources with local support and identifying clear benefits.
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Andrey Rebrov
Как-то так происходит, что “на 10 девчонок по статистике 9 ребят”, а точнее на группу из 5-7 разработчиков – 1 тестировщик. Или его нет совсем. Так что очень часто приходится и код писать, и тестировать, а дата релиза все ближе и ближе.
В тех случаях, когда мы пишем веб-приложение, помочь в нашей нелегкой судьбе может бодрящий микс из Selenium и TestNG... Как это сделали мы, какие потом получили выводы и результаты — все это я и хочу рассказать и показать
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgIT61
Вячеслав Марков, QA engineer в Weezlabs
Я расскажу о том, как в нашей фирме организовано тестирование бэкенда с помощью тестового фреймворка TestNG и Java. Расскажу о data-driven тестировании и о том, почему его удобно применять. Покажу и опишу разработанную нами структуру типового тестового проекта. Представлю применяемые нами способы сбора и документирования результатов, а так же их анализ в условиях CI.
ASP.NET MVC - как построить по-настоящему гибкое веб-приложениеAlexander Byndyu
В докладе рассматривается использование популярных фреймворков в разработке ASP.NET MVC приложения, как сделать его наиболее гибким. Будет затронута тема минимизации дублирования и повторное использование кода, применение методов метапрограммирования отображений; уменьшение логики в контроллерах; применение принципов SOLID и GRASP для разработки доменной модели приложения.
По материалам конференции .NET разработчиков http://www.dotnetconf.ru/Materialy/Asp_net_mvc_kak_postroit_gibkoe_web_prilozenie
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...Timur Shemsedinov
Примеры кода приложений и конфигурации сервера с доступом к файлам, памяти, базам данных и параллельной асинхронной обработкой различных типов API запросов с состоянием и без состояния.
анализ кода: от проверки стиля до автоматического тестированияRuslan Shevchenko
Рассказ о истории и использовании в реальной жизни инструментов анализа кода на основе JavaChecker и TermWare
Сопустствующий текст: http://datacenter.gradsoft.ua/files/articles/OSDN2011/
QA Fest 2017. Яна Кокряшкина. Интеграция автоматизированных тестов с инструме...QAFest
Как автоматически поставить тест кейсу статус "Pass", создать новый или зактрыть проверенный баг? Во время презентации расскажу как интегрировать автоматизированные тесты с инструментами для тестирования. Покажу рельные примеры совместной работы автоматизированных тестов для веб сайта, написаных на Java или Python, с YouTrack, TestRail и EasyQA.
«JSSDK: Начало» Когда использовать готовые решения, а когда писать самим. Какие шаги нужно сделать, чтобы ваша работа не оказалась напрасной и принесла пользу окружающим. Все эти нюансы будут рассмотрены на примере внутреннего фреймворка, который возник вследствие необходимости объединения кодовой базы двух проектов.
Сергей Константинов — Что интересного готовит нам W3CYandex
2014 год обещает нам множество интересных нововведений. Помимо новинок в HTML5, нас ждут глобальные изменения в самой веб-платформе. Promises и модули — революция в стандартах разработки стандартов. Service Workers — новый подход к решению проблемы офлайновых веб-приложений. @@create — отнаследуйся от HTMLElement! Обо всём этом и пойдёт речь в докладе.
Мир мобильных телефонов очень сильно изменил нашу жизнь. В наше время невозможно представить современного человека, без этого чудо устройства. На рынке появляется все больше устройств и приложений. И чтобы удобнее пользоваться этими приложениями пользователи выбирают “умные” телефоны, или как их еще принято называть смартфоны. В своем докладе я хочу поделиться своим опытом автоматизации приложений под Android и iOS. Я расскажу о том, какие инструменты автоматизации я использовал. Поговорим о недостатках этих инструментов и какие из них стоит использовать у себя на проекте.
2. Разработка и отладка тестов
IDE
Тест
разрабатывается в
IDE, затем по
средствам IDE тест
заливается на
тестовый сервер
ssh
Пробные запуски
тестов выполняются
на сервере через
ssh.
разработано WebGloss
3. Термины
●
●
сборка - слепок состония системы и тестов
тесткейс (тест)- список действий, переводящих систему из одного состояния в другое, для
получения результата, на основании которого можно сделать вывод о удовлетворении
реализации, поставленным требованиям
разработано WebGloss
4. Термины
●
●
●
●
тестсюит - набор тесткейсов
фикстура - начальный набор данных
пограничные ситуации – случае, когда тестируемый код может работать неверно
тестовое окружение (fixture) - параметры тестируемой среды называются
разработано WebGloss
7. Этапы процесса Unit тестирования
1) Создание теста
2) Вкладка теста в VCS
3) Создание билда в
CI (Continuous
Integration)
разработано WebGloss
8. Этапы процесса Unit тестирования
4) Запуск Unit тестов в
нужном окружении.
5) Просмотр и анализ
результатов.
разработано WebGloss
9. Базовые соглашения
1. Тесты для класса DemoClass содержатся в классе
DemoClassTest.
2. DemoClassTest унаследован (чаще всего) от
PHPUnit_Framework_TestCase.
3. Тесты это публичные методы с именами test* (кроме
этого, можно использовать аннотацию @test в
док-блоке чтобы пометить метод как тест)
4. Внутри тестовых методов для проверки того что
реальные данные соответствуют ожидаемым
используются методы-утверждения (assertion
methods)
разработано WebGloss
10. Межтестовые зависимости
Использвание аннотации @depends для описания
зависимостей
class DependencyFailureTest extends PHPUnit_Framework_TestCase
{
public function testOne()
{
$this->assertTrue(FALSE);
}
/**
* @depends testOne
*/
public function testTwo()
{ }
}
разработано WebGloss
11. Провайдеры данных
Метод провайдера данных должен быть public и возвращать
либо массив массивов либо объект реализующий интерфейс
Iterator
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)
);
}
}
разработано WebGloss
12. Тестирование исключений
С помощью аннотации @expectedException можно
проверить было ли вызвано исключение в тестируемом
коде
class ExceptionTest extends PHPUnit_Framework_TestCase
{
/**
* @expectedException InvalidArgumentException
*/
public function testException()
{
}
}
Дополнительно можно использовать @expectedExceptionMessage и
@expectedExceptionCode в сочетании с @expectedException для проверки
сообщений и кодов исключений.
разработано WebGloss
14. Утверждения (Assertions)
1.
2.
3.
assertEmpty(mixed $actual[, string $message = ''])
assertEquals(mixed $expected, mixed $actual[, string $message = ''])
assertCount($expectedCount, $haystack[, string $message = ''])
Сообщает об ошибке $message если количество элементов в
$haystack не равно $expectedCount.
4.
assertArrayHasKey(mixed $key, array $array[, string $message = ''])
Сообщает об ошибке $message если $array не содержит ключа $key.
assertArrayNotHasKey() утверждает обратное и принимает тот же
набор аргументов
5.
assertXmlStringEqualsXmlString(string $expectedXml, string
$actualXml[, string $message = ''])
6. ...
разработано WebGloss
15. Пример результата теста
phpunit DataTest
class DataTest extends PHPUnit_Framework_TestCase{
PHPUnit 3.7.0 by Sebastian Bergmann.
/**
* @dataProvider provider
...F
*/
public function testAdd($a, $b, $c){
$this->assertEquals($c, $a + $b); Time: 0 seconds, Memory: 5.75Mb
}
public function provider(){
return array(
array(0, 0, 0),
array(0, 1, 1),
array(1, 0, 1),
array(1, 1, 3)
);
}
}
There was 1 failure:
1) DataTest::testAdd with data set #3 (1, 1,
3)
Failed asserting that 2 matches expected
3.
/home/sb/DataTest.php:9
FAILURES!
Tests: 4, Assertions: 4, Failures: 1.
19. Примеры тестов
class ClsUtilsTest extends PHPUnit_Framework_TestCase {
/**
* @var Util
*/
protected $util;
protected function setUp() {
$this->util = Util();
}
public function testToUpper() {
$link = mysql_connect('', '', '');
$this->assertTrue($link, 'Ошибка соединения: ' . mysql_error());
mysql_close($link);
$this->assertEquals($this->util->toUpper('абв'), 'АБВ');
}
public function testToLower() {
$this->assertEquals($this->util->toLower('ABC'), 'abc');
}
public function testCheckEmail() {
$this->assertEquals($this->util->checkEmail('gref@mail.ru'), 'gref@mail.ru');
}
}
разработано WebGloss
20. Неожиданность
По умолчанию, PHPUnit выполняет тесты таким
образом, что изменение глобальных и суперглобальных
переменных:
● $GLOBALS
● $_ENV
● $_POST
● $_GET
● $_COOKIE
● $_SERVER
● $_FILES
● $_REQUEST
не влияет на другие тесты (очищаються)
разработано WebGloss
21. Передача параметров
Варианты:
1.
Статические атрибуты классов
2.
Подход "источник-приемник" с использованием аннотации @depends
public function testEmpty()
return $stack;
}
/**
* @depends testEmpty
3.
*/
public function testPush(array $stack)
Атрибут $sharedFixture доступен во всех объектах классов
разработано WebGloss
22. Вопросы на проработку
1.
2.
3.
4.
5.
PHPUnit_Framework_TestSuite - класс позволяет организовать набор тестов в
иерархическом порядке
Assert`ы самые нужные
Объекты: Mocks, Stubs, Fakes and Spies
Приемочные и модульные тесты, снижение зависимостей
TDD - программирование через тестирование
разработано WebGloss