Какой метод тестирования использовать? - PullRequest
3 голосов
/ 06 декабря 2011

Прежде всего, я новичок в тестировании программного обеспечения.Я полагаю, я довольно зеленый.Тем не менее, для этого проекта мне нужно убедиться, что все расчеты выполнены правильно.На данный момент я использую модульные тесты для тестирования каждого модуля в C #, чтобы убедиться, что он делает то, что должен.

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

Например, я также использую элементы графического интерфейса, следуетЯ тестирую их?Должен ли я просто проверить его с помощью, а затем визуально подтвердить, что все в порядке?Я знаю, что это зависит от того, критично это или нет, но в какой момент вы говорите: «Давайте не будем это проверять, потому что это не очень важно / важно»?

Итак, резюме: Как выбрать, какой метод тестированиялучше всего, и где вы проводите черту, когда используете метод для тестирования своего программного обеспечения?

Ответы [ 3 ]

2 голосов
/ 06 декабря 2011

Существует несколько видов тестов, но наиболее важными из них являются модульное тестирование, тестирование компонентов, функциональное тестирование и сквозное тестирование.

  • Unit tests проверяет, работают ли ваши классы так, как задумано. (JUnit). Эти тесты являются основой вашей тестовой среды, так как они показывают, работают ли ваши методы. Ваша цель - 100% охват, так как это самая важная часть ваших тестов.
  • Component tests проверяет, как несколько классов работают вместе в вашем коде. Компонент может содержать много кода, но в основном это больше, чем модульное тестирование, и меньше, чем функциональное тестирование. Покрытие цели составляет около 75%.
  • Function tests проверяет фактические функции, которые вы реализуете. Например, если вы хотите кнопку, которая сохраняет некоторые входные данные в базе данных, это функциональность программы. Это то, что вы тестируете. Здесь охват цели составляет около 50%.
  • End-to-end tests проверяет все ваше приложение. Они могут быть довольно надежными, и вы, вероятно, не можете и не хотите тестировать все, этот тест здесь, чтобы проверить, работает ли вся система. Покрытие цели составляет около 25%.

Это тоже порядок важности.

Хотя в них нет такой вещи, как "лучше". Любой тест, который вы можете запустить, чтобы проверить, правильно ли работает ваш код, одинаково хорош.

Вы, вероятно, хотите, чтобы большая часть тестов была автоматизирована: чтобы вы могли тестировать, когда у вас перерыв на кофе, или ваши серверы могут тестировать все, пока вы не на работе, а затем проверять результаты утром.

Тестирование GUI считается самой сложной частью тестирования, и есть несколько инструментов, которые помогут вам в этом, например, Selenium для тестирования браузера-GUI. Из-за этого несколько архитектурных шаблонов, таких как Model-View-Presenter, пытаются отделить часть приложения с графическим интерфейсом и работают с максимально простым интерфейсом, чтобы избежать ошибок. Если вы сможете успешно отделить вашу графику, вы сможете макетировать графическую часть приложения и просто исключить ее из большей части процесса тестирования.

Для справки я предлагаю «Эффективное тестирование программного обеспечения» от Эльфриды Дастин, но я не знаком с книгами на эту тему; могут быть и лучшие.

0 голосов
/ 06 декабря 2011

Этот ответ зависит от типа приложения, в котором вы участвуете - WinForms Для GUI используйте шаблон MVC / MVP. Избегайте записи какого-либо кода в коде файла. Это позволит вам протестировать код вашего пользовательского интерфейса. Когда я говорю код пользовательского интерфейса, это означает, что вы сможете проверить свой код, который будет вызываться при нажатии кнопки или любых действиях, которые необходимо предпринять в случае возникновения события пользовательского интерфейса.

Вы должны быть в состоянии выполнить модульное тестирование каждого из ваших файлов классов (кроме кода пользовательского интерфейса). Это будет в основном сосредоточено на тестировании на основе состояния.

Кроме того, вы сможете писать тестовые сценарии взаимодействия для тестов, включающих несколько файлов классов. Это должно охватывать большинство ваших потоков.

Итак, две вещи, на которых нужно сосредоточиться Тестирование на основе состояния и Тестирование взаимодействия .

0 голосов
/ 06 декабря 2011

Это действительно зависит от программного обеспечения, которое вам нужно протестировать.Если вас больше всего интересует логика (расчеты), то вам следует написать несколько интеграционных тестов, которые будут проверять не только отдельные методы, но и рабочий процесс от начала до конца, поэтому постарайтесь эмулировать действия обычного пользователя.Я с трудом представляю, как пользователь вызывает один конкретный метод - скорее всего, какую-то определенную последовательность методов.Если с расчетами все в порядке, то вероятность того, что графический интерфейс будет отображаться неправильно, невелика.Кроме того, автоматизация GUI - это длительный процесс, и для его создания и обслуживания потребуется много навыков и энергии, поскольку каждое простое изменение может затормозить все.Я советую начать с написания интеграционных тестов с различными значениями, которые будут охватывать наиболее распространенные сценарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...