@frp_ru

Страница 44 из 420
Aleh
09.04.2017
09:42:18
Ну, пока это что-то типа мутационного тестирования для меня)

Прикольно, но зачем это в жсе непонятно

Андрей
09.04.2017
09:42:41
https://github.com/typeetfunc/csssr.github.io/blob/master/_posts/2016-11-10-property-testing.md - читал?(да я опять пиарюсь) на самом деле можешь не читать но глянь там в конце ссылки - там очень хорошо кейсы описаны

Vadim
09.04.2017
09:42:48
Ну например что б быть уверенным в том, что твой метод работает корректно СО ВСЕМИ возможными входными значениями, а не только с теми, что ты явно прописал в тесте

Google
Андрей
09.04.2017
09:43:57
а точн) я и думаю что аватарка знакомая)

Aleh
09.04.2017
09:44:24
Ага, я только по статье и понял, что это ты)

У тебя ваще аватарки нет:/

Ладно, гляну еще раз чтобы осаежить память

Vadim
09.04.2017
11:33:00
Пример конечно не оч про сумму)
Я тебя наверное не очень понимаю. Для каких случаев у тебя такой тип тестирования может вообще не подойти?

Андрей
09.04.2017
11:47:44
да для всего сложнее сложения уже начинаются проблемы

надо же найти свойство какое то

у нас большая часть кода имеет сайд-эффекты и прочее неопределенное поведение - там очень тяжело искать свойства

Vadim
09.04.2017
11:50:38
Google
Андрей
09.04.2017
11:50:50
пока самое подходящее это тестить так преобразования стейта(в редаксе и подобном) - как у меня в статье или как тут https://github.com/omcljs/om/wiki/Applying-Property-Based-Testing-to-User-Interfaces

ну и много у нас сейчас "больших" чистых функций?

Vadim
09.04.2017
11:51:34
Дмитрий
09.04.2017
11:51:39
++

Андрей
09.04.2017
11:51:42
как?

Дмитрий
09.04.2017
11:52:09
Как угодно, мы же не знаем архитектуры и степени запущенности проекта

Андрей
09.04.2017
11:52:11
setState dispatch это сайд-эффекты если чо

Vadim
09.04.2017
11:52:15
Aleh
09.04.2017
11:53:28
Код с обилием сайд-эффектов - плохой код. Но это поддается рефакторингу
Вообще-то нет, если у вас нет спецэффектов, то ваш код ничего не делает)

Андрей
09.04.2017
11:54:44
++

Aleh
09.04.2017
11:55:05
Сайдэффектов *

Андрей
09.04.2017
11:55:23
и я знаю способы абстракции IO (аж 3 штуки) но только их никто не использует же

Aleh
09.04.2017
11:55:49
Никто не пишет код на хаскеле?))

Дмитрий
09.04.2017
11:55:55
Еее спецэффекты

Vadim
09.04.2017
11:56:13
setState dispatch это сайд-эффекты если чо
Тебе достаточно проверить что setState вызывался и с такими-то параметрами

Aleh
09.04.2017
11:56:19
Vadim
09.04.2017
11:56:27
Это же касается любого сайд-эффекта

Aleh
09.04.2017
11:57:14
Проблема в том, что тогда этот тест не очень нужен

Vadim
09.04.2017
11:57:23
Ты в сложении не описываешь инварианты
Я плох в терминах ) Что такое инварианты?

Google
Aleh
09.04.2017
11:57:35
К одному и тому же сайдэффекту можно придти совсем разными путями

Андрей
09.04.2017
11:57:41
>Никто не пишет код на хаскеле?)) даже если и пишет то об этом никто не знает и на мейнстрим это никак не влияет)

Aleh
09.04.2017
11:58:11
Я плох в терминах ) Что такое инварианты?
Свойства твоих объектов, которые всегда выполняются

Например связь push и length в массиве

Paul
09.04.2017
11:58:32
Это инвариант объекта

Есть ещё инварианты цикла — условия на время итерации

хз о чём именно вы тут, я не читал

Aleh
09.04.2017
11:59:03
О первом я

Vadim
09.04.2017
12:00:04
К одному и тому же сайдэффекту можно придти совсем разными путями
Тестом ты можешь проверить что при таких-то входных значениях из функции была вызвана такая-то функция с такими-то параметрами. Условия проверки ты можешь сделать сколь угодно подробными

Paul
09.04.2017
12:00:07
Например связь push и length в массиве
Ну это контракт уже. Инвариант статичен же, описывает состояние, что, скажем, поле "а" больше "б"

Vadim
09.04.2017
12:01:38
Свойства твоих объектов, которые всегда выполняются
Ты это можешь проверить как это обычно делают в TDD - тест сперва обязан упасть

Андрей
09.04.2017
12:02:29
вот я писал о проблемах тестов сайд-эффектов https://github.com/typeetfunc/csssr.github.io/blob/feature/effects/_posts/2016-12-16-side-effects-1.md#cайд-эффекты-сложно-тестировать

основная проблема в том что нет предопределенной функции проверки сайд-эффекта

то есть для первоклассного значения ты просто делаешь .toEqual

а для сайд-эффекта каждый раз надо придумывать проверку

и эта проверка будет устаревать

ты ее можешь не правильно придумать

и так далее

Google
Андрей
09.04.2017
12:04:11
в общем случае сайд-эффект меняет мир

и после теста надо бы сравнить мир до и мир после

я чот не знаю такой функции

Aleh
09.04.2017
12:05:02
expect(global).to

:)

Шутка

Vadim
09.04.2017
12:05:49
Я не гуру тестов ) Но думаю что для поклонников TDD делать надо так - сперва пишутся атомарные тесты для коротких итераций разработки. И в конце, когда требуемая функциональность полностью написана, она покрывается property-based тестами. Просто для того что б убедиться что все работает с ЛЮБЫМИ допустимыми входными значениями.

Андрей
09.04.2017
12:06:31
работать с любыми допустыми входными данными - это только одно из возможных свойств

и зачастую его можно заменить типизацией

есть куча других свойств

типо идемподентности

и их тоже хочется проверять

http://fsharpforfunandprofit.com/posts/property-based-testing-2/

Vadim
09.04.2017
12:07:50
Не заменишь типизацией. Надо проверить например что С ЛЮБЫМИ числами этот метод работает

Aleh
09.04.2017
12:08:52
Не заменишь типизацией. Надо проверить например что С ЛЮБЫМИ числами этот метод работает
С любыиюми просто в типах, сложно если например только с четными)

Vadim
09.04.2017
12:08:59
Потому что ошибка может проявиться, скажем, при случаях когда один параметр больше другого

Да, или на чётных

Андрей
09.04.2017
12:10:10
я и не сказал что всегда. для этого есть всякие навороченные системы типов - refinement итд ошибка - это когда падает или когда неверный результат?

если результат то откуда ты его возьмешь для случайных аргументов?

Aleh
09.04.2017
12:10:31
Так падение это тоже результат

Google
Андрей
09.04.2017
12:11:14
если ты в тесте будешь воспроизводить вычисления то как бы это не очень тест

это иногда имеет смысл и называется test oracle

но очень не всегда

Aleh
09.04.2017
12:11:54
Ну собственно это в примере с плюсом и было

Но есть еще обратимые операции ж

С ними тоже удобно)

Андрей
09.04.2017
12:12:17
да с обратными проще - и это тоже одно из свойств

There and back again

в той статье что я кинул

обычно это сериализация десериализация

но это все очень простые свойства я уверен что мы могли бы увидеть намного больше если бы наше ПО было более предсказуемым и "математичным" :)

Aleh
09.04.2017
12:14:08
У нас работы не было бы)

Дмитрий
09.04.2017
12:14:15
Была бы

Просто гораздо выше уровнем

Больше продукта, меньше железа

Андрей
09.04.2017
12:14:50
ну я лучше буду без работы чем меня убьет какая нить рентген установка изза глобальных переменных xDD

Vadim
09.04.2017
12:15:05
Aleh
09.04.2017
12:15:29
Андрей
09.04.2017
12:15:54
ну возможно что очередной инстаграмм вообще не стоит делать и тратить на это деньги

Андрей
09.04.2017
12:16:10
но тут уже вопрос политически социальный ага а не программисткий)

так что out of scope)

Страница 44 из 420