Sqadays 8-barancev

2,256 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,256
On SlideShare
0
From Embeds
0
Number of Embeds
1,362
Actions
Shares
0
Downloads
25
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Sqadays 8-barancev

  1. 1. Алексей Баранцев, Software-Testing.Ru 19-20 ноября 2010, Санкт-Петербург
  2. 2. 1. Основные техники функционального тестирования 2. Модульное тестирование: техники и инструменты 3. Тестирование защищенности веб-приложений 4. Стандарты в области тестирования и их применение на практике 5. Тестирование производительности веб-приложений 6. Работа с исходным программным кодом 7. Функциональное тестирование на основе моделей 8. Автоматизация функционального тестирования веб-приложений 9. Функциональное тестирование на основе вариантов использования 10. Управление требованиями, запросами на изменение и дефектами 11. Инструменты автоматизации тестирования семейства Selenium 12. Тестирование методом свободного поиска (exploratory testing) 13. Регрессионное тестирование 14. Тестирование веб-сервисов 15. Бесплатные и недорогие инструменты тестирования
  3. 3.  Читать / анализировать  глазами  автоматизированный статический анализ  автоматизированный динамический анализ  Модифицировать  статически  динамически
  4. 4.  Статический анализ  Динамический анализ  Статическая модификация  Динамическая модификация
  5. 5.  Собственно код программы на ЯП  Запросы к БД, триггеры, «хранимки»  Дизайн / верстка  Ресурсные файлы  Внутренние настроечные файлы  Код «чужих» используемых компонентов
  6. 6.  Code review могут делать тестировщики!  Первичная проверка локализации – чтение ресурсных файлов, желательно с инструментом проверки орфографии  Чтение комментариев в коде  «этого никогда не должно случиться!»  Поиск чего-нибудь «подозрительного»  http://www.fujinonbinos.com/
  7. 7.  Beyond Compare  Compare It!
  8. 8.  Анализ журнала компиляции  Повышение уровня «подозрительности» компилятора / интерпретатора  use strict; use warnings; -T (Perl)  -Wall, -Wextra, -Werror (С/С++)  -Xlint (Java)
  9. 9.  http://en.wikipedia.org/wiki/Cyclomatic_complexity  http://kapustin-andrey.boom.ru/Materials/Metrics2.htm  Среды разработки (Eclipse, VSTS)  Специализированные инструменты  PMD (Java)  Saikuro (Ruby)  Sonar (Java, …)
  10. 10.  Автоматизированный сквозной анализ кода, отчёт о «подозрительных» местах  PMD, FindBugs (Java)  FxCop (.Net)  Ручной целенаправленный поиск  NDepend
  11. 11. public void doSomething() { try { FileInputStream fis = new FileInputStream("file.txt"); } catch (IOException ioe) { // not good } }
  12. 12. public class Foo { public void bar() { System.exit(0); } }
  13. 13.  Неинициализированные переменные  Проход по нулевому указателю  Выход за границы массива  Отсутствие проверки полученных от пользователя данных перед использованием  …
  14. 14.  Пути распространения влияния  дефектов  изменений
  15. 15.  Среды разработки (Eclipse, MSVS)  Специализированные инструменты  Clover, EMMA, JCoverage, … (Java)  Ncover (.Net)  Flexcover (Flex)  rcov (Ruby)  PHPCoverage (PHP)  xCover (C/C++)
  16. 16.  Функции  Строки  Операторы  Ветви  Предикаты  Дизъюнкты  Пути
  17. 17.  Pex (.Net)
  18. 18.  Среды разработки (Eclipse, MSVS)  JVM Tooling Interface  Специализированные инструменты  YourKit, Jprobe, AppPerfect (Java)  JetBrains dotTrace (.Net)
  19. 19. void foo() { for (...) { if (...) return; } // Execution should never reach this point! assert false; }
  20. 20.  Стабы  заглушки на внешние интерфейсы  Моки  заглушки на внутренние интерфейсы  Фейки  искусственное управляемое окружение
  21. 21.  AspectJ  AspectWerkz  Hyper/J JAC  JMangler  MixJuice  PROSE  ArchJava
  22. 22. public class TestClass { public void sayHello () { System.out.println ("Hello, AOP"); } public void sayAnyThing (String s) { System.out.println (s); } public static void main (String[] args) { sayHello (); sayAnyThing ("ok"); } }
  23. 23. public aspect MyAspect { public pointcut sayMethodCall (): call (public void TestClass.say*() ); before(): sayMethodCall() { System.out.println("n TestClass." + thisJoinPointStaticPart.getSignature().getName() + "start..." ); } after(): sayMethodCall() { System.out.println("n TestClass." + thisJoinPointStaticPart.getSignature().getName() + " end..."); } }
  24. 24.  Алексей Баранцев  Software-Testing.Ru  http://software-testing.ru/trainings/

×