WINE/Разработчику/Методика
Содержание
Методика разработки
Необходимые знания
- Умение читать и писать на техн. английском.
- Основы работы с patch, diff, git.
- Представление о WinAPI.
- Использование поисковых систем.
- Умение тестировать и писать тестовые программы.
- Базовые представления об удобстве использования GUI.
Общий подход к работе над адаптацией к программе
I этап
- Установить программу
- Записать наблюдаемые визуальные дефекты и проблемы с функциональностью
- Локализовать проблемное место
- Запросить исходники проблемной части, которые помогут написать код, воспроизводящий ситуацию
- Оценить трудоёмкость работы по исправлению в человекоднях
II этап
- Выполнить необходимые доработки согласно плану
- Провести полное тестирование результата
- Проверять отсутствие регрессии на каждом новом шаге развития WINE (раз в неделю)
III этап
- Осуществлять поддержку и оперативное исправление замечаний
Работа с проблемой
- Создать описание в багзилле
- Найти причину проблемы
- Создать контрольные тесты
- Выставить предложения по исправлению
- Реализовать исправления после их утверждения
- При этом необходимо максимально использовать и дополнять имеющиеся тесты.
Тестирование
- План тестирования
- Логи тестирования
- Сводная таблица результатов.
Примерный план работы по каждой задаче
Должно быть сформулировано прохождение каждой проблемы от появления до решения.
- Формулирование видения проблемы извне (внешне, с точки зрения пользователя) - какой диалог как себя не так ведёт.
- Анализ кода с целью получения общего представления и определения проблемных мест
- Создание описание функции на англ., включая поведение в сложных ситуациях (для начала можно на русском). При этом описать входы и выходы (что передаётся и возвращается, в каких ситуациях). По сути, это техн. задание ТЗ) - но чтобы было с чем сверяться. При этом изучить и систематизировать имеющийся в сети материал.
- Cоздание программы для тестирования в различных режимах, в большинстве случаев это оформляется как программа, воспроизводящая проблему - небольшой код, который неверно работает в WINE. Программа должна компилироваться средствами winegcc.
- Определиться, что не работает, что работает не так; сформулировать что надо сделать
- Согласно имеющейся информации написать автоматический тест (каталог tests), если это возможно. Тест должен выполняться на Windows семейства NT начиная с NT4
- Составить план работ с оценкой трудоёмкости и сроков (дата начала и завершения)
- Приступить к выполнению, корректируя п. 3-5
Как вносить исправления
По всем пунктам, где требуется решить проблему,
- сначала желательно воспроизвести ситуацию отдельной программой или тестом для wine;
- потом - либо написать хак (не совсем корректный патч, который делает что проблема убирается, но не факт, что это правильное решение и годится для других);
- либо внести полные исправления в функцию, с комментариями к ней.
Все сделанные патчи должны отправляться в Eterwine patches maillist с указанием веток, к которым следует применить исправление.
Если получено корректное исправление и для него написан тест для wine, то патч вместе с тестом можно отправить в рассылку wine-patches@ апстрима.
Тесты для функций
Тесты для функций пишутся следующим образом:
1. Вызывается функция
2. Сверяется результат её выполнения (возвращаемое значение) с эталоном
3. Сообщается результат сравнения.
В тестах для WINE для сообщения о прохождении теста используется функция ok.
Функция ok (int bool, char* format, ...)
Выводит сообщение об ошибке, с указанием номера строки, а также
текст, содержащийся в строке format, если bool не истина (bool == 0).
Параметр format и последующие аргументы интерпретируются так же, как параметры функции
printf