Перейти к содержимому

Фотография

Зависимости между тест кейсами

testNG dependsOnMethods

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 SlavikF

SlavikF

    Новый участник

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Фурсов Славик


Отправлено 28 июля 2016 - 22:20

Народ, почему принято считать, что зависимости между тест кейсами - это зло? Вот пишут "Tests should not depend on each other."

 

Например в TestNG у меня два теста Test1 и Test2. Один создаёт репорт, второй - удаляет.

Я использую "dependsOnMethods", то есть Test2 dependsOnMethods = "Test1"

Но мне тут объясняют, что так делать нежелательно.

 

Я понимаю, что в общем, да - зависимости усложняют структуру тестов, но вот в вышеприведённом случае это вроде бы оправдано.

Или я что-то упускаю?


  • 0

#2 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 29 июля 2016 - 06:38

Ну это достаточно холиварная тема про CRUD

 

Возможно стоит объединить их в один, а так да - тесты должны быть независимы друг от друга(по крайней мере необходимо стараться)


  • 0

#3 SlavikF

SlavikF

    Новый участник

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Фурсов Славик


Отправлено 29 июля 2016 - 06:42

Ну это достаточно холиварная тема про CRUD

 

Возможно стоит объединить их в один, а так да - тесты должны быть независимы друг от друга(по крайней мере необходимо стараться)

 

Ну вот расскажите - откуда это? Что такого нехорошего в том, что тесты зависимы?

Я вот могу понять, что в некоторых случаях это плохо, потому что усложняет общую структуру.

Но не понимаю, почему это правило возведено в некоторый абсолют: [все] тесты должны быть независимы друг от друга?


  • 0

#4 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 29 июля 2016 - 06:49

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


  • 0

#5 Garm

Garm

    Активный участник

  • Members
  • PipPip
  • 116 сообщений

Отправлено 29 июля 2016 - 07:10

 

Ну это достаточно холиварная тема про CRUD

 

Возможно стоит объединить их в один, а так да - тесты должны быть независимы друг от друга(по крайней мере необходимо стараться)

 

Ну вот расскажите - откуда это? Что такого нехорошего в том, что тесты зависимы?

Я вот могу понять, что в некоторых случаях это плохо, потому что усложняет общую структуру.

Но не понимаю, почему это правило возведено в некоторый абсолют: [все] тесты должны быть независимы друг от друга?

 

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

 

Тест кейсы стоит делать атомарными и независимыми, 1 тест кейс — одна проверка. Если в создании репортов есть баг (не создаётся, неверный id выдаётся или ещё что), то второй кейс также провалится, хотя сама функциональность может и работать. В общем, если в цепочке связанных тест-кейсов что-то пойдёт не так, то это повлияет на дальнейшие кейсы. 

Второй момент, атомарные кейсы проще и удобнее поддерживать.

 

Я не считаю что "все" тест-кейсы должны быть независимыми, действительно есть случаи, когда связанные удобнее или даже необходимы (например, если мок-объекты недоступны, а данные мы получаем уникальные). Но как правило, вполне можно обойтись независимыми.


  • 0

#6 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 29 июля 2016 - 08:24

Ну это достаточно холиварная тема про CRUD
 
Возможно стоит объединить их в один, а так да - тесты должны быть независимы друг от друга(по крайней мере необходимо стараться)

 
Ну вот расскажите - откуда это? Что такого нехорошего в том, что тесты зависимы?
Я вот могу понять, что в некоторых случаях это плохо, потому что усложняет общую структуру.
Но не понимаю, почему это правило возведено в некоторый абсолют: [все] тесты должны быть независимы друг от друга?

Это Best practices. Простые правила, которые позволяют не слишком г%;№*кодить и при этом не тратить много времени на размышления про то, как этот код будет жить через год, 3, 5.
  • 0

#7 appmen

appmen

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 29 июля 2016 - 13:56

Ну, есть, к примеру, 2 теста. 1й создаёт пользователя, 2й логинится и выполняет что-то. Есть 2 варианта как это реализовать:

1. Сделать зависимый тест(2й). Из плюсов - всё просто. Из минусов - если что-то пойдёт не так, то 2й тест не выполнится, хотя всё будет работать верно. Это создаст некоторое напряжение и лишние затраты на проверку.

2. Эти тесты независимы, 2й тест использует заранее созданного юзера. Из плюсов - в таком случае 2й тест 100% выполнится при фейле 1го. Из минусов - новые юзеры могут быть с багом и всё будет плохо, а ваши тесты будут зелёненькими и все будут счастливы, кроме заказчиков и руководства.

 

Пример произвольный, но вы поняли. Селениум тесты - не модульные тесты, об этом уже давно много написано. В основном, зависимые тесты сложнее отлаживать и поддерживать. Как-то так.


  • 0



Темы с аналогичным тегами testNG, dependsOnMethods

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных