Перейти к содержимому

Фотография

Тестирование с помощью PHPUnit: за и против?

PHPUnit

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 12

#1 aleesa

aleesa

    Новый участник

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Алиса
  • Город:Санкт-Петербург


Отправлено 30 июня 2014 - 06:55

Сейчас мы пишем функциональные тесты на джаве, но начальство склоняется к тому, что тесты и приложения, которые мы разрабатываем, должны быть написаны на одном языке, в основном по той причине, что программисты смогут сами писать какую-то часть тестов.

Вопрос к тем, у кого есть опыт написания функциональных тестов с помощью phpUnit. Расскажите, почему и в каких случаях стоит писать тесты на php? Какие плюсы, какие минусы?


  • 0

#2 Master_lomaster

Master_lomaster

    Новый участник

  • Members
  • Pip
  • 50 сообщений

Отправлено 01 июля 2014 - 08:35

что тесты и приложения, которые мы разрабатываем, должны быть написаны на одном языке

Так действительно удобнее.

Пишу юнит-тесты с помощью phpunit и selenium тесты, полёт нормальный :) К недостаткам написания селениум тестов на php многие относят то, что php официально не поддерживается. Я не испытывала трудностей из-за этого, но информации и примеров по java, конечно, гораздо больше


  • 0

#3 aleesa

aleesa

    Новый участник

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Алиса
  • Город:Санкт-Петербург


Отправлено 01 июля 2014 - 08:53

 

что тесты и приложения, которые мы разрабатываем, должны быть написаны на одном языке

Так действительно удобнее.

Пишу юнит-тесты с помощью phpunit и selenium тесты, полёт нормальный :) К недостаткам написания селениум тестов на php многие относят то, что php официально не поддерживается. Я не испытывала трудностей из-за этого, но информации и примеров по java, конечно, гораздо больше

 

 

Спасибо за ответ.)

А вы не могли бы поделиться какими-нибудь своими примерами селениум тестов на php? В интернете, действительно, очень мало информации на эту тему. 


  • 0

#4 Master_lomaster

Master_lomaster

    Новый участник

  • Members
  • Pip
  • 50 сообщений

Отправлено 01 июля 2014 - 09:43

https://github.com/s...ee/master/Tests
http://phpunit.de/ma...n/selenium.html
Своими поделиться не могу. Будут вопросы - попробую помочь.
  • 0

#5 aleesa

aleesa

    Новый участник

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Алиса
  • Город:Санкт-Петербург


Отправлено 02 июля 2014 - 07:03

https://github.com/s...e/master/Tests 

http://phpunit.de/ma...n/selenium.html

Своими поделиться не могу. Будут вопросы - попробую помочь.

 

Спасибо.

Только первая ссылка не открывается..


  • 0

#6 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 02 июля 2014 - 08:47

Исправил ссылку (лишний пробел в конце). Можно было догадаться :)


  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#7 aleesa

aleesa

    Новый участник

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Алиса
  • Город:Санкт-Петербург


Отправлено 02 июля 2014 - 11:24

Исправил ссылку (лишний пробел в конце). Можно было догадаться :)

 

Точно! ))


  • 0

#8 razielsd

razielsd

    Новый участник

  • Members
  • Pip
  • 32 сообщений


Отправлено 17 июля 2014 - 16:28

Сейчас мы пишем функциональные тесты на джаве, но начальство склоняется к тому, что тесты и приложения, которые мы разрабатываем, должны быть написаны на одном языке, в основном по той причине, что программисты смогут сами писать какую-то часть тестов.

Вопрос к тем, у кого есть опыт написания функциональных тестов с помощью phpUnit. Расскажите, почему и в каких случаях стоит писать тесты на php? Какие плюсы, какие минусы?

 

Если приложения на PHP, тогда и тесты лучше писать на PHP т.к. у вас уже есть специалисты, которых можно привлечь в случае необходимости помочь, найма, поддержки.

 

 

А вы не могли бы поделиться какими-нибудь своими примерами селениум тестов на php?

Возьмите тест на яве( или любом другом языке) и подставьте туда PHP, принципиально ничем не будет отличаться.

 

 

К недостаткам написания селениум тестов на php многие относят то, что php официально не поддерживается.

Протокол открыт, что мешает написать свой драйвер ? Собственно у PHPUnit он ужасен и неудобен, проще оказалось переписать его. Есть еще фейсбучный, но мне не нравится стиль, в котором он написан.


  • 0

#9 aleesa

aleesa

    Новый участник

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Алиса
  • Город:Санкт-Петербург


Отправлено 25 июля 2014 - 07:40

Будут вопросы - попробую помочь.

 

Посмотрите, пожалуйста, пример теста: 

<?php

class RegistrationTest extends WebTestCase
{
	public function testRegistrationPositiv()
	{
        $data = array(
        //Проверяем фамилию
            array(
                'lastname' => 'Кириллицаев',
            ),
            array(
                'lastname' => 'YDJDKJI',
            ),
            array(
                'lastname' => 'и',
            ),
            array(
                'lastname' => 'Кириллицаев123456789Кириллицаев1234567891234567890',
            ),

            //Проверяем email's
            array(
                'email' => time().'@2jfjf.wefjk'
            ),
            array(
                'email' => time().'kf.kfd.fkdfk@jf.jf.wefjk'
            ),
            array(
                'email' => time().'kf-fkdfk@jf-jf.wefjk'
            ),
            array(
                'email' => time().'kf_fkdfk@jf_jf.wefjk'
            ),
            array(
                'email' => time().'kfdfdfdsfs.dkfdfdsfsdfdfdsfdfk@jfdfdfdfdfdfdfdfdfdfdfjf.wfdsfsdffdfddfdefjk'
            ),
            //Проверяем пароль
            array(
                'password' => 'q'
            ),
            array(
                'password' => '123456789012345678901234567890'
            ),
            array(
                'password' => 'GLJIGIDFLGJFDG'
            ),

        );

        foreach($data as $item)
        {
            var_dump($item);
            $page = new MainPage($this,true);
            $page->clickRegistrationBtn();
            $phone = isset($item['phone']) ? $item['phone'] : time();
            $email = isset($item['email']) ? $item['email'] : $phone.'@tst.tst';
            $password = isset($item['password']) ? $item['password'] : '12345678';
            $lastname = isset($item['lastname']) ? $item['lastname'] : 'BabkinIO';
            $page->typeRegUserName($lastname);
            $page->typeUserPhone($phone);
            $page->typeUserEmail($email);
            $page->typeUserPassword($password);
            $page->clickRegSubmitBtn();
            sleep(2);
            $this->assertTextPresent('Регистрация прошла успешно!');
            $page->loginAs($email,$password);
            sleep(2);
            $this->assertTextPresent('Ваш адрес электронной почты');
        }


	}
}


Покритикуйте, пожалуйста. Допустимо ли вообще писать тесты в таком виде, или нужно использовать какую-то другую модель?

Суть в том, что различные позитивные данные попадают в одну и ту же функцию. Но возникает проблема: когда тест валится, во-первых, не понятно, на каких именно тестовых данных он завалился, во-вторых, на ошибке прекращается выполнение теста.


  • 0

#10 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 25 июля 2014 - 11:05

возникает проблема: когда тест валится, во-первых, не понятно, на каких именно тестовых данных он завалился, во-вторых, на ошибке прекращается выполнение теста.

Ну вот Вы сами себе и ответили :)
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#11 aleesa

aleesa

    Новый участник

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Алиса
  • Город:Санкт-Петербург


Отправлено 25 июля 2014 - 11:29

Спасибо, Алексей! )

Но не могли бы вы подсказать, как поступить в этом случае?

Обрабатывать каждое проверяемое значение в отдельной функции: testRegistrationNameCyrillic(), testRegistrationNameMin(), testRegistrationNameMax()? (тогда получается огромное дублирование кода).

Приведите пример, если не трудно.


  • 0

#12 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 26 июля 2014 - 11:10

В большинстве тестовых фреймворков имеется возможность сделать параметризованные тесты, и к тесту привязать провайдер (генератор) тестовых данных. Тогда и в отчёте всё хорошо видно -- сколько раз тест выполнялся и с какими данными, и падение теста на одном наборе тестовых данных не приводит к полной остановке, выполнение на других данных продолжается.

Я не работаю с PHPUnit, поэтому найти готовый пример из жизни не могу, но вот ссылка на документацию:
http://phpunit.de/ma....data-providers
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#13 aleesa

aleesa

    Новый участник

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Алиса
  • Город:Санкт-Петербург


Отправлено 28 июля 2014 - 07:51

В большинстве тестовых фреймворков имеется возможность сделать параметризованные тесты, и к тесту привязать провайдер (генератор) тестовых данных. Тогда и в отчёте всё хорошо видно -- сколько раз тест выполнялся и с какими данными, и падение теста на одном наборе тестовых данных не приводит к полной остановке, выполнение на других данных продолжается.

Я не работаю с PHPUnit, поэтому найти готовый пример из жизни не могу, но вот ссылка на документацию:
http://phpunit.de/ma....data-providers

 

Большое спасибо! Теперь всё более-менее встало на свои места.)


  • 0



Темы с аналогичным тегами PHPUnit

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных