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

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

description

Доклад Лянгузова Алексея на SQA Days 7

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