Форум программистов, компьютерный форум, киберфорум
Наши страницы

Qt

Войти
Регистрация
Восстановить пароль
 
maksimus1210
5 / 5 / 1
Регистрация: 23.02.2013
Сообщений: 24
#1

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

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

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

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

Исправление ошибок в программе - C++
vector<int>v; int x; while(cin>>x) v.push_back(x); for(int i=0; i<v.size(); ++i); cout << "v == " << v << endl; ...

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

Исправление ошибок в программе - C++
Помогите исправить ошибки в программе, буду очень благодарен) #include <math.h> #include <iostream.h> #include <stdlib.h> using...

Устранение ошибок в программе - C++
написала программу. выдает очень много ошибок. #include "stdafx.h" #include "stdio.h" #define N20 int main() { int...

Исправление ошибок в программе - C++
Здравствуйте! Помогите пожалуйста исправит ошибки в программе. Программа была написана по заданию: Собственно код: //...

4
Dmitriy_M
1371 / 1254 / 114
Регистрация: 20.03.2009
Сообщений: 4,477
Записей в блоге: 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
1371 / 1254 / 114
Регистрация: 20.03.2009
Сообщений: 4,477
Записей в блоге: 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
Привет! Вот еще темы с ответами:

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

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

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

Обработка различных ошибок в программе. - VBA
Есть прога. Работает хорошо, НО: из-за всяких юзеров иногда возникают ошибки (разных категорий) можно ли сделать так чтобы программа...


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

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

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