автоматизирование тестирования, тестирование GUI - для QT (есть что опенсорсное?)

Обсуждение развития Open-source.

Модератор: Модераторы разделов

Ответить
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

автоматизирование тестирования, тестирование GUI - для QT

Сообщение Denjs »

Господа, подошел вплотную к вопросу о необходимости автоматизированного тестирования собственного приложения.
Т.к. пишу на QT тут вроде и QTestLib framework от Троллей Нокии предлагается... но нет там автоматизации тестирования.

Интересует a-ля RationalRobot но опенсорсное, желательно заточенное под QT. Возможно с необходимостью встраивания в программу.

Мне нужно что :
1) запись действий пользователя, возможность проигрывания действий пользовтаеля.
2) составления сценария тестирования на основе записанных действий пользовтеля. (для автоматизации тестирования GUI и функциональных требований)

естственно, желательно кроссплатформенное ^_^)

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

Пока думаю/пробую варианты создания собственного фреймворка.
Перехватывать глобально QEvent я научился, идентифицировать виджеты тоже (пусть и через необходимость именования всей цепочки от родителя до подчиненного).... - т.е. логи действий в GUI у меня теперь могут писаться, и вроде есть вся информация о том, что бы проиграть это все (клавиатура и мышь)... и QtScript тут вроде вообще очень к делу...
... но пока не начал погружаться в это полностью - хотел бы в последний раз оглядеться.... может и не надо мне это делать? может есть на что посмотреть, что обсудить, что поприменять?
Какие грабли могут меня ждать на данном пути?
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
deadhead
Сообщения: 1913
Статус: zzz..z

Re: автоматизирование тестирования, тестирование GUI - для QT

Сообщение deadhead »

не совсем для QT: ldtp
[x] close
Спасибо сказали:
Аватара пользователя
Crazy
Сообщения: 862
Статус: Адепт Дзен.
ОС: Mint, Win7.

Re: автоматизирование тестирования, тестирование GUI - для QT

Сообщение Crazy »

Кроме QTestLib в голову приходит CppUnit + фильтр событий + имитация пользовательского ввода.

Desipere in loco
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: автоматизирование тестирования, тестирование GUI - для QT

Сообщение Denjs »

Crazy писал(а):
31.08.2010 13:32
Кроме QTestLib в голову приходит CppUnit + фильтр событий + имитация пользовательского ввода.

Вот сейчас собственно делаю все руками и сам. - подключаю фильтр событий на QCoreApplication и регистривую ВСЕ что поступает к программе. Потом фильтрую, и воспроизвожу - в том числе с помощью QTextLib.
Уже нашел что одними нажатиями мыши и перемещением мыши командами из QTestLib - окошко не перетащить))) не знаю почему....
Думал в начале что Тролли схалявили - они курсор двигают через QCursor::setPos а другие события - через генерацию QMouseEvent)
Но событиями мыши типа "перемещение"- окошко тоже таскаться не хочет)))

в общем сегодня учился отслеживать/фильтровать/воспроизводить ещё и QEvent::Resize и QEvent::Move дабы окна у меня тоже ресайзились и передвигались.

Далее на очереди QEvent::Wheel, "драг-н-дроп", копипаст вставка/вырезание/копирование ... что ещё мог забыть?))))

PS: по теме - народ подсказал ещё http://www.froglogic.com/ . Жутко вкусно для тестирования, имеет приявязку к QT, но судя по всему достаточно дорого))))
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: автоматизирование тестирования, тестирование GUI - для QT

Сообщение Denjs »

для тех кому возможно потом будетинтересно: продолжаем отгребать веселости с QTestLib.

На этот раз выяснил что QTest::keyPress() (и иже с ними для генерации нажатий), не поддерживают русские буквы.
( или я плохо понимаю как это делать корректно).

Тролли на входе данной процедуры просят код клавиши (соответсвующий, вроде бы(!), перечислению Qt::Key) ...

но вот забавно: QEvent, приведенный к типу QKeyEvent, на выходе QKeyEvent::key() (который тоже вроде должен отдавать то, что соответсвует перечислению Qt::Key) - в случае "русских буков" отдает нечто, что не укладывается в это перечисление.

И если потом этот код скормить в QTest::keyPress() то мы спотыкаемся в конце функции char QTest::keyToAscii(Qt::Key key) - тролли вешают программу через QTEST_ASSERT в конце данной процедуры, если переданный код по ихмнению не корректен ( т.е. , как я понимаю, не соответсвует ни одному элементу из Qt::Key).


Вот вам и QTest) пойду руками буду генерировать события и буду опоещать виджеты руками...

UPD: ибо так (см ниже) оно срабатывает: (причем русские/английские буквы жмутся вне зависимости от текущей раскладки клавиатуры)

Код: Выделить всё

                 QKeyEvent keyEvent=QKeyEvent ( QEvent::KeyPress, key,  modifiers, text, isautorepeat, keyscount);
                 qApp->notify(targetWidget, &keyEvent);

UPD: кому там в Nokia-Trolltech полагается слать баги?
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Ответить