Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

Sqadays 8-barancev

on

  • 1,471 views

 

Statistics

Views

Total Views
1,471
Views on SlideShare
771
Embed Views
700

Actions

Likes
0
Downloads
23
Comments
0

4 Embeds 700

http://testitquickly.com 626
http://it-study.by 63
http://www.it-study.by 10
http://readbox.info 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Sqadays 8-barancev Sqadays 8-barancev Presentation Transcript

  • Какое дело тестировщикамдо исходного кода?
    Алексей Баранцев, Software-Testing.Ru
    19-20 ноября 2010, Санкт-Петербург
  • http://software-testing.ru/trainings/records
    Основные техники функционального тестирования
    Модульное тестирование: техники и инструменты
    Тестирование защищенности веб-приложений
    Стандарты в области тестирования и их применение на практике
    Тестирование производительности веб-приложений
    Работа с исходным программным кодом
    Функциональное тестирование на основе моделей
    Автоматизация функционального тестирования веб-приложений
    Функциональное тестирование на основе вариантов использования
    Управление требованиями, запросами на изменение и дефектами
    Инструменты автоматизации тестирования семейства Selenium
    Тестирование методом свободного поиска (exploratorytesting)
    Регрессионное тестирование
    Тестирование веб-сервисов
    Бесплатные и недорогие инструменты тестирования
  • Что можно делать с исходным кодом?
  • Что можно делатьс исходным кодом?
    Читать / анализировать
    глазами
    автоматизированный статический анализ
    автоматизированный динамический анализ
    Модифицировать
    статически
    динамически
  • Что можно делатьс исходным кодом?
    Статический анализ
    Динамический анализ
    Статическая модификация
    Динамическая модификация
  • Зачем?
  • Читаем код глазами
  • Что такое «исходный код»?
    Собственно код программы на ЯП
    Запросы к БД, триггеры, «хранимки»
    Дизайн / верстка
    Ресурсные файлы
    Внутренние настроечные файлы
    Код «чужих» используемых компонентов
  • Читаем код глазами
    Code review могут делать тестировщики!
    Первичная проверка локализации – чтение ресурсных файлов, желательно с инструментом проверки орфографии
    Чтение комментариев в коде
    «этого никогда не должно случиться!»
    Поиск чего-нибудь «подозрительного»
    http://www.fujinonbinos.com/
  • Статический анализ кода
  • Как узнать, что изменилось?
    Beyond Compare
    Compare It!
  • Компиляция «с ворнингами»
    Анализ журнала компиляции
    Повышение уровня «подозрительности» компилятора/ интерпретатора
    use strict; use warnings; -T (Perl)
    -Wall, -Wextra, -Werror (С/С++)
    -Xlint(Java)
  • Анализ сложности кода
    http://en.wikipedia.org/wiki/Cyclomatic_complexity
    http://kapustin-andrey.boom.ru/Materials/Metrics2.htm
    Среды разработки (Eclipse, VSTS)
    Специализированные инструменты
    PMD (Java)
    Saikuro (Ruby)
    Sonar (Java, …)
  • Поиск «подозрительных мест»
    Автоматизированный сквозной анализ кода, отчёт о «подозрительных» местах
    PMD,FindBugs (Java)
    FxCop (.Net)
    Ручной целенаправленный поиск
    NDepend
  • Примеры «подозрительных мест»
    public void doSomething() {
    try {
    FileInputStreamfis=
    newFileInputStream("file.txt");
    } catch (IOExceptionioe) {
    // not good
    }
    }
  • Примеры «подозрительных мест»
    public class Foo {
    public void bar() {
    System.exit(0);
    }
    }
  • Поиск потенциальных ошибок
    Неинициализированные переменные
    Проход по нулевому указателю
    Выход за границы массива
    Отсутствие проверки полученных от пользователя данных перед использованием

  • Анализ зависимостей
    Пути распространения влияния
    дефектов
    изменений
  • Динамический анализ кода
  • Измерение покрытия кода
    Среды разработки (Eclipse, MSVS)
    Специализированные инструменты
    Clover, EMMA, JCoverage, … (Java)
    Ncover (.Net)
    Flexcover (Flex)
    rcov (Ruby)
    PHPCoverage (PHP)
    xCover (C/C++)
  • Измерение покрытия кода
    Функции
    Строки
    Операторы
    Ветви
    Предикаты
    Дизъюнкты
    Пути
  • Автоподбор тестов
    Pex (.Net)
  • Профилированиеи мониторинг
    Среды разработки (Eclipse, MSVS)
    JVM Tooling Interface
    Специализированные инструменты
    YourKit, Jprobe, AppPerfect (Java)
    JetBrainsdotTrace (.Net)
  • Профилированиеи мониторинг
  • Статическая модификация кода
  • Проверки в коде: ассерты
    void foo() {
    for (...) {
    if (...) return;
    }
    // Execution should never reach this point!
    assert false;
    }
  • Фиктивные объекты
    Стабы
    заглушки на внешние интерфейсы
    Моки
    заглушки на внутренние интерфейсы
    Фейки
    искусственное управляемое окружение
  • Динамическая модификация кода
  • Аспектно-ориентированное программирование
    AspectJ
    AspectWerkz
    Hyper/J JAC
    JMangler
    MixJuice
    PROSE
    ArchJava
  • Аспектно-ориентированное программирование
    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");
    }
    }
  • Аспектно-ориентированное программирование
    public aspect MyAspect {
    public pointcutsayMethodCall ():
    call (public void TestClass.say*() );
    before(): sayMethodCall() {
    System.out.println(" TestClass." + thisJoinPointStaticPart.getSignature().getName() + "start..." );
    }
    after(): sayMethodCall() {
    System.out.println(" TestClass." + thisJoinPointStaticPart.getSignature().getName() + " end...");
    }
    }
  • Анализ покрытия кода: EMMA
  • Анализ покрытия кода: Clover
  • Статический анализ: FindBugs
  • The End
  • Вопросы?
    Алексей Баранцев
    Software-Testing.Ru
    http://software-testing.ru/trainings/