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

Post on 24-Jan-2015

1.551 views 2 download

description

 

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

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

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

План

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

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

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

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

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

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

Далее...

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

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

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

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

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

Собор vs Базар

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

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

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

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

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

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

JavaTest Harness Project

ME Framework Project

Signature Test Project

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

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

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

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

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

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

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

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

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

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

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

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

Далее...

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

Исходный код

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

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

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

Инспекция

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

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

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

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

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

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

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

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

ДАНЕТ

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

Опечатки

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

Унификация EOL

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Копирайты

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

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

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

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

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

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

Proprietary Confidential

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Культура

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

Культура

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

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

Культура

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

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

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

Культура

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

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

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

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

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

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

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

QAOpen Source

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

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

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

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

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

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

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

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

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

3rd party soft

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

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

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

3rd party soft

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

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

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

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

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

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

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

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

Ответ 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

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

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

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

Где:

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

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

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

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

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

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

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

Общее

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

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

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

tT1 = T2

tT1 ≠ T2

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

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

Далее...

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

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

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

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

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

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

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

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

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

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

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

Далее...

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

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

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

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

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

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

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

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

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

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

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

Закон Линуса

Given enough eyeballs, all bugs are shallow

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

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

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

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

Вопросы

Вопросы

• Сперва мои

Вопросы

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

Вопросы

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

Вопросы

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

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

Спасибо!

Alexey LyanguzovSoftware Quality SpecialistSun Microsystems, St. Petersburg