Это был обычный будний день, я начал писать очередной обычный тест, но при написании названия теста что-то пошло не так:
testCustomerRedirectUrlAfterSelectLastTransactionProcessShouldContainsUrlToConfirmRecurringProfilePageWhenTransactionTypeIsCreateRecurringProfile
Примерно на середине я начал осознавать что происходит что-то не то, но я не остановился и дописал название теста до конца. Коллеги не оценили такое длиннющее название теста, но мне оно нравится.
Сейчас используется что-то вроде testCorrectChangeCustomerRedirectUrl , а детали того что тест тестирует скрыты внутри теста. Я не могу понять это лвлап, либо я устал под вечер. Вопрос: Каковы критерии выбора хорошего названия теста? UPD: Пожалуйста, приведите названия тестов из ваших проектов.
- юнит-тесты
- test-driven-development
Отслеживать
Andrey Kolomensky
задан 2 дек 2015 в 14:47
Andrey Kolomensky Andrey Kolomensky
2,168 2 2 золотых знака 17 17 серебряных знаков 39 39 бронзовых знаков
ТЕСТЫ ВКОНТАКТЕ ЭТО ЖЕСТЬ…
Ребятам которые хотят закрыть вопрос сообщаю что это важная тема, обсуждение которой ведется в книгах по TDD, создаются и применяются паттерны наименования, обсуждается что тестовые методы применяются в ином контексте чем методы кода проекта. Хотите чтобы пользователи рунета сами собирали эту информацию? Пожалуйста.
2 дек 2015 в 15:11
Опять закрывальщики понабежали. Господа, ну давайте включать голову. Если вам вопрос кажется непонятным только потому, что вы не в теме, это не значит, что это бесполезный вопрос. К тому же, как я уже писал, в программировании есть ряд областей, в которых в принципе невозможно дать однозначный ответ, но это важные области. Самый очевидный пример — проектирование ПО.
2 дек 2015 в 17:13
2 дек 2015 в 17:14
2 дек 2015 в 17:19
Р. Мартинс писал, что названия должны быть читаемыми (близки к естественному языку). Может, всё-таки, прислушаться к коллегам? Это же им потом читать и вам (спустя некоторое время).
19 дек 2015 в 20:29
7 ответов 7
Сортировка: Сброс на вариант по умолчанию
Название для тестов не надо выбирать красивое. Название нужно выбирать функциональное и по возможности короткое — чтобы по минимальному количеству символов было понятно, что и под какими условиями он тестирует, а также чтобы можно было отличить конкретный тест от тысяч других.
Распространенные шаблоны наименования такие:
- TestClass_TestMethod_ConditionAndExpectedResult (для юнит-тестов)
- TestMethod_Condition_ExpectedResult (для юнит-тестов)
- ConditionAndExpectedResult (для интеграционных тестов, которые тестируют целые блоки функциональности через некоторую входную точку)
При этом если у вас в частях Condition/ExpectedResult слишком много разных условий/результатов, объединенных по «И», то вам нужно пересмотреть либо главную цель теста (что он тестирует), либо главное условие, которое отличает тест от других, и разбить его на несколько отдельных тестов.
ПРОХОЖУ ТЕСТЫ ВО ВКОНТАКТЕ!
Я ратую прежде всего за то, что название должно быть информативным, но при этом настолько коротким, насколько возможно. Тут точно так же как и со всем остальным кодом — чем меньше кода, тем меньше времени нужно чтобы его понять, тем проще разбираться с ним. Судя по вашему названию, это не простой маленький юнит-тест, а что-то побольше, поэтому совсем коротким названием тут не обойтись. В вашем случае, если тест класс у вам уже для Customer , я бы ограничился названием SelectLastTransactionProcess_CreateRecurringProfile_RedirectUrlShouldContainConfirmation . В вашем названии много повторений слов: transaction, url, recurring profile и т.д. Они избыточны.
Между длиной и информативностью названия безусловно должен быть баланс. Достаточно, чтоб названия были понятны разработчикам внутри проекта, которые уже обладают контекстом и способны понять, о чем этот тест. И если для этого нужно длину названия сделать не 30 символов, а 40, сделайте.
Но не нужно стремиться к тому, чтоб названия были понятны каждому встречному, попутно рассказывая обо всей системе, поскольку это приводит к таким вот километровым названиям, в которых сложно разобраться. Посмотрите на свой обычный код, посмотрите на названия методов. Вы ведь не описываете в названии метода каждую его деталь, каждую строчку? Вы описываете нечто главное, а остальное спрятано внутри. Точно так же и с тестовыми методами.
Кто-нибудь может ещё рассказать что делать с названиями интеграционных тестов, > где 100500 различных условий?
К примеру биллинг, принимает на вход 5-10 видов прайс-листов и в зависимости от их комбинаций и комбинаций их параметров (тоже примерно 5-10) должен выдавать различные суммы на выход. Контейнер отправляемый в биллинг занимает ~30 строчек.
Если в стиле поста называть тесты то это будет testPayoutDebtorToGateOntopGateTransactionAmountGateToCreditorFlatPayinDebtorToGateOntopTotalTransactionAmountGateToCreditorOntopTransactionAmount , причем не с полным контекстом.
Нужно рассчитать итоговую сумму исходя из того что прайс-листы могли быть настроены следующим образом: Тип комиссии прайс-листа типа основной сделки — inside/total, комиссия 0.1% + 0.5руб cверху, расчет вести от оборота. Второй комиссионный прайс-лист ontop/gate.. ещё в таком же стиле раз 10 и пара неявных зависимостей прайс-листов друг от друга.
Я бы сказал, что вам нужен параметрический тест. Это такой тест, который одним кодом тестирует разные наборы данных. Например, в терминах тестового фреймворка xUnit параметрический тест метода Calculator.Add() может выглядеть так:
[Theory] // это параметрический тест [InlineDate(1, 2, 3)] // наборы данных, т.е. параметры теста [InlineDate(0, 1, 1)] [InlineDate(-1, 1, 0)] public void Calculator_Add_ShouldReturnCorrectResult(int a, int b, int expectedResult)
С параметрическими тестами вам не нужно перечислять все условия в названиях — название содержит только суть теста, что именно тестируется, конкретный кейс. В вашем случае это что-то вроде РасчетИтоговойСтоимости_ПоОсновнойИДополнительнойСделке (на английский сами переведете, вам область понятнее). А выглядеть ваш тестовый метод может так (при этом в xUnit тестовые данные можно подставлять из свойства и даже из отдельного объекта):
[Theory] [PropertyData(«PriceData»)] // тестовые данные находятся в отдельном свойстве public void РасчетИтоговойСтоимости_ПоОсновнойИДополнительнойСделке( ComissionType mainComissionType, Comission mainComission, CalculationType mainCalculationType, ComissionType auxComissionType, Comission auxComission, CalculationType auxCalculationType, double expectedPrice) < // код теста >public static IEnumerable PriceData < get < // данные можете захардкодить, а можете прочитать из файла return new[] < new object[] < // основная сделка ComissionType.InsideTotal, new Comission(0.1, 0.5), CalculationType.ОтОборота, // дополнительная сделка ComissionType.OnTopGate, new Comission(0.42, 0.99), CalculationType.ОтБалды, // результат 100500 >, // и так далее для других пар >; > >
Я думаю во многих тестовых фреймворка есть возможность создания параметрических тестов. Способ задания параметров может отличаться, но суть останется та же: данные выносятся в секцию с данным, в названии теста остается только название кейса.
Дополнительную информацию о параметрических тестах можной найти в блоге Сергея Теплякова.
Источник: ru.stackoverflow.com
40 психологических тестов, которые можно пройти онлайн и которые расскажут о вас все (Даже то, о чем вы и не подозреваете)
Психологические тесты очень популярны и могут развлечь не хуже сериала с закрученным сюжетом. Но создавались они все же для определения и выявления важных качеств и возможных отклонений в психике человека. Также они помогают разобраться со своими внутренними противоречиями. Но при этом не стоит забывать, что корректно интерпретировать их результаты может только психолог.
Поэтому если вы, пройдя тест, узнаете о себе нечто тревожное, то не стоит тотчас же паниковать. Сперва обратитесь к специалисту.
ADME знает, как важно изучить от и до свое внутреннее «я», и предоставляет возможность узнать о своей личности нечто новое и волнительное с помощью авторитетных психологических тестов.
Типы личности и характера
Знание о том, каким типом личности вы обладаете и какие характеристики вам присущи, поможет лучше понять себя. Например, как и с какими людьми вам строить взаимоотношения, какой вид деятельности вам больше подходит и как правильно самореализоваться.
- Тест Люшера позволит определить причины вашего стресса и то, к каким психофизиологическим симптомам он может привести.
- Прогрессивные матрицы Равена — тест, определяющий уровень интеллектуального развития.
- Тест Майерс — Бриггспредназначен для определения одного из 16 типов личности и поможет выявить индивидуальные предпочтения и склонности.
- Тест Сонди дает ответы на многие вопросы, в том числе объясняет выбор человеком любимых, друзей, профессии и указывает на предрасположенность к определенным заболеваниям.
- Тест Айзенка направлен на определение типа эмоционального поведения: вы больше интроверт или экстраверт.
- Методика диагностики темперамента Яна Стреляупоможет определить тип темперамента и то, как вы реагируете на стрессовые ситуации.
- Тест Ефремцева — на определение ведущего типа восприятия: аудиального, визуального или кинестетического.
- Тест СМИЛ из 566 вопросов психологи используют для составления наиболее точного портрета личности.
- Личностный опросник Кеттелла служит для определения особенностей характера, склонностей и интересов личности.
- Тест Холла поможет определить уровень эмоционального интеллекта — способности человека распознавать эмоции, понимать намерения, мотивацию и желания других людей и свои собственные, а также способности управлять своими эмоциями и эмоциями других людей для решения практических задач.
- Тест самоактуализацииСАТ позволит определить уровень успешности в разных областях.
- Тест на определение типа мышления: в зависимости от психических и физиологических особенностей человека обычно преобладает конкретный тип мышления — метод обработки и анализа полученной информации. Виды: словесно-логический, наглядно-образный, абстрактно-символический, творческий, предметно-действенный.
Типы социального взаимодействия
Тесты на типы социального взаимодействия помогут вам понять, как вы строите отношения с окружающими, насколько вы агрессивны, конфликтны и насколько хорошо умеете адаптироваться в коллективе.
- Тест Лирина определение особенностей ваших взаимоотношений с окружающими.
- Тест на адаптивностьрасскажет, насколько успешно и как именно вы адаптируетесь в коллективе.
- Тест Ассингера на определение уровня агрессивности в отношениях расскажет, насколько вы агрессивны при общении.
- Тест Томаса помогает определить ваш тип поведения в конфликтной ситуации.
- Тест коммуникативной социальной компетентностипоможет определить, насколько вы общительны и какой тип коммуникации вы предпочитаете.
- Оценка самоконтроля в общениирасскажет, насколько вы открыты и непосредственны, умеете ли себя контролировать при общении.
Источник: adme.media
интерактив
Каждый из нас хоть раз задумывался начать заниматься музыкой. Предлагаем тебе выяснить, в какую группу ты мог бы попасть?
Другой интерактив
Хорошо ли ты знаешь песни группы «Руки Вверх!»?
На них выросло не одно поколение. Эти треки сыграли ключевую роль в жизни тысяч людей! Сколько признаний в любви было сказано под «Алёшку»… Поностальгируй и проверь, как хорошо ты помнишь легендарные композиции!
«Имя твоё — птица в руке»
Пройти тест
Угадай, в каком фильме снималась эта звезда?
Пройти тест
Звездой какого клипа ты могла бы стать?
Пройти тест
КАКУЮ ПЕСНЮ МОГЛИ БЫ ПОСВЯТИТЬ ТЕБЕ?
Пройти тест
Получи свое персональное предсказание!
Далее | 01:00
Караоке хит 16+
Потом | 02:00
Ловец слов 16+