Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
maksimus1210
5 / 5 / 1
Регистрация: 23.02.2013
Сообщений: 24
#1

Поиск ошибок в программе - C++ Qt

02.03.2013, 23:07. Просмотров 730. Ответов 4
Метки нет (Все метки)

Доброго времени суток, сейчас стала задача написать программу так, что бы её можно было не просто протестировать на наличие багов, но шагнуть ещё дальше. Тема наверно получится немного философской.... И так, изложу свои мысли: я пишу на Qt там есть средства тестирования программы QTest, родилась идея вести лог программы таким образом, чтобы этот лог являлся сценарием работы программы. Конкретный случай необходимости: у пользователя при определённых событиях программа падает, что бы понять в чём дело, лог файл подсовываем этой же программе в режиме тестирования (как вариант запускаем программу с аргументом "test") в этом режиме программа начнёт повторять все действия записанные в логе в автоматическом режиме, но регистрировать происходящее будет тщательнее.
На мой взгляд такой подход должен помочь программисту улучшить качество своего кода и ускорить процесс исправления багов. Конечно время для создания такой программы потребуется много, но оно того стоит, если проекты большие.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2013, 23:07
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Поиск ошибок в программе (C++ Qt):

Поиск ошибок в программе
Program Ilgizzz; LABEL c; Const n=100;e=0.001; Var x,y,s,xn,xk,dx,a:real;...

Много ошибок в программе
Добрый день. В программирование я не разбираюсь вовсе, а задание нужно сдать....

Устранение ошибок в программе
написала программу. выдает очень много ошибок. #include "stdafx.h" #include...

Исправление ошибок в программе
Здравствуйте! Занимаюсь написанием программы. В ходе написания возник...

Исправление ошибок в программе
Помогите исправить ошибки в программе, буду очень благодарен) #include...

Количество ошибок в программе
Помогите доработать программу, которая выводит номер символа с ошибкой. Мне...

4
Dmitriy_M
1412 / 1295 / 126
Регистрация: 20.03.2009
Сообщений: 4,617
Записей в блоге: 11
03.03.2013, 02:24 #2
Цитата Сообщение от maksimus1210 Посмотреть сообщение
такой программы потребуется много, но оно того стоит, если проекты большие.
и производительности не будет.
Цитата Сообщение от maksimus1210 Посмотреть сообщение
На мой взгляд такой подход должен помочь программисту улучшить качество своего кода
code review улучшает качество кода.
Цитата Сообщение от maksimus1210 Посмотреть сообщение
ускорить процесс исправления багов
большая и светлая идея.
0
maksimus1210
5 / 5 / 1
Регистрация: 23.02.2013
Сообщений: 24
03.03.2013, 09:36  [ТС] #3
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
и производительности не будет.
Ну почему же не будет, конечно если в лог писать всё подряд, то конечно! Нужно избавиться от избыточности информации. Немного покопавшись в документации QTest стало понятно, что можно имитировать нажатия кнопок мыши и клавиатуры на любом виджете, с любыми времеными интервалами. Первое, что пришло в голову - писать в лог события мыши и клавиатуры, так как пользователь только такие дествия и выполняет. А действия выполняемые по этим событиям являются следствиями действий пользователя.

Добавлено через 33 минуты
В принципе понемногу начинает проясняться реализация запуска сценария выполнения. Я всегда могу получить указатель на объект, лежащий на форме: QPushButton *button = parentWidget->findChild<QPushButton *>("button1").
Также я могу имитировать события мыши и клавиатуры для конкретного виджета:
QLineEdit txt;
QTest::keyClicks(&txt, "ABCDEFGH");
И ожидать время до следующего события: QTest::qWait(int ms).

Получается, что нужно писать: время события и имя объекта.

Добавлено через 43 минуты
Немного не дописал, нужно в лог писать: время события, имя объекта (в котором произошло событие), само событие(mousePress(QPos(10, 20)))
0
Dmitriy_M
1412 / 1295 / 126
Регистрация: 20.03.2009
Сообщений: 4,617
Записей в блоге: 11
03.03.2013, 15:00 #4
Цитата Сообщение от maksimus1210 Посмотреть сообщение
Ну почему же не будет, конечно если в лог писать всё подряд, то конечно! Нужно избавиться от избыточности информации. Немного покопавшись в документации QTest стало понятно, что можно имитировать нажатия кнопок мыши и клавиатуры на любом виджете, с любыми времеными интервалами. Первое, что пришло в голову - писать в лог события мыши и клавиатуры, так как пользователь только такие дествия и выполняет. А действия выполняемые по этим событиям являются следствиями действий пользователя.
Программа может упасть где угодно и когда угодно, и не обязательно это связано с действиями пользователя.
Ошибки связанные с UI вполне тестеры справятся.
0
maksimus1210
5 / 5 / 1
Регистрация: 23.02.2013
Сообщений: 24
03.03.2013, 17:50  [ТС] #5
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Программа может упасть где угодно и когда угодно, и не обязательно это связано с действиями пользователя.
Не соглашусь, программа может упасть только там, где есть уязвимость!

Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Ошибки связанные с UI вполне тестеры справятся.
Снова не соглашусь, полностью протестировать тестер может программу написанную на процедурном языке, например на чистом СИ, С ООП дела обстоят сложнее, классы могут иметь внутри себя кучу таймеров, которые вызывают функции, могут быть и вызовы с параллельных поток итд. А тестер не может добраться до внутренностей класса, он и понятия не будет иметь как устроен механизм внутри класса, он видит только public методы.
А вот если сам программист реализует возможность в программе самотестироваться, то это будет намного эффективнее любого тестера!
0
03.03.2013, 17:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.03.2013, 17:50
Привет! Вот еще темы с решениями:

Выскакивание ошибок в программе
Вот код проги: unit Unit8; interface uses Winapi.Windows,...

Исправление ошибок в программе
Здравствуйте! Помогите пожалуйста исправит ошибки в программе. Программа была...

Исправление ошибок в программе
vector&lt;int&gt;v; int x; while(cin&gt;&gt;x) v.push_back(x); for(int i=0; i&lt;v.size();...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru