Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

2,201 views

Published on

  • Be the first to comment

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

  1. 1. Специфика тестирования проектов с открытым исходным кодом Алексей Лянгузов, Sun Microsystems SPB
  2. 2. План • Введение • Понятия • Особенности тестирования • Минимизация усилий на тестирование • Польза открытости ПО для тестирования • Вопросы
  3. 3. Введение • Цели – Поделиться опытом тестирования открытого ПО – Найти особенности тестирования открытого ПО – Рассказать “Чего избегать” и “К чему стремиться” – Показать, что тестирование зависит от ... – Обсудить высказывание: “Все ошибки становятся заметны, если на них обращено достаточно много глаз” – Разоблачить мнение, что свободные программы тестируют только разработчики и сообщество. Буду помечать особенности Спасибо интернету за картинки!
  4. 4. Далее... • Введение • Понятия • Особенности тестирования • Минимизация усилий на тестирование • Польза открытости ПО для тестирования • Вопросы
  5. 5. Свободное, бесплатное, открытое
  6. 6. Свободное, бесплатное, открытое
  7. 7. Свободное, бесплатное, открытое
  8. 8. Свободное, бесплатное, открытое
  9. 9. Собор vs Базар Два типа разработки описанных Эриком Реймондом в одноименном эссе. http://lib.ru/LINUXGUIDE/bazar.txt_with-big-pictures.html
  10. 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/
  11. 11. Рассматриваемая ситуация свободная коммерческая Двойная лицензия
  12. 12. Рассматриваемая ситуация свободная коммерческая Двойная лицензия Нет функциональных различий (ну почти)
  13. 13. Рассматриваемая ситуация свободная коммерческая Двойная лицензия Нет функциональных различий (ну почти) Разработка прозрачна (принцип базара)
  14. 14. Далее... • Введение • Понятия • Особенности тестирования • Минимизация усилий на тестирование • Польза открытости ПО для тестирования • Вопросы
  15. 15. Исходный код 1. Инспекция исходных текстов программы 2. Проверки, не зависящие от языка программирования и используемых технологий 3. Проверки, зависящие от языка программирования и используемых технологий
  16. 16. Инспекция
  17. 17. Инспекция- Peer Review ! Добавить код Добавить код вврепозиторий репозиторий ДА НЕТ Исправить код Исправить код ОК? ОК? Отправить рецензенту Отправить рецензенту Написать код Написать код Сделать change log Сделать change log ии СС: email alias ––для всех! СС: email alias для всех!
  18. 18. Проверки не зависящие от языка программирования Плохие слова Непечатные символы Одинаковые Опечатки имена файлов Нежелательные слова Унификация EOL и имена компаний
  19. 19. Проверки не зависящие от языка программирования Плохие слова Непечатные символы Одинаковые c имена файлов /* I write super kode !!! */ Нежелательные слова Унификация EOL и имена компаний
  20. 20. Проверки не зависящие от языка программирования F Нажмите клавишу SHIT Непечатные символы Одинаковые c имена файлов /* I write super kode !!! */ Нежелательные слова Унификация EOL и имена компаний
  21. 21. Проверки не зависящие от языка программирования F Нажмите клавишу SHIT Одинаковые c имена файлов /* I write super kode !!! */ Нежелательные слова Унификация EOL и имена компаний
  22. 22. Проверки не зависящие от языка программирования F Нажмите клавишу SHIT Одинаковые c имена файлов /* I write super kode !!! */ Нежелательные слова и имена компаний
  23. 23. Проверки не зависящие от языка программирования F Нажмите клавишу SHIT c /* I write super kode !!! */ Нежелательные слова и имена компаний
  24. 24. Проверки не зависящие от языка программирования F Нажмите клавишу SHIT c /* I write super kode !!! */ /* Этот код закрывает уязвимость в коде компании Noname */
  25. 25. Проверки зависящие от языка программирования Check Style Аудит исходного кода FindBugs XML Валидация документов против DTD, XSD, RNG. Продукт, Проверка правильности Репозиторий расположения исходных файлов и их целостность
  26. 26. Копирайты 1. Копирайты должны быть 2. Копирайты должны быть правильными х Отсутствие копирайта в файле х Использование коммерческого копирайта вместо свободного копирайта х Использование свободного копирайта вместо коммерческого копирайта х Удаление или изменение чужого копирайта
  27. 27. Внутренняя информация и инструменты ● Имена хостов или IP адреса ● Имена пользователей, пароли ● Сокращения и жаргон ● Вещи имеющие трейдмарки (например лого, сплэш-скрин) ● Инструменты “для внутреннего пользования” ● Патентованые или “секретные” алгоритмы и сертификаты. tary Con fidential Proprie
  28. 28. Инфраструктура Новый дефект трэкер
  29. 29. Инфраструктура Новый дефект трэкер Новые инструменты
  30. 30. Инфраструктура Новый дефект трэкер Новые инструменты Осторожно, тормозит!
  31. 31. Инфраструктура Новый дефект трэкер Новые инструменты Осторожно, тормозит! Плохо контролируема
  32. 32. Культура Контрибьютеры
  33. 33. Культура Контрибьютеры Нет группы поддержки (support)
  34. 34. Культура Контрибьютеры Нет группы поддержки (support) Общение с комьюнити – форум, e-mail
  35. 35. Культура Контрибьютеры Нет группы поддержки (support) Общение с комьюнити – форум, e-mail У вашей фирмы есть секреты
  36. 36. Открытость тестирования Подготовка – Планирование – Инструменты – Результаты – Отчёты – Конфигурации - Данные Не касается модульных (unit) тестов! QA Open Source Нужно ли вам это? Готовы ли вы к этому? http://www.vocabahead.com/VocabularyVideos/Videos/TabId/59/VideoId/461/Default.aspx (unwieldy)
  37. 37. Построение продукта (build) Разные операционки
  38. 38. Построение продукта (build) Разные операционки Разные ключи запуска
  39. 39. Построение продукта (build) Разные операционки 3rd party soft Разные ключи запуска
  40. 40. Построение продукта (build) Разные операционки 3rd party soft Разные ключи запуска Уникальное оборудование
  41. 41. Функциональное тестирование При двойном лицензировании Дано: 1 лицензия → 1 продукт 1 продукт → количество тестов Vи (объём тестирования) Vи = [v1, v2, … vn] Надо: 2 продукта → Vдл?
  42. 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. 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. 44. Специфика тестирования при двойной лицензии Тестируйте разницу Общее Специфика продукта 1 Специфика продукта 2 (свободный) (коммерческий) Имена продуктов Номера версий Форма поставки (zip vs. installer) Наличие/отсутствие чего-нибудь (документация, примеры)
  45. 45. Специфика тестирования при двойной лицензии Сдвигайте время релизов t t T1 = T2 T1 ≠ T2 Поверьте, готовить к выпуску два очень похожих, но разных продукта одновременно реально неудобно и ведет к ошибкам
  46. 46. Далее... • Введение • Понятия • Особенности тестирования • Минимизация усилий на тестирование • Польза открытости ПО для тестирования • Вопросы
  47. 47. Минимизация усилий на тестирование Только свободный Двойная лицензия и дистрибутив разные возможности Закрытость Открытость тестирования тестирования Закрытость Открытость разработки разработки Закрытость Открытость исходного кода исходного и данных кода и данных проще сложнее
  48. 48. Далее... • Введение • Понятия • Особенности тестирования • Минимизация усилий на тестирование • Польза открытости ПО для тестирования • Вопросы
  49. 49. Польза открытости ПО для тестирования Тестирование Сообщество Находит пробелы и ошибки в Находит ошибки тестировании Использует пользовательские Предоставляет тестовые данные, конфигурации данные Предоставляет описание Помогает проводить тестов, сценарии и скрипты тестирование на своем оборудовании Приоритезирует и планирует Предоставляет знание об тестирование использовании продукта
  50. 50. Закон Линуса Все ошибки становятся заметны, если на них обращено достаточно много глаз Кто-то находит проблему. А кто-то еще ее понимает. И я часто замечаю, что поиск требует наибольшего навыка Линус Торвальдс Given enough eyeballs, all bugs are shallow
  51. 51. Вопросы
  52. 52. Вопросы • Сперва мои
  53. 53. Вопросы • Сперва мои ─ Зачем проверять исходники?
  54. 54. Вопросы • Сперва мои ✔ Зачем проверять исходники? ─ Какие тесты невозможны?
  55. 55. Вопросы • Сперва мои ✔ Зачем проверять исходники? ✔ Какие тесты невозможны? • А теперь ваши !
  56. 56. Спасибо! Alexey Lyanguzov Software Quality Specialist Sun Microsystems, St. Petersburg

×