Все Лекции
.pdf
Последствия от ошибок в ПО
•С 2000 года по 2010 год в США в авариях с автомобилями Toyota погибло 89 человек и 57 получили увечья, в связи с неисправностями электроники.
•В ходе десятимесячного расследования специалисты выявили, что софт не соответствует стандартам MISRA (Motor Industry Software Reliability Association) и
содержит 7134 нарушения.
23
Стоимость ошибки
•Стоимость ошибки возрастает при прохождении по циклу разработки
Источники: Boehm (1976), Baizuk (1995)
24
Современная практика разработки ПО.
Компания Google
Около 4х миллиардов пользователей
•Gmail –1.5 миллиард активных пользователей
•Youtube-1.9 миллиард активных пользователей
•2.5 миллиарда устройств на
Android
120 тыс. сотрудников
•Более 13 тыс. отдельных проектов
•Все проекты синхронизируются в единый репозиторий
•4.2 млн. тестов выполняются непрерывно
•150 млн. тестов запускаются каждый день
•99% тестов завершаются успешно
25
Современная практика разработки ПО. Компания Google
•Тестировщики отвечают за автоматизацию и инфраструктуру.
•Разработка тестов приравнена к разработке функционала.
•Невозможно синхронизировать код в репозиторий без инспекции и прохождения тестов.
•1-2 тестировщика на команду из 8-10 разработчиков.
•Разработчики отвечают за реализацию тестов.
26
Анализ требований заказчиков по качеству
Методы верификации. Инспекция
•Систематическая проверка артефактов программного продукта –спецификаций, исходного кода программы и т.д. с целью обнаружения и исправления ошибок.
•Целью инспекции является улучшение качества программного продукта и совершенствование навыков разработчика.
•Методы инспекции:
•Инспекция кода
•Парное программирование
•Инструментированная инспекция
•Пошаговая инспекция
•Командная инспекция
28
Методы верификации. Статический анализ
•Проверка свойств программного обеспечения посредством использования синтаксической, поведенческой или структурной информации о программном обеспечении.
•В отличие от тестирования, выполнение программ не производится.
•Анализ включает в себя ручное или автоматическое создание модели системы и проверку ее свойств на модели без выполнения программы.
29
Примеры типовых ошибок
Параллелизм
•Состояния гонки
•Взаимная блокировка
•Асинхронная блокировка
Исключительные условия
•Целое число, превышающее/понижающее
•Деление на ноль
•Непредвиденные исключения
•Не обрабатывает случаи ошибок
•Ошибки преобразования типа
Качество кода
•Метрики
•Неиспользуемые переменные
•Стиль программирования, комментарии
Ошибки работы с памятью
•Границы массива/переполнение буфера
•Недопустимое освобождение указателей
•Неправильное освобождение памяти
•Утечки памяти
•Использование неинициализированных данных
30
Тестирование на различных уровнях
•Приемные испытания. Насколько система отвечает требованиям пользователя
•Интеграционное тестирование. Тестирование взаимодействия отдельных модулей.
•Системное тестирование. Тестирование всей функциональности системы.
•Модульное тестирование. Изолированное тестирование каждого метода, класса, файла.
31
Классификация тестов
32
