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

Публикации frei_by

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



#79514 @depend annotation

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

Если кто-нибудь сталкивался, подскажите, что не так.

Пробую составить suite из нескольких небольших тестов:
создал папку test,
тесты из неё запускаю через cmd
phpunit path_to_tests

внутри для проверки создал один файл с тестами
sel_s1Test.php

Проблема: никак не могу настроить использование конструкции
/**
* @depends testlogin
*/

т.е. есть
class name1 extends PHPUnit_Extensions_SeleniumTestCase
{
protected function setUp() {}
protected function tearDown () {}

public function testlogin ()
{
$this->assertEquals(true, false);
}

/**
* @depends testlogin
*/
public function testnavigatetomodule ()
{}

}

выполняются как
FE

ожидаемый результат:
FS

Протип данного решения прочитал в
http://www.phpunit.d...st-dependencies

Например, с определением похожей декларации
/**
* *@dataProvider provider
*/
проблем не возникает. Т.е. @dataProvider работает, а @depends игнорируется.

если нужно, вот полный ответ от phpunit
PHPUnit 3.5.3 by Sebastian Bergmann.

FE

Time: 14 seconds, Memory: 4.50Mb

There was 1 error:

1) name1::testnavigatetomodule
PHPUnit_Framework_Exception: Response from Selenium RC server for testComplete().
ERROR: Element //a[@id='link_2' and text()='Сервис'] not found.


C:\www_pub\pricelist\1_Test.php:34

--


There was 1 failure:

1) name1::testlogin
Current URL: http://test1.webadmin.shop.by/index.php

Failed asserting that <boolean:true> matches expected <boolean:false>.

C:\www_pub\pricelist\1_Test.php:24

FAILURES!
Tests: 2, Assertions: 1, Failures: 1, Errors: 1.



#78703 Selenium IDE встроенный функции

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

Подскажите пожалуйста что делает функция storeAttributeFromAllWindows

В описании прочитал, что:

storeAttributeFromAllWindows(attributeName, variableName)
Generated from getAttributeFromAllWindows(attributeName)
Arguments:
* attributeName - name of an attribute on the windows
Returns:
the set of values of this attribute from all known windows.
Returns an array of JavaScript property values from all known windows having one.


Перевожу как "должна вернуть массив свойств JS из всех существующих окон."
использую как
storeAttributeFromAllWindows
attributeName = alt
variableName = str

Команда проходит без ошибок. Ожидаю что вернёт массив всех атрибутов alt.

Далее
echo
${str}

не возвращает ничего....

вопрос:
1) я прав?
2) как посмотреть этот массив используя только средства IDE?
3) как проверить наличие и содержание аттрибутов alt у всех изображений?



#82682 Образ тестировщика

Отправлено автор: frei_by 30 декабря 2010 - 09:06 в Свободное общение

Предлагаю поделится героями-тестировщиками в различных видах изобразительных жанров (кино, телевидение и т.п.)
На создание данной темы меня сподвиг образ
Captain Hindsight

Изображение
(из 14 сезона South Park серии про BP и Coon)

Думаю что деятельность Капитана Баяна достаточно близко отражает особенности работы тестировщиков.

http://ru.wikipedia....2:_Послевидение

Капитан Послевидение (англ. Captain Hindsight; в других переводах — Капитан Баян и Капитан Очевидность), который «помогает» тем, что объясняет людям, как надо было себя вести и что делать, чтобы не случилось катастрофы, хотя это не приносит никакой пользы делу. Как ни странно, люди с радостью принимают его помощь.


С той разницей что хотелось-бы надеятся что работа тестировщиков делу пользу приносит. ))



#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 диаграммы.

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



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

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

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



#79479 перебор чекбоксов

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

мне кажется что многие сталкивались при написании тестов с задачей отметить несколько чек-боксов на странице объединённых одной формой. Например нужно написать несколько тест-кейсов в каждом из которых группа из 8 чек-боксов может быть отмечена какой-то своей комбинацией.

Всего комбинаций может получится 2^8 = 255 комбинаций.
Очень затруднительно написать 255 кейсов для которых задавать комбинацию по-своему.

Хотелось бы в тест кейс передвавать комбинацию отмеченных чек боксов в виде цифры - например
11010010 = 210
11010011 = 211

Я решил эту проблему написанием следующей функции:

function cbust($val,$arr_1)
    {
    $res = 1;
    for ($i=1;$i<=count($arr_1); $i++)
        {
         if ($val&$res){$arr_check[$i]=true;}else{$arr_check[$i]=false;}
         $res = $res << 1;
        }
    
    foreach ($arr_1 as $k => $v)
    {
        
        if ($arr_check[($k+1)]===true)
        {
            $flag = $this->isElementPresent($v);
            if ($flag!==true){$this->fail("Element $v is not present to check!");}
            $flag = $this->isChecked($v);
            if ($flag === true){} //nothing to do, it already cheked!
            else
            {$this->click($v);
            $flag = $this->isChecked($v); //is click make some action?
            if ($flag!==true){$this->fail("Element $v can not be checked!");}
            }
        }
        elseif ($arr_check[($k+1)]===false)
        {
            $flag = $this->isElementPresent($v);
            if ($flag!==true){$this->fail("Element $v is not present to uncheck!");}
            $flag = $this->isChecked($v);
            if ($flag===true)
            {$this->uncheck($v);
            $flag = $this->isChecked($v); //is uncheck make some action?
            if ($flag===true){$this->fail("Element $v can not be UNchecked!");}
            }
            else {} //nothing to do!
        }
        else
        {
            $this->fail('Oops, not true and not false...??'); //value of $arr_1 may be not set...
        }
    }
    $status = 'ok'; //for some reasons... It's pleasure to hear that all ok!
    return $status;
    }

где $val - числовой код комбинации, $arr_1 - массив XPAth чек боксов на странице.
У меня он выглядит так:

<?php
return
( array
    (
        '//input[@id=\'disp_field0\' and @type=\'checkbox\' and @value=\'short_item_name\']',
        '//input[@id=\'disp_field1\' and @type=\'checkbox\' and @value=\'long_item_name\']',
        '//input[@id=\'disp_field2\' and @type=\'checkbox\' and @value=\'short_desc\']',
        '//input[@id=\'disp_field3\' and @type=\'checkbox\' and @value=\'long_desc\']',
        '//input[@id=\'disp_field4\' and @type=\'checkbox\' and @value=\'price\']',
        '//input[@id=\'disp_field5\' and @type=\'checkbox\' and @value=\'icon_link\']',
        '//input[@id=\'disp_field6\' and @type=\'checkbox\' and @value=\'image_link\']',
        '//input[@id=\'disp_field7\' and @type=\'checkbox\' and @value=\'link_page\']',
        '//input[@id=\'disp_field8\' and @type=\'checkbox\' and @value=\'item_code\']',
        '//input[@id=\'disp_field9\' and @type=\'checkbox\' and @value=\'item_status\']'
    )
)

?>

здесь используется поразрядное сравнение $val с единицей, если true - значить xpath в массиве нужно отметить, если false - значит отмечать не нужно.
по моему получилось очень удобно и в тесте можно вызвыать как

$arr_2 = include_once ('./XPath/array2.php');
self::cbust($s2_p, $arr_2);

- например, если $s2_p будет равно 14, а всего элементов 8, то 14 = 1110,
00001110 - пример разметки 8 чек боксов.

Если будут какие-то замечания, буду рад прочитать...



#78734 перемнные в IDE

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

от жеж.
всего-то не хватало одниарных кавычек...
escape('${loc}')



#78708 перемнные в IDE

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

имеется объявленная перменная
storeLocation loc

вида URL адрес.

я хочу проэскейпить строку для использования в качестве имени файла скриншота.
Как это сделать?
пробую -
storeEval
escape(${loc}) - [error] Threw an exception: $loc is not defined
escape(storedVars[loc]) - [error] Threw an exception: loc is not defined
- выдаёт ошибку, переменная не определена.



#83302 SeleniumRC PHP обмен данными между тестами

Отправлено автор: frei_by 19 января 2011 - 16:09 в Selenium - Functional Testing

Проблема такая. Занимаюсь написанием тестов для RC на php.
Есть конструкция из тестов:

class Example extends PHPUnit_Extensions_SeleniumTestCase
{
protected $arr_all; //property for script exchange

public function test_one()
	{...
	$this->arr_all = array (); //full array
	...
	var_dump ($this->arr_all);//array present
	}
public function test_second()
	{
	var_dump ($this->arr_all);//empty!!!!
	}
}

По моей задумке в первом тесте записывается $arr_all а во втором тесте считывается. ООП в php знаю очень приблизительно поэтому прошу снисхождения.

Для всего класса я объявляю свойство $arr_all;
далее в первом тесте test_one() присваиваю ему массив, и для проверки делаю var_dump - всё ок, свойство присвоилось.

Но когда во втором тесте test_second() я вновь пытаюсь обратится к данному свойству - то возвращает var_dump ($this->arr_all);//empty!!!! - NULL.

тесты исполняются один за другим. Пробовал сделать $arr_all; privaty либо public - не помогает. Можно конечно записать в сериализованный файл результаты работы одного теста а потом в другом тесте прочитать этот файл, но не вариант. Хотелось-бы именно в скрипте через переменные / поля класса.

Подскажите пожалуйста способ обмена информацией межуд тестами в пределах одного класса class Example ну или альтернативное решение. Спасибо...



#83310 SeleniumRC PHP обмен данными между тестами

Отправлено автор: frei_by 19 января 2011 - 17:17 в Selenium - Functional Testing

У меня первый тест и не тест вовсе, а просто подготовка данных для provider.

В PHPUnit можно делать дата драйвен тесты с помощью функции исполняющей роль провайдера данных.
В этой функции мне нужно на лету сформировать данные для из одной страницы и бомбить ими вторую страницу. Нужно считать на одной старнице массив данных броузером, а на другой странице броузером по этим данным устроить проверки. Я пробовал в функции провайдер вызвывать метод open - но естественно сессия для брозуера создана не была и поэтому фэйл. Решил сделать как отдельный тест в начале.

До этого у меня именно так и работало, в одном тесте считывал данные и проверял по ним. Но я решил немного рефакторнуть, и сформировать массив отдельно и сделать вот как здесь,
чтобы у меня provider сформировал именно так, и сделал это автоматически:
return array(
          array(0, 0, 0),
          array(0, 1, 1),
          array(1, 0, 1),
          array(1, 1, 3)
        );

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

Попробуйде этот массив сделать статическим и public

не помогло почему-то. Возможно ошибка в чём-то дургом, а возомжно phpunit пересоздаёт класс Example extends PHPUnit_Extensions_SeleniumTestCase перед каждым тестом, с него станется.

папка temp, serialize, fopen, fwrite,.... думаю буду делать так.



#83696 Применение Functional Testing

Отправлено автор: frei_by 31 января 2011 - 07:49 в IBM Rational - Functional Testing

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



#80483 supportdetails.com

Отправлено автор: frei_by 22 ноября 2010 - 11:26 в Про тестирование обо всём подряд

Оу, можно записать в лог параметры GET запроса HTTP? Из GET можно извлечь версию броузера и ОС? Спасибо, кэп!



#78136 SilkTest with Firefox

Отправлено автор: frei_by 21 сентября 2010 - 07:10 в MicroFocus (Borland, Segue) - Functional testing

Привет всем. Кто-нибудь разрабатывал и запускал тесты на Firefox? Какой Силк вы использовали для Firefox3.5?


недавно пробовал запустить 3.6 firefox под SilkTest 10. Проверял корректность по Run - Application Satate. Броузер запускает, но с объектной моделью разобраться не может. Агент висит 180 секунд и потом выдаёт что-то вроде не удалось восстановить default base state. Почитал SilkTest - овский blogpost - ничего не нашёл по этому поводу кроме того, что новые версии броузеров не поддерживаются... ((



#78135 SilkTest with Firefox

Отправлено автор: frei_by 21 сентября 2010 - 07:10 в MicroFocus (Borland, Segue) - Functional testing

Привет всем. Кто-нибудь разрабатывал и запускал тесты на Firefox? Какой Силк вы использовали для Firefox3.5?


недавно пробовал запустить 3.6 firefox под SilkTest 10. Проверял корректность по Run - Application Satate. Броузер запускает, но с объектной моделью разобраться не может. Агент висит 180 секунд и потом выдаёт что-то вроде не удалось восстановить default base state. Почитал SilkTest - овский



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

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

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

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



#85420 Программа для проверки доступности сайта по всему миру

Отправлено автор: frei_by 09 марта 2011 - 13:20 в Свободное общение

Допустим иногда мой сайт не доступен в некоторых городах Индии или России, или даже в моей стране сайт доступен только посредством соединения определённых интернет провайдеров, а через других нет.

а ваш сайт по http доступен?



#86643 Запущена трансляция блогов о тестировании

Отправлено автор: frei_by 05 апреля 2011 - 10:36 в Портал Software-Testing.Ru

О_о
new-1.jpg



#84376 Знание технологий программирования для тестировщика

Отправлено автор: frei_by 15 февраля 2011 - 07:43 в Автоматизированное тестирование

RUP,Agile ....

Это организация процесса разработки, RUP строгий строгий формализованный процесс, кроме всего прочего защищённый авторским правом (в отличие от например UP) - эффективен будет в больших корпорациях и для сложных систем которые невозможно на коленке собрать, а Agile-м - обычно пользуются или очень опытные и мотивированные дядьки, или зелёные неорганизованные студенты. Можете так на собеседовании и сказать.



#84377 Тест поиска интернет-магазина

Отправлено автор: frei_by 15 февраля 2011 - 07:48 в Тест-дизайн и ручное тестирование

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


одномерный массив = вектор. Строка - это одномерный массив для компьютера, в значении строка = набор символов. К кадому символу в строке можно обратится по порядковому номеру - чем не одномерный массив? По аналогии - список слов, если представить каждое слово как букуву, можно представить в виде строки...



#82731 Помогите обработать несколько однотипных элементов:)

Отправлено автор: frei_by 04 января 2011 - 14:26 в Selenium - Functional Testing

Я бы посоветовал через XPath привязыватся к ближайшему статическому элементу.
"//tr["+k+"]//div[@class='datacenter-ico']"

будет выбирать любые ноды (теги) <tr> c самого начала документа по порядку ["+k+"] и для каждого найденного <tr> искать первый попавшийся <div class='datacenter-ico'>. Что на мой взгляд может оказатся скользким решением.



#80318 Несколько разных БД. Организация интеграционного тестирования.

Отправлено автор: frei_by 17 ноября 2010 - 13:27 в Автоматизированное тестирование

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

Чем сравнить, кроме SQL?

Других способов естесвенного получения данных из БД кроме SQL я не знаю.

Вы ищите какой нибудь фреймворк где SELECT команда заменена кликом по кнопке "Получить данные"?
Вопроса не понял...



#83801 seleniumRC 1.0.3 + Firefox

Отправлено автор: frei_by 02 февраля 2011 - 12:08 в Selenium - Functional Testing

Извините, вопрос может быть наивный, а в ответе от сервера точно стоит заголовок Content-type = text/html ?



#83337 Проблема с хинтами (Selenium IDE)

Отправлено автор: frei_by 20 января 2011 - 10:21 в Selenium - Functional Testing

Я думаю что достаточно проверить наличие аттирубта title у опередлённого элемента... А навести курсор и снять скринот чтобы потом посмотреть на скриншоте - не проще-ли открыть страницу и посмотреть "вручную", если без посмотреть всё равно никак?



#79780 Проблема с кодировкой

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

Зарегистрироваться
посчитайте количество символов поделите на два и если у вас получится количесвто символов в строке
link=Зарегистрироваться
то даже не зная что такое "Идею 7.0.2" шито-то с однобайтовая-двубайтовая кодировка, мне так кажется.
туда и копайте.



#81132 StoreAllFields: как правильно использовать по назначению?

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

$mass[$i]
- возвращает $i элемент из неассоциативного одномерного массива вида
$arr = array (1,2,3,4,5,6);
если у вас
ассоциативный массив - то работать не будет
если у вас многомерный массив - работать не будет - т.е. вернёт значение array - если ваш массив - многомерный массив состоящий из других массивов.

плз выполните
var_dump ($mass);

и если оно выдаст что-то отличное от
$mass = Array (
[0] => 'значение 0'
[1] => 'значение 1'
...
)
то в этом кроется ошибка.

массив должен быть доступен в классе теста - на php тесты выполняются под phpunit с в нескольких наследуемых друг от друга классах.
Для обхода массива - используйте foreach.