2. План
• Введение
• Понятия
• Особенности тестирования
• Минимизация усилий на тестирование
• Польза открытости ПО для тестирования
• Вопросы
3. Введение
• Цели
– Поделиться опытом тестирования открытого ПО
– Найти особенности тестирования открытого ПО
– Рассказать “Чего избегать” и “К чему стремиться”
– Показать, что тестирование зависит от ...
– Обсудить высказывание: “Все ошибки становятся
заметны, если на них обращено достаточно
много глаз”
– Разоблачить мнение, что свободные программы
тестируют только разработчики и сообщество.
Буду помечать особенности
Спасибо интернету за картинки!
4. Далее...
• Введение
• Понятия
• Особенности тестирования
• Минимизация усилий на тестирование
• Польза открытости ПО для тестирования
• Вопросы
9. Собор vs Базар
Два типа разработки описанных
Эриком Реймондом в одноименном эссе.
http://lib.ru/LINUXGUIDE/bazar.txt_with-big-pictures.html
10. Наши продукты
ME Framework Project
https://cqme.dev.java.net/
JavaTest Harness Project
https://jtharness.dev.java.net/
Signature Test Project
https://sigtest.dev.java.net/
13. Рассматриваемая ситуация
свободная коммерческая
Двойная лицензия
Нет функциональных
различий (ну почти)
Разработка прозрачна
(принцип базара)
14. Далее...
• Введение
• Понятия
• Особенности тестирования
• Минимизация усилий на тестирование
• Польза открытости ПО для тестирования
• Вопросы
15. Исходный код
1. Инспекция исходных текстов программы
2. Проверки, не зависящие от языка
программирования и используемых технологий
3. Проверки, зависящие от
языка программирования
и используемых технологий
17. Инспекция- Peer Review !
Добавить код
Добавить код
вврепозиторий
репозиторий
ДА
НЕТ
Исправить код
Исправить код ОК?
ОК?
Отправить рецензенту
Отправить рецензенту
Написать код
Написать код Сделать change log
Сделать change log ии
СС: email alias ––для всех!
СС: email alias для всех!
18. Проверки не зависящие от
языка программирования
Плохие слова Непечатные символы
Одинаковые
Опечатки
имена файлов
Нежелательные слова
Унификация EOL
и имена компаний
19. Проверки не зависящие от
языка программирования
Плохие слова Непечатные символы
Одинаковые c
имена файлов /* I write super kode !!! */
Нежелательные слова
Унификация EOL
и имена компаний
20. Проверки не зависящие от
языка программирования
F
Нажмите клавишу SHIT Непечатные символы
Одинаковые c
имена файлов /* I write super kode !!! */
Нежелательные слова
Унификация EOL
и имена компаний
21. Проверки не зависящие от
языка программирования
F
Нажмите клавишу SHIT
Одинаковые c
имена файлов /* I write super kode !!! */
Нежелательные слова
Унификация EOL
и имена компаний
22. Проверки не зависящие от
языка программирования
F
Нажмите клавишу SHIT
Одинаковые c
имена файлов /* I write super kode !!! */
Нежелательные слова
и имена компаний
23. Проверки не зависящие от
языка программирования
F
Нажмите клавишу SHIT
c
/* I write super kode !!! */
Нежелательные слова
и имена компаний
24. Проверки не зависящие от
языка программирования
F
Нажмите клавишу SHIT
c
/* I write super kode !!! */
/* Этот код закрывает
уязвимость в коде
компании Noname */
25. Проверки зависящие от
языка программирования
Check Style
Аудит исходного кода
FindBugs
XML Валидация документов против
DTD, XSD, RNG.
Продукт, Проверка правильности
Репозиторий расположения исходных
файлов и их целостность
26. Копирайты
1. Копирайты должны быть
2. Копирайты должны быть правильными
х Отсутствие копирайта в файле
х Использование коммерческого копирайта
вместо свободного копирайта
х Использование свободного копирайта вместо
коммерческого копирайта
х Удаление или изменение чужого копирайта
27. Внутренняя информация
и инструменты
●
Имена хостов или IP адреса
●
Имена пользователей, пароли
●
Сокращения и жаргон
●
Вещи имеющие трейдмарки (например лого,
сплэш-скрин)
●
Инструменты “для внутреннего пользования”
●
Патентованые или “секретные” алгоритмы и
сертификаты.
tary Con fidential
Proprie
34. Культура
Контрибьютеры
Нет группы поддержки (support)
Общение с комьюнити – форум, e-mail
35. Культура
Контрибьютеры
Нет группы поддержки (support)
Общение с комьюнити – форум, e-mail
У вашей фирмы есть секреты
36. Открытость тестирования
Подготовка – Планирование – Инструменты –
Результаты – Отчёты – Конфигурации - Данные
Не касается модульных (unit) тестов!
QA
Open Source
Нужно ли вам это?
Готовы ли вы к этому?
http://www.vocabahead.com/VocabularyVideos/Videos/TabId/59/VideoId/461/Default.aspx (unwieldy)
39. Построение продукта
(build)
Разные операционки
3rd party soft
Разные ключи запуска
40. Построение продукта
(build)
Разные операционки
3rd party soft
Разные ключи запуска
Уникальное оборудование
41. Функциональное
тестирование
При двойном лицензировании
Дано:
1 лицензия → 1 продукт
1 продукт → количество тестов Vи (объём тестирования)
Vи = [v1, v2, … vn]
Надо:
2 продукта → Vдл?
42. Функциональное
тестирование
При двойном лицензировании
Ответ 1:
Vдл = 2 * Vи
Ответ 2:
Vдл = Va + Vb, где
Va = [v1, v3, v5, …] , Vb = [v2, v4, v6, …]
Ответ 3:
Vдл = ((Va1 + Vb1) + (Va2 + Vb2))/2, где
Va1 = Va для продукта 1, Va2 = Va для продукта 2
Vb1 = Vb для продукта 1, Vb2 = Vb для продукта 2
43. Функциональное
тестирование
При двойном лицензировании
Мой Ответ:
Vдл = Vобщ + Vx + Vy
Где:
Vобщ = [v1, v2, v3 … vk] # некий общий набор тестов
Vx = [vk+1, vk+2 … vm] # тесты для продукта 1
Vy = [vm+1, vm+2 … vn] # тесты для продукта 2
44. Специфика тестирования
при двойной лицензии
Тестируйте разницу Общее
Специфика продукта 1 Специфика продукта 2
(свободный) (коммерческий)
Имена продуктов
Номера версий
Форма поставки (zip vs. installer)
Наличие/отсутствие чего-нибудь (документация, примеры)
45. Специфика тестирования
при двойной лицензии
Сдвигайте время релизов
t t
T1 = T2 T1 ≠ T2
Поверьте, готовить к выпуску
два очень похожих,
но разных продукта
одновременно
реально неудобно и ведет к ошибкам
46. Далее...
• Введение
• Понятия
• Особенности тестирования
• Минимизация усилий на тестирование
• Польза открытости ПО для тестирования
• Вопросы
47. Минимизация усилий на
тестирование
Только свободный Двойная лицензия и
дистрибутив разные возможности
Закрытость Открытость
тестирования тестирования
Закрытость Открытость
разработки разработки
Закрытость Открытость
исходного кода исходного
и данных кода и данных
проще сложнее
48. Далее...
• Введение
• Понятия
• Особенности тестирования
• Минимизация усилий на тестирование
• Польза открытости ПО для тестирования
• Вопросы
49. Польза открытости ПО
для тестирования
Тестирование Сообщество
Находит пробелы и ошибки в Находит ошибки
тестировании
Использует пользовательские Предоставляет тестовые
данные, конфигурации данные
Предоставляет описание Помогает проводить
тестов, сценарии и скрипты тестирование на своем
оборудовании
Приоритезирует и планирует Предоставляет знание об
тестирование использовании продукта
50. Закон Линуса
Все ошибки становятся
заметны, если на них
обращено достаточно
много глаз
Кто-то находит проблему.
А кто-то еще ее понимает.
И я часто замечаю, что
поиск требует
наибольшего навыка
Линус Торвальдс
Given enough eyeballs, all bugs are shallow