SlideShare a Scribd company logo
Оптимальное покрытие
       автотестами:
генерация случайных данных
                Геннадий Алпаев
                          Ciklum
Покрытие приложения автотестами             2


  Насколько полным является покрытие кода
  автоматическими скриптами?


        • покрытие спецификаций
        • покрытие ручных тестов
        • покрытие кода
Покрытие кода                            3

   Критерии охвата:
     • охват строк (каждая строка
     выполняется как минимум один раз)
     • охват ветвлений
     (if…then…else)
     • охват условий
     if(A>B or B>C)
Тестирование данных             4


     • Тестирование граничных
      и средних значений

     • Тестирование «опасных»
      значений (A=B/C)
Model-based testing                              5
 • генерировать пути
 • генерировать данные
 • делать обход всех путей с разными данными
                            Путь 1

   данные        условие             результат

                            Путь 2

            Проблемы:
                • время выполнения
                • ресурсозатратно
Решение проблемы                                6

 Continuous Integration + Random Path/Data


                          Путь 1

  данные      условие               результат

                          Путь 2
Недостатки подхода                              7
  • Отслеживание пути в случае возникновения
  ошибки (решение: каждый раз при
  осуществлении выбора оставлять «следы»)

  • Сложность написания и отладки кода

  • Сложность воспроизведения ситуации в
  автоматическом режиме (решение: ручной
  прогон + автоматизация конкретного сценария
Вопросы                            8




          ?
                     Геннадий Алпаев
              Skype: gennadiy.alpaev
          E-mail: karkadil@gmail.com

More Related Content

More from QA Dnepropetrovsk Community (Ukraine)

Работа тестировщиком в Германии - Виктор Малый
Работа тестировщиком в Германии - Виктор МалыйРабота тестировщиком в Германии - Виктор Малый
Работа тестировщиком в Германии - Виктор МалыйQA Dnepropetrovsk Community (Ukraine)
 
тестирование нескольких проектов с пользой для здоровья
тестирование нескольких проектов с пользой для здоровьятестирование нескольких проектов с пользой для здоровья
тестирование нескольких проектов с пользой для здоровья
QA Dnepropetrovsk Community (Ukraine)
 
Most typical mistakes of Russians in English
Most typical mistakes of Russians in EnglishMost typical mistakes of Russians in English
Most typical mistakes of Russians in English
QA Dnepropetrovsk Community (Ukraine)
 
Особенности параллельного тестирования нескольких проектов
Особенности параллельного тестирования нескольких проектов Особенности параллельного тестирования нескольких проектов
Особенности параллельного тестирования нескольких проектов
QA Dnepropetrovsk Community (Ukraine)
 
Профессиональный путь в компаниях Днепропетровска
Профессиональный путь в компаниях ДнепропетровскаПрофессиональный путь в компаниях Днепропетровска
Профессиональный путь в компаниях Днепропетровска
QA Dnepropetrovsk Community (Ukraine)
 
Impact Analysis в тестировании
Impact Analysis в тестированииImpact Analysis в тестировании
Impact Analysis в тестировании
QA Dnepropetrovsk Community (Ukraine)
 
TPI® Next: оптимизируем процессы тестирования по взрослому
TPI® Next: оптимизируем процессы тестирования по взросломуTPI® Next: оптимизируем процессы тестирования по взрослому
TPI® Next: оптимизируем процессы тестирования по взрослому
QA Dnepropetrovsk Community (Ukraine)
 
Алексей Зозуленко - "Использование Selenium Grid 2 для ускорения выполнения т...
Алексей Зозуленко - "Использование Selenium Grid 2 для ускорения выполнения т...Алексей Зозуленко - "Использование Selenium Grid 2 для ускорения выполнения т...
Алексей Зозуленко - "Использование Selenium Grid 2 для ускорения выполнения т...
QA Dnepropetrovsk Community (Ukraine)
 
Андрей Дзыня - "Watir - начало"
Андрей Дзыня - "Watir - начало"Андрей Дзыня - "Watir - начало"
Андрей Дзыня - "Watir - начало"
QA Dnepropetrovsk Community (Ukraine)
 
Иван Лысенко - "Нагрузил, что дальше?"
Иван Лысенко - "Нагрузил, что дальше?"Иван Лысенко - "Нагрузил, что дальше?"
Иван Лысенко - "Нагрузил, что дальше?"
QA Dnepropetrovsk Community (Ukraine)
 
Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"
Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"
Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"
QA Dnepropetrovsk Community (Ukraine)
 
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
QA Dnepropetrovsk Community (Ukraine)
 
Автоматизация тестирования 3+7 аргументов в пользу Test Complete
Автоматизация тестирования 3+7 аргументов в пользу Test CompleteАвтоматизация тестирования 3+7 аргументов в пользу Test Complete
Автоматизация тестирования 3+7 аргументов в пользу Test CompleteQA Dnepropetrovsk Community (Ukraine)
 
Автоматизация тестирования в Microsoft Team System и “костыли”
Автоматизация тестирования в Microsoft Team System и “костыли”Автоматизация тестирования в Microsoft Team System и “костыли”
Автоматизация тестирования в Microsoft Team System и “костыли”QA Dnepropetrovsk Community (Ukraine)
 
Team system - фреймворк для автоматизации тестирования от Microsoft
Team system -  фреймворк для автоматизации тестирования от MicrosoftTeam system -  фреймворк для автоматизации тестирования от Microsoft
Team system - фреймворк для автоматизации тестирования от MicrosoftQA Dnepropetrovsk Community (Ukraine)
 
Тест-менеджмент и баг-треккинг в SpiraTest
Тест-менеджмент и баг-треккинг в SpiraTestТест-менеджмент и баг-треккинг в SpiraTest
Тест-менеджмент и баг-треккинг в SpiraTest
QA Dnepropetrovsk Community (Ukraine)
 
Автопарк требований
Автопарк требованийАвтопарк требований
Автопарк требований
QA Dnepropetrovsk Community (Ukraine)
 

More from QA Dnepropetrovsk Community (Ukraine) (20)

Работа тестировщиком в Германии - Виктор Малый
Работа тестировщиком в Германии - Виктор МалыйРабота тестировщиком в Германии - Виктор Малый
Работа тестировщиком в Германии - Виктор Малый
 
тестирование нескольких проектов с пользой для здоровья
тестирование нескольких проектов с пользой для здоровьятестирование нескольких проектов с пользой для здоровья
тестирование нескольких проектов с пользой для здоровья
 
When qa sucks
When qa sucksWhen qa sucks
When qa sucks
 
Most typical mistakes of Russians in English
Most typical mistakes of Russians in EnglishMost typical mistakes of Russians in English
Most typical mistakes of Russians in English
 
Особенности параллельного тестирования нескольких проектов
Особенности параллельного тестирования нескольких проектов Особенности параллельного тестирования нескольких проектов
Особенности параллельного тестирования нескольких проектов
 
Профессиональный путь в компаниях Днепропетровска
Профессиональный путь в компаниях ДнепропетровскаПрофессиональный путь в компаниях Днепропетровска
Профессиональный путь в компаниях Днепропетровска
 
Ретроспектива в тестировании
Ретроспектива в тестированииРетроспектива в тестировании
Ретроспектива в тестировании
 
Impact Analysis в тестировании
Impact Analysis в тестированииImpact Analysis в тестировании
Impact Analysis в тестировании
 
TPI® Next: оптимизируем процессы тестирования по взрослому
TPI® Next: оптимизируем процессы тестирования по взросломуTPI® Next: оптимизируем процессы тестирования по взрослому
TPI® Next: оптимизируем процессы тестирования по взрослому
 
Алексей Зозуленко - "Использование Selenium Grid 2 для ускорения выполнения т...
Алексей Зозуленко - "Использование Selenium Grid 2 для ускорения выполнения т...Алексей Зозуленко - "Использование Selenium Grid 2 для ускорения выполнения т...
Алексей Зозуленко - "Использование Selenium Grid 2 для ускорения выполнения т...
 
Андрей Дзыня - "Watir - начало"
Андрей Дзыня - "Watir - начало"Андрей Дзыня - "Watir - начало"
Андрей Дзыня - "Watir - начало"
 
Иван Лысенко - "Нагрузил, что дальше?"
Иван Лысенко - "Нагрузил, что дальше?"Иван Лысенко - "Нагрузил, что дальше?"
Иван Лысенко - "Нагрузил, что дальше?"
 
Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"
Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"
Александр Качур - "Android и MeeGo: автоматизация тестовых сценариев"
 
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
 
Автоматизация тестирования 3+7 аргументов в пользу Test Complete
Автоматизация тестирования 3+7 аргументов в пользу Test CompleteАвтоматизация тестирования 3+7 аргументов в пользу Test Complete
Автоматизация тестирования 3+7 аргументов в пользу Test Complete
 
Автоматизация тестирования в Microsoft Team System и “костыли”
Автоматизация тестирования в Microsoft Team System и “костыли”Автоматизация тестирования в Microsoft Team System и “костыли”
Автоматизация тестирования в Microsoft Team System и “костыли”
 
Team system - фреймворк для автоматизации тестирования от Microsoft
Team system -  фреймворк для автоматизации тестирования от MicrosoftTeam system -  фреймворк для автоматизации тестирования от Microsoft
Team system - фреймворк для автоматизации тестирования от Microsoft
 
Project Management Systems
Project Management SystemsProject Management Systems
Project Management Systems
 
Тест-менеджмент и баг-треккинг в SpiraTest
Тест-менеджмент и баг-треккинг в SpiraTestТест-менеджмент и баг-треккинг в SpiraTest
Тест-менеджмент и баг-треккинг в SpiraTest
 
Автопарк требований
Автопарк требованийАвтопарк требований
Автопарк требований
 

Геннадий Алпаев - "Оптимальное покрытие автотестами: генерация случайных данных"

  • 1. Оптимальное покрытие автотестами: генерация случайных данных Геннадий Алпаев Ciklum
  • 2. Покрытие приложения автотестами 2 Насколько полным является покрытие кода автоматическими скриптами? • покрытие спецификаций • покрытие ручных тестов • покрытие кода
  • 3. Покрытие кода 3 Критерии охвата: • охват строк (каждая строка выполняется как минимум один раз) • охват ветвлений (if…then…else) • охват условий if(A>B or B>C)
  • 4. Тестирование данных 4 • Тестирование граничных и средних значений • Тестирование «опасных» значений (A=B/C)
  • 5. Model-based testing 5 • генерировать пути • генерировать данные • делать обход всех путей с разными данными Путь 1 данные условие результат Путь 2 Проблемы: • время выполнения • ресурсозатратно
  • 6. Решение проблемы 6 Continuous Integration + Random Path/Data Путь 1 данные условие результат Путь 2
  • 7. Недостатки подхода 7 • Отслеживание пути в случае возникновения ошибки (решение: каждый раз при осуществлении выбора оставлять «следы») • Сложность написания и отладки кода • Сложность воспроизведения ситуации в автоматическом режиме (решение: ручной прогон + автоматизация конкретного сценария
  • 8. Вопросы 8 ? Геннадий Алпаев Skype: gennadiy.alpaev E-mail: karkadil@gmail.com