Windows Mobile - инструмент автоматического тестирования для приложений без пользовательского интерфейса - PullRequest
0 голосов
/ 28 января 2011

Мне нужно автоматизировать тестирование моего приложения для Windows Mobile.Мое приложение не имеет пользовательского интерфейса.Таким образом, обычные инструменты тестирования, которые работают со случайными нажатиями клавиш и щелчками мыши, здесь не будут работать.Есть ли в Windows Mobile какие-либо инструменты для проверки только фоновой обработки?

1 Ответ

0 голосов
/ 31 января 2011

У вас есть несколько вариантов в зависимости от того, какой уровень тестирования вы хотите.

  • Интегрированный тест

Интегрированный тест направлен на тестирование приложения в реальном мире. Поэтому вы должны создать все «настоящие» вещи и написать код, чтобы конкретно проверить, выполняются ли ваши условия. Однако я считаю, что если вы пытаетесь протестировать GPS, это не будет практичным. Поскольку кому-то на самом деле придется перемещать устройство.

  • Юнит-тест с помощью насмешки

Я делал это раньше для тестирования GPS. Идея состоит в том, что вы ОТПРАВЛЯЕТЕ тестируемый объект. Вы гарантируете, что все внешние ссылки (например, все, что не является объектом) являются интерфейсами. Затем вы МОКАЕТЕ эти интерфейсы с реализациями «только для тестирования».

Например, я работал над тестом GPS, где мы использовали интерфейс INmeaInterpreter для запуска определенных событий, которые будут обнаружены классом с именем PositioningService.
Реализация по умолчанию была сторонним компонентом. Однако, поскольку INmeaInterpreter был интерфейсом, мы могли создать реализацию, которая вместо использования данных REAL использует (например) файл NMEA для чтения. Это позволило нам протестировать работу PositioningService в определенных (а иногда и странных) сценариях.

Я бы тогда предложил посмеяться над другими внешними ссылками. Вызов к базе данных может быть просто фиктивным объектом со счетчиком для вызова базы данных, который увеличивается, если он вызывается. Затем можно написать тест с файлом NMEA, который должен привести к вызову базы данных, а затем в конце модульного теста проверить этот фиктивный объект, чтобы убедиться, что этот вызов произошел.

Мы сделали все вышеперечисленное с ужасным MSTest, но вы можете использовать любой фреймворк для тестирования (я рекомендую NUnit). Я не уверен, есть ли варианты специально протестировать на устройстве. Мы выполнили все наши тесты на настольном компьютере, так как мы аккуратно разбили код так, чтобы код для конкретного устройства был изолирован и мог легко быть заменен эквивалентами рабочего стола.

Очевидно, что единственная проблема с модульными тестами состоит в том, что они не тестируют аппаратное обеспечение .


Я бы порекомендовал (в зависимости от размера проекта и команды) проводить ОБА типы тестов, но уделять больше внимания юнит-тестам (так как их легче запускать / управлять).

...