Принято считать, что псевдокод — это «инструмент» преимущественно разработчиков, хотя и используемый нечасто. Если обратиться к теории, то псевдокод представляет собой своего рода прототип, шаблон или даже скелет готового функционального решения. В таком случае почему бы не использовать его возможности для тестирования?

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

Итак, чем же может помочь псевдокод в тестировании? Правильнее будет рассматривать его эффективность на примере различных этапов проверки качества продукта. Если не углубляться в тонкости, то жизненный цикл тестирования (именно тестирования) включает в себя следующие стадии: 

  • анализ требований, 

  • планирование, 

  • дизайн, 

  • подготовка данных и окружения, 

  • исполнение тестирования и подведение его итогов. 

Представим, что от заказчика в наш отдел тестирования пришли следующие крайне простые требования:

«Необходимо проверить корректность отображения цветового оформления строк платежей в соответствующей таблице (списке) на странице Платежи клиентов в соответствии со статусом таких платежей и суммами по таким платежам. 

  • Отмененный платеж должен быть залит красным цветом.

  • Неотмененные платежи должны быть залиты зеленым цветом.

  • Отмененные платежи могут также быть залиты желтым цветом, если сумма по ним ≤ 10 рублям.”

Псевдокод в данном случае может иметь следующий общий вид (без притязаний на лучшее возможное качество):

READ Платежи

    IF Платежи.отмена = 0:

        PRINT “Зеленый” (будем использовать Print для упрощения)

    ELIF Платежи.отмена = 1 and Платежи.сумма <=10 рублей (отрицательные суммы не могут присутствовать в данных; валидационные проверки не являются целью текущего тестирования):

        PRINT “Желтый”

    ELSE: 

        PRINT “Красный” 

    ENDIF

Итак, познакомившись с требованиями и составив подобный простенький псевдокод мы можем сформировать свою собственную документацию для последующего тестирования и определиться с кругом вопросов. Например, какой цвет должен быть использован в случае, если сумма платежа отсутствует? При получении от заказчика, скажем, такого ответа: «Если суммы нет, то красим в бесцветный», мы можем дополнить наш псевдокод еще одним условием:

    ELIF Платежи.отмена = 1 and (Платежи.сумма = NULL или Платежи.сумма = ‘ ’):

        PRINT “Бесцветный”

Таким образом могут быть учтены и иные требования, мы рассматриваем лишь общий механизм работы. 

Далее, переходя к планированию мы можем вторично обратиться к ранее составленному нами псевдокоду, объем которого не превышает 10 строк, чтобы определить, сколько нужно времени для тест-дизайна и исполнения тестирования. Обычно на этом этапе (да и на многих последующих) требования, спущенные от заказчика, перечитываются по несколько раз, забываются, теряется их понимание и так далее. Мы же экономим не только время, но и свои нервы. 

Пригодится псевдокод и при подготовке тестовых данных, поскольку случаи, которые следует покрыть проверками, четко отображены в условиях. 

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

Применяя псевдокод в тестировании своих проектов мы пришли к следующим выводам: 

1. это наглядно;

2. это удобно: псевдокод очень легко поддерживать;

3. это быстро. 

Безусловно, не во всех случаях использование псевдокода оправдано и возможно. Это не универсальный инструмент, но зачастую он позволяет экономить много сил и времени. 

UPD: Грустно писать об этом, но это последняя статья Ситимобил на Хабр. Было здорово, спасибо за все!

Комментарии (3)


  1. amarao
    13.03.2022 22:16

    Выглядит душераздирающе. Во-первых очень много словно. Во-вторых возможности языка уровня BASIC 1980 года.

    Сравните с современными языками:

    match payment.cancel, payment.sum {
      true, _  => Green,
      false, sum if sum < 10 => Yellow,
      _, _ => Red
    }

    При этом оно exhaustive (чего не скажешь про "псевдокод") и любым знающим человеком читается куда с большей уверенностью. Вот, например, что будет, если вы в вашем псевдокоде ELSE пропустите?


    1. leranorm Автор
      14.03.2022 15:21

      Большое спасибо за комментарий. Для нас это очень важно!

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


      1. amarao
        14.03.2022 15:43
        -1

        Вот псевдокод не выглядит интересным ни с какой точки зрения. Это ещё один птичий язык, причём довольно корявый, и без перспектив переиспользования.