Особенности тестирования открытого ПО

56
Специфика тестирования проектов с открытым исходным кодом Алексей Лянгузов, Sun Microsystems SPB

description

 

Transcript of Особенности тестирования открытого ПО

Page 1: Особенности тестирования открытого ПО

Специфика тестирования проектов с открытым исходным

кодомАлексей Лянгузов, Sun Microsystems SPB

Page 2: Особенности тестирования открытого ПО

План

• Введение• Понятия• Особенности тестирования• Минимизация усилий на тестирование• Польза открытости ПО для тестирования• Вопросы

Page 3: Особенности тестирования открытого ПО

Введение• Цели

– Поделиться опытом тестирования открытого ПО– Найти особенности тестирования открытого ПО– Рассказать “Чего избегать” и “К чему стремиться”– Показать, что тестирование зависит от ...– Обсудить высказывание: “Все ошибки становятся

заметны, если на них обращено достаточно много глаз”

– Разоблачить мнение, что свободные программы тестируют только разработчики и сообщество.

Спасибо интернету за картинки!Буду помечать особенности

Page 4: Особенности тестирования открытого ПО

Далее...

• Введение• Понятия• Особенности тестирования• Минимизация усилий на тестирование• Польза открытости ПО для тестирования• Вопросы

Page 5: Особенности тестирования открытого ПО

Свободное, бесплатное, открытое

Page 6: Особенности тестирования открытого ПО

Свободное, бесплатное, открытое

Page 7: Особенности тестирования открытого ПО

Свободное, бесплатное, открытое

Page 8: Особенности тестирования открытого ПО

Свободное, бесплатное, открытое

Page 9: Особенности тестирования открытого ПО

Собор vs Базар

Два типа разработки описанныхЭриком Реймондом в одноименном эссе.

http://lib.ru/LINUXGUIDE/bazar.txt_with-big-pictures.html

Page 10: Особенности тестирования открытого ПО

Наши продукты

https://cqme.dev.java.net/

https://jtharness.dev.java.net/

https://sigtest.dev.java.net/

JavaTest Harness Project

ME Framework Project

Signature Test Project

Page 11: Особенности тестирования открытого ПО

Рассматриваемая ситуация

Двойная лицензия

свободная коммерческая

Page 12: Особенности тестирования открытого ПО

Рассматриваемая ситуация

Двойная лицензия

свободная коммерческая

Нет функциональных различий (ну почти)

Page 13: Особенности тестирования открытого ПО

Рассматриваемая ситуация

Двойная лицензия

свободная коммерческая

Нет функциональных различий (ну почти)

Разработка прозрачна (принцип базара)

Page 14: Особенности тестирования открытого ПО

Далее...

• Введение• Понятия• Особенности тестирования• Минимизация усилий на тестирование• Польза открытости ПО для тестирования• Вопросы

Page 15: Особенности тестирования открытого ПО

Исходный код

1. Инспекция исходных текстов программы

2. Проверки, не зависящие от языка программирования и используемых технологий

3. Проверки, зависящие отязыка программированияи используемых технологий

Page 16: Особенности тестирования открытого ПО

Инспекция

Page 17: Особенности тестирования открытого ПО

Инспекция- Peer Review !

Написать кодНаписать код Сделать change logСделать change logОтправить рецензенту

и СС: email alias – для всех!

Отправить рецензенту и

СС: email alias – для всех!

ОК?ОК?Исправить кодИсправить код

Добавить кодв репозиторий

Добавить кодв репозиторий

ДАНЕТ

Page 18: Особенности тестирования открытого ПО

Проверки не зависящие от языка программирования

Опечатки

Плохие слова Непечатные символы

Унификация EOL

Одинаковыеимена файлов

Нежелательные словаи имена компаний

Page 19: Особенности тестирования открытого ПО

Проверки не зависящие от языка программирования

/* I write super kode !!! */c

Плохие слова Непечатные символы

Унификация EOLНежелательные словаи имена компаний

Одинаковыеимена файлов

Page 20: Особенности тестирования открытого ПО

Проверки не зависящие от языка программирования

Нажмите клавишу SHITF

/* I write super kode !!! */c

Непечатные символы

Унификация EOLНежелательные словаи имена компаний

Одинаковыеимена файлов

Page 21: Особенности тестирования открытого ПО

Проверки не зависящие от языка программирования

Нажмите клавишу SHITF

/* I write super kode !!! */c

Унификация EOLНежелательные словаи имена компаний

Одинаковыеимена файлов

Page 22: Особенности тестирования открытого ПО

Проверки не зависящие от языка программирования

Нажмите клавишу SHITF

/* I write super kode !!! */c

Нежелательные словаи имена компаний

Одинаковыеимена файлов

Page 23: Особенности тестирования открытого ПО

Проверки не зависящие от языка программирования

Нажмите клавишу SHITF

/* I write super kode !!! */c

Нежелательные словаи имена компаний

Page 24: Особенности тестирования открытого ПО

Проверки не зависящие от языка программирования

Нажмите клавишу SHITF

/* I write super kode !!! */c

/* Этот код закрывает уязвимость в коде компании Noname */

Page 25: Особенности тестирования открытого ПО

Проверки зависящие от языка программирования

Аудит исходного кода Check StyleFindBugs

XML Валидация документов против DTD, XSD, RNG.

Продукт,Репозиторий

Проверка правильности расположения исходных файлов и их целостность

Page 26: Особенности тестирования открытого ПО

Копирайты

х Отсутствие копирайта в файле

х Использование коммерческого копирайта вместо свободного копирайта

х Использование свободного копирайта вместо коммерческого копирайта

х Удаление или изменение чужого копирайта

1. Копирайты должны быть2. Копирайты должны быть правильными

Page 27: Особенности тестирования открытого ПО

Внутренняя информацияи инструменты

Proprietary Confidential

● Имена хостов или IP адреса● Имена пользователей, пароли● Сокращения и жаргон● Вещи имеющие трейдмарки (например лого, сплэш-скрин)● Инструменты “для внутреннего пользования”● Патентованые или “секретные” алгоритмы и сертификаты.

Page 28: Особенности тестирования открытого ПО

Инфраструктура

Новый дефект трэкер

Page 29: Особенности тестирования открытого ПО

Инфраструктура

Новый дефект трэкерНовые инструменты

Page 30: Особенности тестирования открытого ПО

Инфраструктура

Новый дефект трэкер

Осторожно, тормозит!

Новые инструменты

Page 31: Особенности тестирования открытого ПО

Инфраструктура

Новый дефект трэкер

Осторожно, тормозит!

Новые инструменты

Плохо контролируема

Page 32: Особенности тестирования открытого ПО

Культура

Контрибьютеры

Page 33: Особенности тестирования открытого ПО

Культура

Контрибьютеры

Нет группы поддержки (support)

Page 34: Особенности тестирования открытого ПО

Культура

Контрибьютеры

Нет группы поддержки (support)

Общение с комьюнити – форум, e-mail

Page 35: Особенности тестирования открытого ПО

Культура

Контрибьютеры

Нет группы поддержки (support)

Общение с комьюнити – форум, e-mailУ вашей фирмы есть секреты

Page 36: Особенности тестирования открытого ПО

Открытость тестирования

Нужно ли вам это?

Подготовка – Планирование – Инструменты – Результаты – Отчёты – Конфигурации - Данные

http://www.vocabahead.com/VocabularyVideos/Videos/TabId/59/VideoId/461/Default.aspx (unwieldy)

QAOpen Source

Готовы ли вы к этому?

Не касается модульных (unit) тестов!

Page 37: Особенности тестирования открытого ПО

Построение продукта (build)

Разные операционки

Page 38: Особенности тестирования открытого ПО

Построение продукта (build)

Разные операционки

Разные ключи запуска

Page 39: Особенности тестирования открытого ПО

Построение продукта (build)

Разные операционки

3rd party soft

Разные ключи запуска

Page 40: Особенности тестирования открытого ПО

Построение продукта (build)

Разные операционки

3rd party soft

Уникальное оборудование

Разные ключи запуска

Page 41: Особенности тестирования открытого ПО

Функциональное тестирование

При двойном лицензировании

Дано:1 лицензия → 1 продукт1 продукт → количество тестов Vи (объём тестирования)Vи = [v1, v2, … vn]

Надо:2 продукта → Vдл?

Page 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 для продукта 2Vb1 = Vb для продукта 1, Vb2 = Vb для продукта 2

Page 43: Особенности тестирования открытого ПО

Функциональное тестирование

При двойном лицензировании

Мой Ответ:Vдл = Vобщ + Vx + Vy

Где:

Vобщ = [v1, v2, v3 … vk] # некий общий набор тестов

Vx = [vk+1, vk+2 … vm] # тесты для продукта 1

Vy = [vm+1, vm+2 … vn] # тесты для продукта 2

Page 44: Особенности тестирования открытого ПО

Специфика тестирования при двойной лицензии

Тестируйте разницу

Специфика продукта 1(свободный)

Специфика продукта 2(коммерческий)

Общее

Имена продуктов Номера версий Форма поставки (zip vs. installer) Наличие/отсутствие чего-нибудь (документация, примеры)

Page 45: Особенности тестирования открытого ПО

Специфика тестирования при двойной лицензии

Сдвигайте время релизов

tT1 = T2

tT1 ≠ T2

Поверьте, готовить к выпускудва очень похожих,но разных продукта

одновременнореально неудобно и ведет к ошибкам

Page 46: Особенности тестирования открытого ПО

Далее...

• Введение• Понятия• Особенности тестирования• Минимизация усилий на тестирование• Польза открытости ПО для тестирования• Вопросы

Page 47: Особенности тестирования открытого ПО

Минимизация усилий на тестирование

проще сложнее

Только свободный дистрибутив

Закрытость тестирования

Закрытость разработки

Закрытость исходного кодаи данных

Открытость исходного кода и данных

Открытость разработки

Открытость тестирования

Двойная лицензия и разные возможности

Page 48: Особенности тестирования открытого ПО

Далее...

• Введение• Понятия• Особенности тестирования• Минимизация усилий на тестирование• Польза открытости ПО для тестирования• Вопросы

Page 49: Особенности тестирования открытого ПО

Польза открытости ПОдля тестирования

Тестирование СообществоНаходит пробелы и ошибки в тестировании

Находит ошибки

Использует пользовательские данные, конфигурации

Предоставляет тестовые данные

Предоставляет описание тестов, сценарии и скрипты

Помогает проводить тестирование на своем

оборудовании

Приоритезирует и планирует тестирование

Предоставляет знание об использовании продукта

Page 50: Особенности тестирования открытого ПО

Закон Линуса

Given enough eyeballs, all bugs are shallow

Кто-то находит проблему. А кто-то еще ее понимает. И я часто замечаю, что поиск требует наибольшего навыка

Все ошибки становятсяВсе ошибки становятсязаметны, если на нихзаметны, если на нихобращено достаточнообращено достаточно

много глазмного глаз

Линус Торвальдс

Page 51: Особенности тестирования открытого ПО

Вопросы

Page 52: Особенности тестирования открытого ПО

Вопросы

• Сперва мои

Page 53: Особенности тестирования открытого ПО

Вопросы

• Сперва мои─Зачем проверять исходники?

Page 54: Особенности тестирования открытого ПО

Вопросы

• Сперва мои✔ Зачем проверять исходники?─Какие тесты невозможны?

Page 55: Особенности тестирования открытого ПО

Вопросы

• Сперва мои✔ Зачем проверять исходники?✔ Какие тесты невозможны?

• А теперь ваши !

Page 56: Особенности тестирования открытого ПО

Спасибо!

Alexey LyanguzovSoftware Quality SpecialistSun Microsystems, St. Petersburg