Тестирование программных средств Сафронов Сергей, 2009 год.

Презентация:



Advertisements
Похожие презентации
ОСНОВЫ ТЕХНОЛОГИИ РАЗРАБОТКИ ПРОГРАММ. Разработка программ - промышленное производство необходима технология разработки программ. Д. Кнут «Искусство программирования.
Advertisements

Процедуры и функции Процедуры пользователя. Общие сведения Если в программе возникает необходимость частого обращения к некоторой группе операторов, выполняющих.
Тестирование программных средств Сафронов Сергей 2009 год.
Министерство образования Республики Беларусь Белорусский государственный университет Управляющие структуры языков программирования.
Количественное Управление Надежность плана Выполнение процесса Завершенность поставок Сроки поставки Неисправленные дефекты ( на момент поставки Заказчику)
М.Ю. Харламов, ВНУ им. В.Даля, Семантический анализатор Семантический анализатор выполняет следующие основные действия: проверку соблюдения во входной.
Что такое программирование? Совокупность процессов, связанных с разработкой программ и их реализацией. В широком смысле к указанным процессам относят все.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 7.
Тема 7. Отладка и тестирование программных средств.
ЛАБОРАТОРНАЯ РАБОТА 1 ПРОЕКТИРОВАНИЕ И РЕАЛИЗАЦИЯ ТАБЛИЦ, ИСПОЛЬЗУЕМЫХ В ТРАНСЛЯТОРЕ Рейн Т. С.
Подходы к проектированию теста 1. Формулируются цели, проверка которых осуществляется с помощью тестирования 2. Определяется вес теста в модуле 3. Определяется.
1 Тестирование программных продуктов Системное и прикладное программное обеспечение Малышенко Владислав Викторович.
Подпрограммы. Субкомпетенции: 1. Обработка данных с помощью стандартных подпрограмм и подпрограмм, определённых пользователем. 2. Организация передачи.
Разработка программного обеспечения (Software Engineering) Ian Sommervillle Часть 8. Управление качеством.
ТЕСТИРОВАНИЕ МЕТОД «ЧЕРНОГО ЯЩИКА» ВЫПОЛНИЛ СТУДЕНТ ГР. ИВТ-51 з БАННИКОВА Н.Р.
ТЕСТИРОВАНИЕ МЕТОД «ЧЕРНОГО ЯЩИКА» ВЫПОЛНИЛ СТУДЕНТ ГР. ИВТ-51 з БАННИКОВА Н.Р.
Лекция 5. Модели надежности программного обеспечения Учебные вопросы: 1. Классификация моделей надежности 2. Аналитические модели надежности 3. Эмпирические.
Web-учебник "JavaScript для начинающих" Докладчик - аспирант 3 года обучения механико-математического факультета РГУ Хадзиев Руслан Ахметович.
Программирование Программирование – это раздел информатики, задача которого – разработка программного обеспечения компьютера. Люди, работающие на компьютерах.
Транксрипт:

Тестирование программных средств Сафронов Сергей, 2009 год

Оглавление Принципы тестирования Принципы тестирования Ручное тестирование Ручное тестирование ИнспектированиеИнспектирование Порядок действий Порядок действий Признаки, что инспектирование провалилось Признаки, что инспектирование провалилось Список вопросов для выявления ошибок Список вопросов для выявления ошибок Сквозной просмотрСквозной просмотр Оценка посредством просмотраОценка посредством просмотра

Принципы тестирования Описание выходных значений – необходимая часть тестового набора Описание выходных значений – необходимая часть тестового набора Тестирование автором – неэффективно Тестирование автором – неэффективно Негативные тесты следует разрабатывать так же тщательно, как и позитивные Негативные тесты следует разрабатывать так же тщательно, как и позитивные Необходимо проверять не только то, что программа делает то что должно, но и то, что она не делает то что не должна Необходимо проверять не только то, что программа делает то что должно, но и то, что она не делает то что не должна Не следует выбрасывать тесты по завершению тестирования Не следует выбрасывать тесты по завершению тестирования При планировании нельзя закладывать на отсутствие ошибок При планировании нельзя закладывать на отсутствие ошибок Вероятность обнаружения ошибок в модуле пропорциональна числу уже обнаруженных ошибок Вероятность обнаружения ошибок в модуле пропорциональна числу уже обнаруженных ошибок Тестирование – процесс творческий Тестирование – процесс творческий

Инспектирование Инспектирование – набор процедур и приемов обнаружения ошибок при изучении текста группой специалистов Состав инспектирующей группы: Автор Автор Готовит материал для инспекцииГотовит материал для инспекции Отвечает на все вопросы по ходуОтвечает на все вопросы по ходу QA QA Председатель (Senior Programmer или Team Leader) Председатель (Senior Programmer или Team Leader) Составляет план инспекцииСоставляет план инспекции Запись результатов и контроль следования плануЗапись результатов и контроль следования плану Проектировщик Проектировщик

Где и когда применять Сбор требований Сбор требований спецификацииспецификации Разработка архитектуры Разработка архитектуры Дизайн функцийДизайн функций Детальная разработка Детальная разработка Внутренний дизайнВнутренний дизайн Кодирование и юнит тестирование Кодирование и юнит тестирование КодКод

Порядок действий Планирование Планирование Материалы распределяются за 2-3 дня доМатериалы распределяются за 2-3 дня до Определяются основные моменты, на что обратить вниманиеОпределяются основные моменты, на что обратить внимание Определяются критерии успехаОпределяются критерии успеха Подготовка Подготовка Проверка на соответствие стандартамПроверка на соответствие стандартам Использование результатов прошлой проверкиИспользование результатов прошлой проверки Инспектирование Инспектирование Никакой инспекции при отсутствии подготовкиНикакой инспекции при отсутствии подготовки Выработка решений и рекомендацийВыработка решений и рекомендаций Разбор ошибокРазбор ошибок Разбор и анализ результатов Разбор и анализ результатов Проверка на исправление всех выявленных ошибокПроверка на исправление всех выявленных ошибок Следование рекомендациям и решениямСледование рекомендациям и решениям

Признаки того, что инспекция провалилась Технические Технические Концентрация на тривиальномКонцентрация на тривиальном Переход на личностиПереход на личности Непонимание метрик, которые проверяютсяНепонимание метрик, которые проверяются Инспектирование чего угодно кроме качестваИнспектирование чего угодно кроме качества Не выработано никаких рекомендацийНе выработано никаких рекомендаций Не выдержаны временные рамкиНе выдержаны временные рамки Не соответствие плану работыНе соответствие плану работы Организационные Организационные Затраты видны, результаты незаметныЗатраты видны, результаты незаметны Не информировать участников о прогрессеНе информировать участников о прогрессе Директивное управление/навязывание мненияДирективное управление/навязывание мнения Не позволять ошибкам влиять на процедуруНе позволять ошибкам влиять на процедуру Внедрение Внедрение Ожидание чудес от примененияОжидание чудес от применения Несоответствие ожиданиям руководстваНесоответствие ожиданиям руководства Не вынесены никакие урокиНе вынесены никакие уроки

Порядок действий (Майерс) Обсуждение логики программы (краткое описание автором программы) Обсуждение логики программы (краткое описание автором программы) Анализ по списку наиболее частых ошибок программирования Анализ по списку наиболее частых ошибок программирования Основные моменты: Время инспекции – не более 2 часов Время инспекции – не более 2 часов Средняя скорость – 150 операторов в час Средняя скорость – 150 операторов в час Конфиденциальность результатов Конфиденциальность результатов Attack the problem, not the person Attack the problem, not the person

Список вопросов для выявления ошибок Ошибки обращения к данным: Неинициализованные переменные Неинициализованные переменные Выход за границы массивов Выход за границы массивов Индексы – целые числа? Индексы – целые числа? Обращение к невыделенной/освобожденной памяти Обращение к невыделенной/освобожденной памяти Корректны ли атрибуты во всех псевдонимах? Корректны ли атрибуты во всех псевдонимах? Битовые строки: вычислимы ли адреса? Передаются ли как аргументы? Битовые строки: вычислимы ли адреса? Передаются ли как аргументы? Идентичность определения структур в разных модулях Идентичность определения структур в разных модулях Проблемы с индексацией и обращениями к массивам Проблемы с индексацией и обращениями к массивам

Список вопросов для выявления ошибок Вычисления: Есть ли вычисления неарифметических переменных Есть ли вычисления неарифметических переменных Вычисления с использованием данных разных типов Вычисления с использованием данных разных типов Вычисления с переменными разной длины Вычисления с переменными разной длины Переполнение/потеря промежуточного значения Переполнение/потеря промежуточного значения Деление на ноль Деление на ноль Не выходят ли значения переменной за пределы установленного диапазона Не выходят ли значения переменной за пределы установленного диапазона Деление целых чисел Деление целых чисел

Список вопросов для выявления ошибок Описание данных Все ли переменные описаны? Все ли переменные описаны? Правильно ли инициированы массивы и строки Правильно ли инициированы массивы и строки Правильно ли выделяется память Правильно ли выделяется память Переменные со сходными именами Переменные со сходными именами Передача управления Будет ли завершен каждый цикл Будет ли завершен каждый цикл Рекурсия Рекурсия Невыполнимые циклы Невыполнимые циклы Корректность числа итераций цикла Корректность числа итераций цикла Неявные решения Неявные решения

Список вопросов для выявления ошибок Сравнение Сравнение величин несравнимых типов Сравнение величин несравнимых типов Корректность булевских выражений Корректность булевских выражений Порядок следования операторов Порядок следования операторовВвод-вывод Корректность атрибутов файлов Корректность атрибутов файлов Соответствие ввода/вывода формату Соответствие ввода/вывода формату Соответствует ли размер буфера размеру записи? Соответствует ли размер буфера размеру записи? Открыты ли файлы перед использованием Открыты ли файлы перед использованием Ошибки ввода/вывода Ошибки ввода/вывода Ловятся ли признаки конца файла Ловятся ли признаки конца файла

Список вопросов для выявления ошибок Интерфейс Равно ли число параметров числу аргументов Равно ли число параметров числу аргументов Соответствие типов параметров и аргументов Соответствие типов параметров и аргументов Соответствие единиц измерения для параметров/аргументов Соответствие единиц измерения для параметров/аргументов Правильно ли заданны число аргументов, типы и порядок следования для аргументов встроенных функций Правильно ли заданны число аргументов, типы и порядок следования для аргументов встроенных функций Обращения к локалам вне контекста Обращения к локалам вне контекста Передаются ли в качестве аргументов константы Передаются ли в качестве аргументов константы Другие виды контроля Есть ли какие-нибудь предупреждения или сообщения при компиляции Есть ли какие-нибудь предупреждения или сообщения при компиляции Нет ли пропущенных функций Нет ли пропущенных функций Осуществляется контроль правильности входных параметров Осуществляется контроль правильности входных параметров

Сквозной просмотр Длительность – менее 2 часов Длительность – менее 2 часов Состав группы – 3-5 человек Состав группы – 3-5 человек АвторАвтор QAQA ПредседательПредседатель Пользователь*Пользователь* Новичок в программировании*Новичок в программировании* * - могут отсутствовать Механизм – ручное выполнение программы (на неком наборе тестов) и обсуждение всех возникших вопросов и найденных проблем Механизм – ручное выполнение программы (на неком наборе тестов) и обсуждение всех возникших вопросов и найденных проблем

Оценка посредством просмотра Число участников: 6 – 20 Число участников: 6 – 20 От каждого 2 варианта кода: хороший и плохой (с точки зрения автора) От каждого 2 варианта кода: хороший и плохой (с точки зрения автора) Код номеруется и вслепую раздается каждому по 2 варианта хорошего кода и 2 плохого, причем участникам эксперимента не говорится где какой Код номеруется и вслепую раздается каждому по 2 варианта хорошего кода и 2 плохого, причем участникам эксперимента не говорится где какой 30 минут на анализ кода по след критериям: 30 минут на анализ кода по след критериям: Легко ли понять программуЛегко ли понять программу Являются ли результаты проектирования высокого уровня очевидными и приемлемыми?Являются ли результаты проектирования высокого уровня очевидными и приемлемыми? Являются ли результаты проектирования низкого уровня очевидными и приемлемыми?Являются ли результаты проектирования низкого уровня очевидными и приемлемыми? Легко ли было бы для вас модифицировать этот кодЛегко ли было бы для вас модифицировать этот код Были ли бы вы довольны, если бы написали такую программуБыли ли бы вы довольны, если бы написали такую программу Общее мнение/рекомендацииОбщее мнение/рекомендации Предъявление статистики участникам Предъявление статистики участникам Цель: внутренняя оценка квалификации для программистов внутри команды Цель: внутренняя оценка квалификации для программистов внутри команды