Тихонюк А.В.
Студент, кафедра информатики и программного обеспечения вычислительных систем
Национальный исследовательский университет «МИЭТ»
Тестирование программного обеспечения микропроцессорных карт
Аннотация
В статье изложены основные проблемы тестирования микропроцессорных карт и методы их решения, описан подход к тестированию, основанный на использовании сценариев. Рассмотрены основные этапы процесса тестирования и вопрос применимости использования сценариев в процессах тестирования.
Ключевые слова: микропроцессорная карта, тестирование, сценарий.
Keywords: smart card, testing, script.
Проблемы тестирования системного программного обеспечения микропроцессорных карт
В настоящее время наблюдается рост автоматизации в различных сферах человеческой деятельности. Одним из средств автоматизации является микропроцессорная карта. Наибольшую популярность микропроцессорные карты приобрели при развитии GSM-связи, которая использует SIM-карты. Сейчас спектр применения микропроцессорных карт достаточно широк: банковские карты, электронные пропуска, карты проезда в транспорте и т.д.
К микропроцессорным картам предъявляются повышенные требования по надежности и безопасности функционирования. Основным методом измерения качества, определения корректности и реальной надежности функционирования программ[1] является тестирование. Поэтому возникает вопрос о применимости классических методов тестирования ПО микропроцессорных карт.
В русскоязычной литературе превалируют описания методик тестирования вычислительных систем общего назначения, в области же тестирования микропроцессорных карт существует определенный информационный вакуум.
Перечислим классические задачи при тестировании ПО [1, 2]:
- тестирование функциональности (тестирование “черного ящика”): проверка функциональности системы на соответствие требованиям;
- тестирование производительности: определение характеристик производительности, поиск “узких мест”;
- стрессовое тестирование системы при предельной нагрузке на различные ресурсы;
- проверка устойчивости системы к неполадкам и безопасного оперативного восстановления при сбоях: оценка эффективности защиты от аппаратных сбоев, последствий проявления невыявленных дефектов и ошибок программ и данных;
- тестирование совместимости ПО со всеми модификациями аппаратуры, для которых оно предназначено;
- анализ исходных текстов (просмотр экспертом и автоматический анализ);
- оценка удобства использования системы;
- тестирование способности модулей системы к взаимодействию, в том числе перераспределения нагрузки.
Несмотря на многообразие методов и инструментов тестирования, как правило, некоторые ошибки все равно остаются невыявленными. Основной проблемой является невозможность формирования полного набора тестов для подтверждения правильности реализации программы.
Применительно к микропроцессорной карте процесс тестирования разделяется на следующие задачи:
- тестирование функциональности карты;
- тестирование устойчивости;
- тестирование граничных условий.
При тестировании функциональности необходимо проверить правильность ответа на все возможные комбинации входных данных. Стоит отдельно рассмотреть проверку криптографических функций. Если для большинства команд операционной системы существует возможность просто задать значения подаваемых на карту данных, то для проверки криптографических функций необходимо подать карте команду, содержащую зашифрованные данные.
При тестировании на устойчивость для каждой из команд необходимо проверить наибольшее количество различных комбинаций входных данных.
При тестировании граничных значений следует рассматривать следующие параметры микропроцессорной карты:
- размер оперативной памяти;
- размер EEPROM;
- ограничения на размер файлов и записей.
Структура процесса тестирования с использованием сценариев
Процесс тестирования микропроцессорных карт подразделяется на следующие этапы.
1) Авторская отладка и тестирование программного обеспечения карты.
2) Полное тестирование ПО.
3) Тестирование в процессе производства.
Далее рассмотрим достоинства использования сценариев в каждом из этих процессов.
Авторская отладка и тестирование
При написании программного обеспечения всегда появляется необходимость отладки и тестирования. Автор должен иметь возможность быстрой проверки всех возможных состояний, в которых может находиться программа. При использовании сценария автор имеет возможность написания сценария тестирования параллельно с написанием программы. При использовании подпрограмм и циклов написания сценария требует гораздо меньших затрат времени. Поэтому программист уже на этапе написания программы получает возможность тестировать всю реализованную функциональность программы.
Полное тестирование ПО
Тестирование программного продукта начинается задолго до окончания его разработки. Как правило, при достижении программным обеспечением некоторого уровня функциональности, промежуточная версия передается для тестирования. Таких промежуточных версий может появиться достаточно большое количество, и они могут отличаться по составу выполняемых функций. Поэтому целесообразно изначально создать сценарий тестирования на основе требований ТЗ и имеющейся информации, а далее лишь вносить в него изменения.
Алгоритм тестирования программного продукта включает следующие действия.
Для каждого типа ПО:
- Разработка методики испытаний
- Разработка сценария соответствующего этой методике
Далее для каждой версии:
- Изменение параметров сценария в соответствии с новой версией
- Выявление ошибок
- Коррекция ошибок
- Переход к пункту 2.1 или конец при отсутствии ошибок.
Помимо этого в сценарий можно внести константные значения параметров микропроцессорной карты. При переносе программы на другую микропроцессорную карту, отличающуюся параметрами можно использовать уже написанный сценарий тестирования, изменив константные параметры.
На данный момент существует множество стандартов на команды, подаваемые на карту. Часть команд описана в стандарте IS07816. Поэтому множество команд в различных картах работают одинаково. Подпрограммы тестирующие такие команды можно объединить в библиотеки и использовать при написании новых сценариев.
Тестирование в процессе производства
Тестирование в процессе производства делятся на:
- Тесты на годность кристалла.
- Периодические испытания.
- Испытания накопителя
- Температурные испытания.
Тесты на годность производятся на каждом микроконтроллере, для определения является ли он бракованным. Данные тесты включают проверку функциональности изделия при различных значениях напряжения питания. Описываемая программа не может быть использована на данном этапе, так как при тестировании используются очень специфическое оборудование.
Периодические испытания – это испытания, производимые над случайной выборкой изделий через определенные промежутки времени. Эти испытания проводятся для проверки соответствия изделий установленным нормам.
Для периодических испытаний в программе предусмотрен специальный режим. Для тестирования составляется сценарий, подающий команды на все подключенные карты и выдающий результаты в журнал испытаний и таблицу тестов.
Любые периодические испытания характеризуются периодической подачей одинаковых команд. В данном случае использование сценариев позволяет:
- Тестировать криптографические команды. Часто в микропроцессорных картах используется специальный сопроцессор для криптографических операций.
- Оперативно выявлять причину отказа карты. При выявлении отказа карты. Она переводится в сервисный режим. И подается команда на выдачу причины отказа.
- Липаев В.В. Надежность программных средств. Серия «Информатизация России на пороге XXI века». М.: СИНТЕГ, 1998. 232 с.
- Бейзер Б. Технологии функционального тестирования программного обеспечения и систем. СПб, Питер, 2004. 320 с.