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

Публикации frei_by

176 публикаций создано frei_by (учитываются публикации только с 25 июня 2023)



#78815 Selenium RC server (PHP)

Отправлено автор: frei_by 14 октября 2010 - 13:47 в Selenium - Functional Testing

всё что пишу напоминает сл. структуру:
require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
class Example extends PHPUnit_Extensions_SeleniumTestCase
{
  protected function setUp()
  public function test_comps()
}

А с утра мне захотелось написать что-то вроде

$myvar = new Example;
$myvar -> setUp();
$myvar -> test_comps();

при попытке такого обращения выдало ошибку что сессия не начата.
Fatal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Could not find class

получается что Example наследует от PHPUnit_Extensions_SeleniumTestCase
PHPUnit_Extensions_SeleniumTestCase наследует от PHPUnit_Framework_TestCase
а в PHPUnit_Framework_TestCase происходят реально чудеса, вроде тех, что в файле
File/Iterator/Factory.php и Iterator.php
т.е. парсятся назавания функций
test_comps()
и если они не начинаются со слова test то не выполняются.

мне пока-что (а собственно начал что-то осознанно писать для selenium на php только вчера) - скорее просто непривычно писать таким образом. Внутри класса.
До этого долгое время общался с Jmeter, поэтому испытываю дискомфорт от того что не вижу, каким образом и какие данные отпрваляются серверу.

Одна из первых задач перед мной посавленных - сделать на selenium автоматического паука который проходит по сайту и снимает массу скриншотов со страниц. У меня. Делается это для дизайнеров чтобы им не нужно было тыкать по ссылкам а просто запустить скрипт и посмотреть на результаты.

Я вот думаю организовать в локалке на своём хосте сервер, чтобы дизайнер мог подключится к нему, задать адрес и параметры сайта - а в ответ получить архив скриншотов... Пока что скрипты запускаю из NetBeans...



#78801 Selenium RC server (PHP)

Отправлено автор: frei_by 14 октября 2010 - 08:23 в Selenium - Functional Testing

Общение с сервером через лес классов PHPUnit drives me crazy.
Подскажите где посмотерть либо приведиет пример запросов для сервера. Хочу попробовать используюя PHP общатся с сервером напрямую. Мне как-то это будет проще возможно, потому что HTTP, мне кажется, знаю лучше, чем структуру классов классов наследников классов....



#79211 Selenium ошибка при вызове метода wait_for_page_to_load

Отправлено автор: frei_by 25 октября 2010 - 13:02 в Selenium - Functional Testing

версия для php обработчика click and wait

$this->click('//a[@onclick=\'PriceEdit1("");\']'); //тот самый клик

$flag = false;
for ($i=1;$i<=(WAIT/1000);$i++)
{
$flag = $this->isElementPresent('//td[text()=\'ГЕНЕРАЦИЯ ПРАЙС-ЛИСТА\' and @class=\'head_main_table\']');
sleep(1);
}
if ($flag === false) {$this->fail('Oops! I did it again!');}

где
define ('WAIT', 30000);
//td[text()=\'ГЕНЕРАЦИЯ ПРАЙС-ЛИСТА\' and @class=\'head_main_table\']
- ожидаемый элемент на странице

PS чуть не забыл, всё это оформляется в виде отдельной функции и перед sleep(1); пишется if ($flag===true){return;} - иначе придётся ждать сколько положено. ))

function go_to_step1 ()
    {
      $this->click('//a[text()=\'Добавить\']');
      $flag = false;
      for ($i=1;$i<=(WAIT/1000);$i++)
      {
          $flag = $this->isElementPresent('//td[text()=\'ГЕНЕРАЦИЯ ПРАЙС-ЛИСТА\' and @class=\'head_main_table\']');
          if ($flag === true) {return;}
          sleep(1);
      }
      if ($flag === false) {$this->fail('Oops! I did it again!');}
    }



#79026 PHPUnit + Selenium RC + NetBeans

Отправлено автор: frei_by 20 октября 2010 - 11:27 в Selenium - Functional Testing

при выполнении скирпта внезапно появилась ошибка

PHPUnit 3.5.0 by Sebastian Bergmann.

Warning: DOMElement::setAttribute(): string is not in UTF-8 in C:\Program Files\PHP\pear\PHPUnit\Util\Log\JUnit.php on line 299
Warning: DOMElement::setAttribute(): string is not in UTF-8 in C:\Program Files\PHP\pear\PHPUnit\Util\Log\JUnit.php on line 413
.
Warning: DOMDocument::saveXML(): output conversion failed due to conv error, bytes 0xF2 0xE5 0xF1 0xF2 in C:\Program Files\PHP\pear\PHPUnit\Util\Log\JUnit.php on line 466

Time: 10 seconds, Memory: 4.50Mb
OK (1 test, 0 assertions)

При этом тест выполнинлся без ошибок, о чём можно судить по ".", но при этом не отображается в NetBeans как выполненный в окне TaskResult

посмотрел на JUnit.php, 299
$testSuite->setAttribute('file', $class->getFileName());
посмотрел на JUnit.php, 413
$testCase->setAttribute('file', $class->getFileName());
используется в этом файле всего в двух местах,...

первая вызвается из function startTestSuite(PHPUnit_Framework_TestSuite $suite)
вторая вызвается из function startTest(PHPUnit_Framework_Test $test)

466 строка - это
public function getXML()
    {
        return $this->document->saveXML();
    }

Если не вдаватся в этот лес, то в общих чертах понятно, что где-то попадает !UTF8 значение в эти методы и поэтому они выдают ошибку.
Вопрос только откуда оно может браться, если весь проект у меня в UTF8 кодировке и нигде я ну просто не помню, чтобы вводил какие-нибудь ёёё в кодировке ANSI...

Может быть ещё у кого-то подобная ошибка возникала?



#79129 PHPUnit + Selenium RC + NetBeans

Отправлено автор: frei_by 22 октября 2010 - 11:57 в Selenium - Functional Testing

Т.е. вы предлагаете отавить PHP в покое и взятся за Java?

1. String attValue = selenium.getAttribute(locator + "@value"); // взять атрибут
2. log.info("Value is: '" + attValue + "'"); // записать в лог
3. assertEquals("", attValue); // сравнить с пустой строкой.


Так вот у меня пока что получается,
$value = $this->getAttribute('//input[@id=\'findtext\' and @name=\'findtext\' and @type=\'text\']@value');
- возварщает ошибку так как метод getAttribute вернул пустую строку и почему-то такой вариант считается что атрибут не найден:

ERROR: Could not find element attribute: //input[@id='findtext' and @name='findtext' and @type='text']@value

хотя если использовать подобный xpath в IDE,
то ошибки не возникает - а просто не присваивается переменная ${a2}
<td>storeAttribute</td>
        <td>//input[@id='findtext' and @name='findtext' and @type='text']@value</td>
        <td>a2</td>

Специально проверял действие getAttribute для этого-же элемента в случае, когда заполнен value- всё работает...



#79123 PHPUnit + Selenium RC + NetBeans

Отправлено автор: frei_by 22 октября 2010 - 11:01 в Selenium - Functional Testing

Подскажите пожалуйста как решить затруднение:

Пусть есть элемент:
<input type="text" value="" name="findtext" id="findtext" style="background-color: rgb(255, 255, 255);">

Нужно проверить что value='' пустая строка.

В IDE код выглядит следующим образом:
<tr>
	<td>storeElementPresent</td>
	<td>//input[@id='findtext' and @name='findtext' and @type='text']</td>
	<td>a1</td>
</tr>
<tr>
	<td>storeAttribute</td>
	<td>//input[@id='findtext' and @name='findtext' and @type='text']@value</td>
	<td>a2</td>
</tr>
<tr>
	<td>echo</td>
	<td>${a1} + ${a2}</td>
	<td></td>
</tr>

результат выполнения -
* [info] Executing: |storeElementPresent | //input[@id='findtext' and @name='findtext' and @type='text'] | a1 |
    * [info] Executing: |storeAttribute | //input[@id='findtext' and @name='findtext' and @type='text']@value | a2 |
    * [info] Executing: |echo | ${a1} + ${a2} | |
    * [info] echo: true + ${a2}

если писать на PHP под RC -
$this->ignoreAttributesWithoutValue(false);
$value = $this->getAttribute('//input[@id=\'findtext\' and @name=\'findtext\' and @type=\'text\']@value');

то выдаёт ошибку (валится тест) -
PHPUnit_Framework_Exception: Response from Selenium RC server for testComplete().
ERROR: Could not find element attribute: //input[@id='findtext' and @name='findtext' and @type='text']@value
Насколько я пониаю, если аттрибут имеет пустое значение то для IDE для него просто не присваивается значение, тогда как для RC значение не находится и генерируется ошибка...

Вопрос: Как используя метод getAttribute() проверить, что атрибут имеет значение "пустая строка" и при этом не получить ошибку теста?



#79027 PHPUnit + Selenium RC + NetBeans

Отправлено автор: frei_by 20 октября 2010 - 11:36 в Selenium - Functional Testing

вы таки будете смеятся, но это особенность Netbeans.

ЕСЛИ вы например захотите сохранить проект - а в netBeans работаешь именно с проектами - в папке d:\se\тетсирование шаблонов Ёо\ - то возникает такая ошибка
нужно для названий папок использвать латиницу. d:\se\test_patterns\

-вот за такие вот надмозги я не люблю все эти чащобы классов.



#86869 В извещении о новом личном сообщении глаголы только мужского рода

Отправлено автор: frei_by 11 апреля 2011 - 06:40 в Ошибки в работе форума

1. Включить компьютер.
2. Загрузить интернет-браузер.
3. Загрузить сайт-форум по ссылке: http://software-testing.ru/forum.
4. Зайти или зарегистрироваться на аккаунт тестировщика.

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



#84109 Связь SRS с количеством багов.

Отправлено автор: frei_by 08 февраля 2011 - 14:01 в QA: обеспечение качества

Вот например, нужно протестировать, насколько корректно заносятся записи в БД. У тестировщика из требований по ней есть общая схема с описанием таблиц и типов полей, и ТЗ (как это принято называть в той конторе, где работает тестировщик — тех задание) на модуль, в котором в идеале есть инфа о том, какие таблицы должны обновляться при добавлений записи.

Получается так что при добавлении одной записи апдейтятся пять таблиц. Это написано в первом абзаце ТЗ. А во втором абзаце Главнокомандующий отдела разработки в ТЗ расписал только для одной таблицы какие должны вносится данные. А про остальные 4 таблицы в ТЗ он решил сэкономить время и не писать.

Естественно что для той таблицы про которую он расписал, как должны заносится данные, программисты сделали всё как положено. А для остальных — посчитали что раз нет в ТЗ можно не делать, или сделать так как они сами поняли.

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

Например, если написано что программа должна апдейтить таблицу StateLog, но не написано какие конкретно поля и как — тестировщик смотрит таблицу и видит, что там поле date заполняется null. Странно. Тестировщик идёт к проектировщику БД и спрашивает, почему date апдейтится нулём? Проектировщик БД говорит, что не нулём а датой, это баг. Тестировщик пишет баг, отправлет программистам. Программисты читают и говорят, что не волнует, этого не было в ТЗ. Бага редиректится разработчику ТЗ который писал ТЗ в самом начале и не внёс данной информации. Разработчик ТЗ в данном случае пишет в комментарий к багу что всё-таки нужно апдейтить дату лога, только после этого баг исправляется.

В исходное ТЗ при этом исправления не вносятся, и через несколько дней первоначальное ТЗ полностью устаревает, так как в процессе выясняются всё новые подробности работы. Остаются неизменными только высокоуровневые бизнес требования, вроде «программа должна предоставить возможность пользователю управлять счётом», нефункциональные требования / описание реализации меняется / уточняется постоянно.

Такая картина повторяется многократно в течении нескольких месяцев.

Неточности и недопонимания в исходном ТЗ порождают баги и бесконечные допиливания программы. Бесконечные допиливания программы приводят к тому, что даже то, что было написано изначально в описании реализации — устаревает. Автор ТЗ наблюдая такую картину оправдывается, что он специально не вносит многую информацию в исходное ТЗ потому что всё равно как будет работать программа мы не знаем пока не напишем, всё равно её потом сто раз допиливать, а бесконечно вносить правки в ТЗ с каждой правкой программы слишком утомительно. Но с другой стороны бесконечные правки порождает изначальная неточность.

Получается какой-то заколдованный круг.

А потом составлять набор кейсов которые будут на несколько порядков подробнее чем исходное ТЗ. Потому что каждый кейс проверяет какое-то атомарное действие программы — занёс данные — получил результат. Получается что составляя кейсы тестировщик составляет подробный функциональный спек. А поскольку в конечном итоге программа начинает допиливается до того состояния, чтобы проходить тест-кейсы, получается что это какой-то вид тест-драйвен разработки.

Что делать? Это нормально?

Может быть кто-то с подобным встречался?



#84140 Связь SRS с количеством багов.

Отправлено автор: frei_by 09 февраля 2011 - 08:57 в QA: обеспечение качества

2frei_by
Описанное - обычные "детские" болезни разработки. Лечится повышением квалификации.


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



#78735 SleniumRC + NetBeans

Отправлено автор: frei_by 12 октября 2010 - 14:22 в Selenium - Functional Testing

Установил RC сервер из NetBeans.

пытаюсь выполнить какой-нибудь тест-кейс.

Выдаёт ошибку -

PHPUnit 3.5.0 by Sebastian Bergmann.

E

Time: 36 seconds, Memory: 4.75Mb

There was 1 error:

1) newSeleneseTest1::testMyTestCase
PHPUnit_Framework_Exception: Response from Selenium RC server for getNewBrowserSession(*chrome, http://localhost:8080/).
Failed to start new browser session: Unable to delete file C:\DOCUME~1\9335~1\LOCALS~1\Temp\customProfileDir7a5dfd53eb844c8ab272db7535e6ef19\parent.lock.



FAILURES!
Tests: 1, Assertions: 0, Errors: 1.


подскажите, в чём секрет?
Что не так?



#78751 SleniumRC + NetBeans

Отправлено автор: frei_by 13 октября 2010 - 08:46 в Selenium - Functional Testing

Ну в общем я разобрался почему RC не хотел запускать Firefox. Правильный ответ - запускать нужно с новым профилем. Дело в том что Netbeans умеет сам запускать RC, причём делает это в двумя параметрами: serverport = 4444 и StartOnNetBeansStartUp = cheked.

Я создал bat файл
pause
java -jar C:\Program" "Files\selenium\selenium-server-1.0.3\selenium-server.jar -firefoxProfileTemplate "D:\selenium\profiles\ff368"
pause
pause - чтобы были паузы и возможнотсть прочитать output.
в папке ""D:\selenium\profiles\ff368" - создал новый профиль,
накатил на этот профиль screengrub, чтобы можно было снимать скриншоты,


и вот такой вот код:
class Example extends PHPUnit_Extensions_SeleniumTestCase
{
  protected function setUp()
  {
    //$this->setBrowser("*piiexplore");
    $this->setBrowser("*firefox3");
    $this->setBrowserUrl("http://_УРЛ_сайта_");
  }

  public function testMyTestCase()
  {
    $this->open('/');
    $this->getSpeed(100);

    // окно к размеру 1024
    $this->storeEval("window.resizeTo(1048, 666)");
    // скриншот главной страницы
    $loc = $this->getLocation();
    
    $this->captureEntirePageScreenshot("d:\shots\main.jpg");
   
  }

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

На правильный ответ натолкнуло вот это -
http://www.qaautomation.net/?p=15



#78737 SleniumRC + NetBeans

Отправлено автор: frei_by 12 октября 2010 - 14:39 в Selenium - Functional Testing

c открытием ff проблемы, зато получилось открыть *iexplore:

тескейс который ничего не делает проходит отлично:

<?php
require_once 'PHPUnit/Extensions/SeleniumTestCase.php';

class newSeleneseTest1 extends PHPUnit_Extensions_SeleniumTestCase {
function setUp() {
$this->setBrowser("*iexplore");
$this->setBrowserUrl("http://shop5.test.shop.by/");
}

function testMyTestCase() { }
}
?>


но если что-то посложнее - начинаются неполадки.

public function testMyTestCase()
{
$this->open("/");


возвращает

1) Example::testMyTestCase
PHPUnit_Framework_Exception: Response from Selenium RC server for testComplete().
Timed out after 30000ms.
D:\selenium\test_project\sel\test2.php:15


причём 15 линия это как раз
$this->open("/");

Видно, что броузер запускается, открывается страница. Я так понимаю, что почему-то от сервера не приходит ответ....



#78752 SleniumRC + NetBeans

Отправлено автор: frei_by 13 октября 2010 - 08:50 в Selenium - Functional Testing

По поводу таймаута - да иногда бвает на тестируемый сайт ставят какую-нибудь постороннюю шпионскую приблуду типа гугль аналистик которая тормозит событие "окончание загрузки". Поэтому команда open возвращает ошибку после истечения таймаута.

Из того что вы писали на java (а java я не знаю вообще) - уловил что вы предлагаете делать обработку исключений для команды open и если команда open лажанётся, просто проверить что на странице присутствует искомый элемент - и соответственно ждать больше нет смысла.



#78504 То ли я дурак, то ли лыжи не едут...

Отправлено автор: frei_by 03 октября 2010 - 13:27 в MicroFocus (Borland, Segue) - Functional testing

В хелпах:

LIST [ OF data-type ] list-id [= elements]

Вся соль в том что я an описал как LIST OF STRING, но впоследней строке выдает ошибку о несовпадении типов! Тоесть an есть LIST OF STRING, но компилятор требует LIST OF STRING :fool: :diablo:


...а теперь для GetChildren() -
/wChildWins = window.GetChildren([bInvisible, bNoTopLevel])
где
/wChildWins - LIST OF WINDOWS
...

WINDOW data type.
А чем вы там объявляли свой an ?

Напишите что вы скриптом сделать хотите.



#78499 То ли я дурак, то ли лыжи не едут...

Отправлено автор: frei_by 03 октября 2010 - 12:28 в MicroFocus (Borland, Segue) - Functional testing

[ ] LIST OF STRING  an
[-] testcase Test() appstate none
    [ ] Документ.Start ("C:\Program Files\Windows NT\Accessories\wordpad.exe")
    [ ] n=Документ.Вигляд.GetItemCount()
    [ ] an = Документ.Вигляд.GetChildren()
Во время запуска скрипта в строке где происходит инициализация LIST an выдает ошибку Type mismach - expecting LIST OF STRING. Ето ппц, а 4 строки выше как написано?


А слабо HELP почитать как списки объявляются?
4test - лютая х... (нехороший язык) - мне лично напоминает какие-то синтезированные обрезанные языки с олимпиад по програмированию. Слииишком строгий. отсюда множествтво подобной ерунды. Как говорится, это вам не PHP.
Продукт за 5000 у.е. таким ... быть не должен.

...а по теме,
Если вопрос в том, как написано 4 строки - то думаю, что они напечатаны с клавиатуры.



#84167 database reverse engineering

Отправлено автор: frei_by 09 февраля 2011 - 15:50 в Инструменты и технологии

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

Из бесплатных - нашёл MySQL Workbench (собственно для MySQL).

можно выгрузить дамп структуры таблиц командой вроде
mysqldump -u user -p --no-data bd tbls > /home/user/tables.sql

и по sql дампу получаются отличные ER диаграммы.

посоветуете ещё какие-нибудь?



#81901 Фиксирование версий. Психология разработчика.

Отправлено автор: frei_by 15 декабря 2010 - 10:04 в QA: обеспечение качества

Что получается, когда версии не фиксируются, думаю, объяснять не надо..


Вот совершенно такая-же проблема.

Вы девушка - вам проще будет решить.

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

А если до конца месяца не запилите subversion - за каждый день проволочек прищепляйте им прищепки на больные места.



#78506 Вакансия для QA (Минск)

Отправлено автор: frei_by 03 октября 2010 - 13:43 в Работа/Минск

А работа с CMS зачем? Чтобыт вести сайт технической поддержки, а в PS скришоты красиво обрабатывать?



#78980 Что сделать чтобы не закрывался RC и браузер при возникновении ошибки

Отправлено автор: frei_by 19 октября 2010 - 15:17 в Selenium - Functional Testing

Почитал про Unit. Получается что да, особенность.
Короче если тест завалился то его уже ничего не спасёт, только новый тест.

Если использовать тест как драйвер для броузера с целью именно безошибочно управлять бруозером - то нужно просто програмно избегать ошибок. Например всяческие
$r = $this->isElementPresent ('link=Компьютеры');
а если делать именно проверку на сбои, то нужно делать множество мальеньких тестиков и выполнять их. Почти во всех местах прочитал одно и то-же. Как говорится, пошёл искать копейку - чтобы купить яблоко - копейку не нашёл, зато нашёл яблоню.



#78970 Что сделать чтобы не закрывался RC и браузер при возникновении ошибки

Отправлено автор: frei_by 19 октября 2010 - 11:32 в Selenium - Functional Testing

Не пробовали отлавливать Exception-ы?
Это может помочь...


я пробовал.
Гоняю тесты из под NetBeans через PHPUnit
...
(спустя час) - заработало, но всё равно очень странно:

код

$arr = array (
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href'
                    );

       for ($i=0;$i<10;$i++)
       {
           $xpath = $arr[$i];
           try
           {$name = $this->getAttribute($xpath);
           fwrite ($log_h, "№-$i OK: getAttribute(".$xpath.") = $name \n ");
           }
           catch (Exception $e)
           {fwrite ($log_h, "№-$i ERROR: function getAttribute(".$xpath.") return error!\n ");}
       }

выдаёт запись в лог вроде

continue log 
№-0 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-1 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-2 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-3 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-4 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-5 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-6 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-7 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-8 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-9 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/

Но если заменить одно из условий напирмер в массиве

$arr = array (
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'!Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href',
           '//a[contains(text(),\'Компьютеры\')]@href'
                    );

(добавили лишний символ 6 элементу начиная с нуля,)
то тот-же самый скрипт выдаст такой результат:

continue log 
№-0 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-1 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-2 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-3 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-4 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-5 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ 
 №-6 ERROR: function getAttribute(//a[contains(text(),'!Компьютеры')]@href) return error!
 №-7 ERROR: function getAttribute(//a[contains(text(),'Компьютеры')]@href) return error!
 №-8 ERROR: function getAttribute(//a[contains(text(),'Компьютеры')]@href) return error!
 №-9 ERROR: function getAttribute(//a[contains(text(),'Компьютеры')]@href) return error!

т.е. получается если одно из условий ляснулось, то и на все остальные вешается Expection...
Это особенность PHPUnit ?



#82450 Создание схемы подукта

Отправлено автор: frei_by 23 декабря 2010 - 11:41 в Инструменты управления тестированием ПО

Всё о чём вы написали - ответ один - UML.
Для UML - редакторов масса, мне больше всего нарвится Microsoft Visio. Из бесплатных редакторов - ArgoUML - но это тоже очень большое ИМХО.



#82497 Создание схемы подукта

Отправлено автор: frei_by 24 декабря 2010 - 07:31 в Инструменты управления тестированием ПО

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


Ну я так понимаю что можно рекурсивно сканером сайт обойти и выстроить его модель. А вот что именно за тесты и какой в каждом тесте будет ожидаемый результат - как автоматически генерировать плохо себе представляю. Может быть сгенерировать модель сайта и сравнить с каким-то эталоном?



#79499 Переход из Selenium IDE на SeleniumRC+PHPUnit+NetBeans

Отправлено автор: frei_by 03 ноября 2010 - 09:41 в Selenium - Functional Testing

Но все-таки лучше остановиться на запуске тестов из командной строки. В этом случае проще прикручивать тот же Continuous Integration.


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

Вот тоже самое с Continuous Integration.



#79503 Переход из Selenium IDE на SeleniumRC+PHPUnit+NetBeans

Отправлено автор: frei_by 03 ноября 2010 - 10:24 в Selenium - Functional Testing

Ну есть ещё одни простой способ организовать suite:
называете свои файлы с тестами как *Test.php и складываете их в одну папку.
Потом вызываете из командной строки phpunit и указываете папку с файлами.
phpunit обходит эту папку и выполняет все файлы.

пример команды -
$output = shell_exec('phpunit c:\\www_pub\\tests\\');
либо
меню старт - Выполнить - cmd - копируете туда что-то вроде phpunit path_to_dir и enter...

У меня в примере соответственно папка www_pub на диски C с вложенной папкой test в которой лежит файл - в аттаче.
Попробуйте.

Никакого NetBeanse. Хотя папки создавались и файлы писались именно в нём.

напишите, сработает или нет...

Прикрепленные файлы

  • Прикрепленный файл  sel_s1Test.php   683байт   4 Количество загрузок: