
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

Aleh
09.04.2017
09:43:04
Front-end Belarus который

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

Aleh
09.04.2017
09:44:24
Ага, я только по статье и понял, что это ты)
У тебя ваще аватарки нет:/
Ладно, гляну еще раз чтобы осаежить память

Дмитрий
09.04.2017
10:13:47

Aleh
09.04.2017
10:23:51

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

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

Aleh
09.04.2017
12:01:07

Vadim
09.04.2017
12:01:38

Андрей
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
ну возможно что очередной инстаграмм вообще не стоит делать и тратить на это деньги

Aleh
09.04.2017
12:16:07

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