|
Разработка через тестирование - мракобесие и профанация...? | ☑ | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0
Злопчинский
30.12.14
✎
18:01
|
тупо на примере простой задачки (см. Даты в таблице значений)
. как определить минимальный набор тестов, покрывающих нужный функционал..? . пока что непонятно... получается (имхо) больше - творческая работа, т.е. не годится для поточного производства...? |
|||||||||||||
1
Гёдза
30.12.14
✎
18:08
|
Слышал про регрессионное тестирование хоть раз?
|
|||||||||||||
2
Злопчинский
30.12.14
✎
18:10
|
(1) что я тут могу сказать... - я в своей жизни слышал и даже юзал матрицы предшествований
. так что ответ "фигли думать, трясти надо!!!" . был бы тестировщиком - наверное бы не только слышал но и всякое-превсякое, а так - как придется - есть время - что-то читаем, думаем, тщательно пишем код для критичных оперативных участков - тут сам тестирую как умею (но потом башка пухнет и разламывается ;-), для некритичных - все попроще... |
|||||||||||||
3
Злопчинский
30.12.14
✎
18:11
|
(1) собственно, давай - рассказывай!
(как космические корабли бороздят просторы Большого театара) ;-) |
|||||||||||||
4
Гёдза
30.12.14
✎
18:12
|
(1) Если ты полный нуб в тестировании, то почему так пренебрежительно к нему относишься?
|
|||||||||||||
5
Гёдза
30.12.14
✎
18:13
|
(3) Это проверка того что после доработок старое не сломалось.
И вот тут очень неплохо автоматизированное тестирование |
|||||||||||||
6
Reaper_1c
30.12.14
✎
18:13
|
(2) Тут дело не в тестировщиках. ИМХО, главное, что дает этот подход - обязательное контрактное программирование и интерфейсы для автотестов. Разработчик и не должен покрыть все баги своим набором тестов с первого прохода. А вот предоставить интерфейсы для прогона автотестов по базе тестов - уже должен. Это позволит ловить каждую багу руками только один раз, потом сажать ее в банк тестов и ловить пулеметом.
|
|||||||||||||
7
Гёдза
30.12.14
✎
18:13
|
Проверка НОВОГО функционала - конечно же отдельная история
|
|||||||||||||
8
Злопчинский
30.12.14
✎
18:15
|
(4) я не пренебрежительно! мну - интересно!! но непонятно!!!
|
|||||||||||||
9
Злопчинский
30.12.14
✎
18:17
|
(5) ну тут для проверки что старое не сломалось - старые (успешные) тесты должны давать такой же результат...?
. а как сравнивать результаты тестов? . прогнали тест - порлучили некий набор данных как его результат - где-то "сохранили" как успешный...? а потом сверяемся по нему? |
|||||||||||||
10
Asmody
30.12.14
✎
18:18
|
(0) для этой задачки как раз просто - есть ТЗ на входе, есть эталонная ТЗ на выходе. Прогоняешь исходную ТЗ через свою функцию, сравниваешь с эталоном.
Тут задача полностью зависит от входных данных. |
|||||||||||||
11
Гёдза
30.12.14
✎
18:18
|
(9) именно так
|
|||||||||||||
12
etc
30.12.14
✎
18:18
|
Не использовал но я так понимаю что тестирование только внутреннею логику покрывает. Ошибки в интерфейсе и сопутствующем коде тестированием не отлавливаются. Или не так?
|
|||||||||||||
13
etc
30.12.14
✎
18:19
|
Или вы про тесты производительности?
|
|||||||||||||
14
etc
30.12.14
✎
18:20
|
вот
Как бог на душу положит |
|||||||||||||
15
Злопчинский
30.12.14
✎
18:20
|
(13) не, как раз про тесты функциональности.
|
|||||||||||||
16
Злопчинский
30.12.14
✎
18:21
|
Про нормальные интерфейсы - вообще отдельная тема.
разрабатывать приходится самому. Иначе получается фу... |
|||||||||||||
17
H A D G E H O G s
30.12.14
✎
18:22
|
Блаблабла, голословные теории.
|
|||||||||||||
18
Злопчинский
30.12.14
✎
18:22
|
(10) ну ты, блин, умный!
Вот есть у меня ТЗ на входе - размером с сто тысяч чего-то - как я ее в эталонную превращу (то есть в результат правильной работы алгоритма)..? |
|||||||||||||
19
etc
30.12.14
✎
18:22
|
Я так понимаю для поточного тестирования тоже годится когда на написание тестов закладывают время на разработку + N%. Юнит-тесты или как их там
|
|||||||||||||
20
etc
30.12.14
✎
18:24
|
Система контроля качества (те же ОТК) на заводах как-то же работает, а это тоже ресурсы, затраты.
|
|||||||||||||
21
Гёдза
30.12.14
✎
18:24
|
(18) Для авто тестирования время не особо критично. За нгочь всяко проверится такой тест
|
|||||||||||||
22
Злопчинский
30.12.14
✎
18:25
|
(19) да не вопрос.
дайте инструментарий. готовый. чтоы я не занимался разработкой сопутствующих вещей. Если технология - работает, то должны быть формальные реализуемые на автомате вещи. если мне этот "автомат" каждый раз под свою задачу подпиливать приходится - может ну его на? проще драчовым напильником? |
|||||||||||||
23
Гёдза
30.12.14
✎
18:25
|
(22) Для упр форм есть сценарное тестировние
|
|||||||||||||
24
Гёдза
30.12.14
✎
18:26
|
есть также какие то наработки от 1сников
https://github.com/xDrivenDevelopment/xUnitFor1C |
|||||||||||||
25
Злопчинский
30.12.14
✎
18:26
|
(21) это не вопрос.
как определить - прошел тест успешно или нет? сравнивать с эталоном? а кто эталон разрабатывает? где гарантия что эталон составлен правильно? или что вообще предусмотрены возможные все входные значения? |
|||||||||||||
26
etc
30.12.14
✎
18:28
|
(22) на мой взгляд это нормально. Например, выпускает завод электронную плату. У него есть стенд который тестирует конкретно характеристики этой платы. Далее - плату доработали/переработали. Стенд подходит? Нет. Уповать что нужно его допиливать тоже глупо.
|
|||||||||||||
27
Гёдза
30.12.14
✎
18:28
|
(25) 1 раз конечно нужно самому проверить. Потом когда проверил - 1 запусск по эталонному набору дает эталонный результат
|
|||||||||||||
28
Гёдза
30.12.14
✎
18:30
|
Пример: пишешь списание по фифо. написал для рту, проверил.
создал тест. Потом дорабюотал функция для документа списание, для списания заработало. А работает ли все еще для рту? |
|||||||||||||
29
Злопчинский
30.12.14
✎
18:35
|
(27) ну и нафига вот это "нужно самому проверить"..?
чем это отличается от того что я делаю сейчас - тщательно пишу код, обсасываю со всех сторон, прикидываю как протенциально тупо может вести себя персонал, расставляю затычки везде где можно. Чем это отличается от "разработки через тестирование"..? (я обычно пишу сверху вниз) |
|||||||||||||
30
Classic
30.12.14
✎
18:43
|
Зачем тестировать. Выгрузил в рабочую, сказал "готово" и пусть юзвери тестируют
Свое (обоснуй, а то так всю науку с х.. сведешь) |
|||||||||||||
31
Злопчинский
30.12.14
✎
18:46
|
(30) юзвери вообще "тупые" (в хорошем смысле слова) - если у них прога абнормалом не упала или синтаксическую ошибку не выдала - они нафиг и ошибок не заметят..
|
|||||||||||||
32
Злопчинский
30.12.14
✎
18:47
|
Пока что получается что все это - так и есть профанация и мракобесие
|
|||||||||||||
33
Злопчинский
30.12.14
✎
18:47
|
Собственно голая совалка
Как бог на душу положит |
|||||||||||||
34
Escander
30.12.14
✎
18:51
|
(0) когда влом бывает ограничивался синтаксической проверкой... и ничё, как правило всё норм.
|
|||||||||||||
35
Гёдза
30.12.14
✎
19:03
|
(29) Да не нужно в принципе. Если тиражных решений не пишешь, то всплывающие ошибки можно на ходу исправлять
|
|||||||||||||
36
Garykom
гуру
30.12.14
✎
19:14
|
Но моя пытается просто без ошибок сразу писать ))
Т.е. нафик не нужно тестирование Свое (обоснуй, а то так всю науку с х.. сведешь) |
|||||||||||||
37
Злопчинский
30.12.14
✎
19:21
|
(36) угу... согласен...
. еще бы хорошо понять - кто юзает это мракобесие? фикси-одиночники? фришники? франчи? (тут вообщен сомневаюсь!)? фикси в крупных конторах где большие отделы разработки/поддержки..? |
|||||||||||||
38
Garykom
гуру
30.12.14
✎
19:24
|
(37) это применяют когда есть большой заказ "сделать им хорошо" = "непонятно что писать"
и через итерации (разработка->тестирование->разработка ....) пытаются добиться от заказчика-пользователей что они хотят и устроит ли их так )) |
|||||||||||||
39
Garykom
гуру
30.12.14
✎
19:35
|
(38)+ к примеру по задаче в (0)
решается сортировкой тз по 1-й дате и циклом по ней с переносом интервалов в новую тз и подстановкой отсутствующих интервалов дата1-дата2 дата3-дата4 при переносе дата3-дата4 если дата3-1<>дата2 то вставляем интервал дата2+1-дата3-1 отдаем на тестирование... и выясняем что даты то могут пересекаться к примеру на 1 день )) типа нужно вставлять не дата2+1-дата3-1, а просто дата2-дата3 )) |
|||||||||||||
40
Злопчинский
30.12.14
✎
19:39
|
(39) не, вот как в принципе прикинуть - какие ситуации надо потестить для этой задачи (при условии что интервалы не пересекающиеся)..?
|
|||||||||||||
41
Garykom
гуру
30.12.14
✎
19:41
|
(40) пересечения это 1-е и високосность года это 2-е ))
|
|||||||||||||
42
Garykom
гуру
30.12.14
✎
19:42
|
(41) ну и вообще проверка что там вообще даты и причем корректные )) а не 32 декабря ))
|
|||||||||||||
43
vde69
30.12.14
✎
19:49
|
самый лучший тест - лог интерактивных действий юзеров за год...
берем снимок базы на 1 января 2013 года и повторяем все интерактивные действия пользователей за 2013 год.... правда ни один новый релиз типовых не пройдет такой проверки |
|||||||||||||
44
Злопчинский
30.12.14
✎
20:23
|
(43) это точно... много полезного можно узнать..
а интерактивные действия - это вообще песня... . внедряем значит ВМС. как япроверяю ТСДшные обработки - включил экран какой-нить и давай тыкатьво все клавиши подряд и сканировать тупо все что под руку ни попадется... минимум экранов прошли такое тестирование... ;-) |
|||||||||||||
45
viraboy
30.12.14
✎
20:31
|
ТДД в современных системах - это утопия. Слишком дорого. Даже гиганты уже тестируют на пользователях. Безглючность не является преимуществом продукта. Ну окромя риалтайм систем типа жизнеобеспечения пациентов, военных и т.д.
|
|||||||||||||
46
orefkov
30.12.14
✎
22:07
|
(29)
Отличается это формализованностью и повторяемостью. То есть тут уже не просто твои "думки", как это может работать, которые (твои думки) "к делу не пришьешь", а конкретный набор тестов. Которые можно хоть сто раз запустить и наблюдать зеленые галочки - "прошёл, прошёл, прошёл, поломался". И самое главное, что надо понять - набор тестов - тоже "живой", как и сама программа. То есть не бывает так, написал тест раз и навсегда. Меняется программа - могут меняться и тесты. То есть если какой-то тест после доработки программы "поломался" - это не всегда значит, что ошибка в программе. Возможно, наоборот, тест устарел и требует изменений. |
|||||||||||||
47
ifso
30.12.14
✎
22:28
|
(46)
> Отличается это формализованностью и повторяемостью. > ... > Возможно, наоборот, тест устарел и требует изменений. Т.с. провакационный вопрос: чем это отличается по сути от > просто твои "думки", как это может работать ?) |
|||||||||||||
48
Garykom
гуру
30.12.14
✎
22:53
|
(47) разве непонятно? берем толпу "индусов" на кодинг и одного продвинутого спеца на тесты
в результате как в истории про толпу обезьян за пишущими машинками которые колотя по клавишам когда-нибудь напишут "войну и мир"...главное чтобы тот кто следит за обезьянами сам его читал/помнит )) |
|||||||||||||
49
orefkov
30.12.14
✎
23:09
|
(47)
Тем, что это зафиксировано в материальной форме. И может быть показано и повторено. Грубо говоря - когда ты мне продаешь свой код, я спрашиваю - "а как ты докажешь, что он рабочий" - у тебя есть нечто более весомое, чем просто "мамой клянусь". Заметь, наличие набора тестов отнюдь не означает, что код безошибочный. Это распространенная ошибка противников TDD, что они думают, что тесты предназначены для написания безошибочного кода. Тесты фиксируют ожидания того, как должен работать код и ситуации, когда он работает правильно. |
|||||||||||||
50
Garykom
гуру
30.12.14
✎
23:23
|
(49) точно "индусы" )) - "мамой клянусь"
|
|||||||||||||
51
ifso
30.12.14
✎
23:31
|
(49)
> Тесты фиксируют ожидания того, как должен работать код > и ситуации, когда он работает правильно. т.е. суть - те самые "думки" - от ТЗ до опыта/интуиции/фантазии прога более того, формально, любое Если таким тестом и является, не ?) если речь за уровень тестирования (т.е. выше Если, встроенного контроля синтаксиса и т.п.), то всегда (или почти всегда) можно текущий уровень упростить (до того же Если) банально изменив границы рассматриваемой системы ) |
|||||||||||||
52
Злопчинский
30.12.14
✎
23:32
|
Если тесты фиксируют ожидания как должен работать код ....
Нафиг такой тест? Нужны такие тесты которые должны сломать систему Или нет? Что пользы от того что тест подтверждает что система работает как задумывалось? Это же не означает что сиситема может работать неправильно Задача какая стоит? Понятно что в разных умловиях могут быть разные задачи Но грубо если тест показывает что торг12 печатается правильно это еще не означает что менеджер не ухмтрится кайто накосячить и в накладной вместо петрова будет сидоров Или я все неправильно в корне понимаю? Потому что вот когда я писал свои обработки для тсд я руководствовался принципом что обработка должна делать только то что правильно и блокировать попытки персонала сделать неправильно То нсть шаг влево вправо от допустимых маршрутов или исходных данных -алярм и блокировка действия до тех пор пока не будет выполнено это правильное действие А при внедрении вис столкнулся с другим подходом -обработка на тсд вроде делает что надо но при этом заломать или завести ее в тупик- как два пальца об асвальт Вот что тестировать надо? Получим ли правильный результат на правильных данных Иди проверять как ведет себя алгоритм в нештатных условиях? Иди я вообще все неправильно понимаю? |
|||||||||||||
53
Злопчинский
30.12.14
✎
23:34
|
Вдогонку
На мои претензии типа фигли вот тут ломается ответ типа а пусть юзверь смотрит куда жмет |
|||||||||||||
54
Garykom
гуру
30.12.14
✎
23:36
|
(53) права и машина есть?
а фиг ли я вот тут врезался? - смотреть надо куда едешь )) |
|||||||||||||
55
Злопчинский
30.12.14
✎
23:43
|
(54) нету потому сто я не идиот
|
|||||||||||||
56
Reaper_1c
30.12.14
✎
23:44
|
(52) Ты смешиваешь разработку пользовательского интерфейса с функциональным тестированием. А они не пересекаются. Если у тебя "есть функционал" но "пользователи могут сломать" - значит в ТЗ были четко прописаны функциональные требования, но раздел требований к интерфейсу и его эргономике отсутствовал в принципе.
|
|||||||||||||
57
Злопчинский
31.12.14
✎
00:16
|
(56) интерфейс всего лишь средство способ задания исходных данных
А дальше работает функционал |
|||||||||||||
58
RayCon
31.12.14
✎
01:34
|
(0) Я свои продукты тестируя сам. Причины следующие: архитектор - я, задачу ставлю тоже я, и лучше меня никто не знает, как встать на точку зрения пользователя и отработать бизнес-логику. Причём проблема усугубляется тем, что разработка ведётся не по ТЗ, а по Agile, что тоже требует учёта при тестировании.
|
|||||||||||||
59
exwill
31.12.14
✎
03:49
|
(0) В общем случае, не существует доказательства, что программа будет работать.
|
|||||||||||||
60
ИС-2
naïve
31.12.14
✎
07:34
|
(58)тут всплывает проблема замыленного глаза - видишь, что работает, а вот правильно или нет уже забываешь.
Разговаривал с другом-прогером - он использует тесты. Когда спросил как можно использовать их в 1С, но не смог ответить. Слишком много у нас разных вариантов - зависит и от типа метаданных, варианта выполнения кода (клиент, сервер или внешнее соединение), прав пользователей, последовательности действий (что будет если Вася проведет этот документ раньше Пети и как повлияет на работу Коли) и т.д. Т.е не реально систематизировать все ситуации. Поэтому тестирование идет в виде обезьянией работы Вот и думаешь сделать параллельный алгоритм и ничего не сломать или рискнуть и залезть в код, который уже 10 лет работает (не типовой)... |
|||||||||||||
61
Адский плющ
31.12.14
✎
09:05
|
(60) +1
Только я скажу почему нельзя применить неинтерактивные автотесты к 1С. Потому что тестировать нечего. Каждая процедура находится в трех шагах от кнопки пользователя. Вся сложность, что находится глубже сокрыта платформой. Конфигурация (любая) 1С по определению слишком простая, чтобы её тестировать каким-нибудь образом кроме "запустил-проверил". Этот факт вызывает у некоторых 1Сников лютый батхерт и они усиленно ищут способы прикрутить плюшки от взрослых систем к своему детскому конструктору. |
|||||||||||||
62
orefkov
31.12.14
✎
09:13
|
(52)
>> Но грубо если тест показывает что торг12 печатается правильно это еще не означает >> что менеджер не ухмтрится кайто накосячить и в накладной вместо петрова будет сидоров Именно. У тебя есть тест, только показывающий, что торг12 печатается правильно. Не больше. Но и не меньше. Ты уже не думаешь, а ЗНАЕШЬ, что на данный момент торг12 у тебя печатается правильно. Мозг человека легко запутывается и обманывается. Вот небольшой пример-аналогия: http://www.spr.ru/forum_img/55/2012-11/2382208/2952379.jpg Клетки А и В на самом деле одного цвета, хотя мозг упорно ДУМАЕТ, что А - темнее. Так вот тест - это как если наложить на эту картинку маску с отверстиями, в которые будут видны только две эти клетки, закрывающая всё остальное. Другая аналогия - темная комната и фонарик. Один тест - это как небольшой луч фонарика в темной комнате. Ты говоришь, что раз он не может осветить сразу всю комнату, то он вообще не нужен. Но чем больше у тебя фонариков, освещающих каждый свой небольшой кусочек комнаты, тем меньше темных пятен остается. |
|||||||||||||
63
orefkov
31.12.14
✎
09:14
|
(61)
Все что вы сказали, умещается в одну фразу - "я пробовал, у меня не получилось". |
|||||||||||||
64
ILM
гуру
31.12.14
✎
09:20
|
А иначе зачем они нужны?
Пусть пользователи тестируют |
|||||||||||||
65
ИС-2
naïve
31.12.14
✎
09:32
|
(63) вопрос в экономической эффективности теста. И как охватить все ситуации?
Для меня это очень большая и важная проблема - внести изменения так чтобы и не плодить один и тот же функционал и не сломать существующие. Вот реальный случай. Начальник склада сказал переделать алгоритм так "отсортировать накладные по весу и первую накладную отдать Васе, вторую Коле, третью Пете, четвертую Васе и т.д" т.к по его прикидкам у всех будет примерно одинаковый вес. Сделал - провел тест за несколько дней - получается полный разброс у наборщиков. Переделал по другому ТЗ, потом еще. До тех пор пока мой алгоритм не стал выдавать нормальный результат. Сколько надо было написать обработок для проведения тестов? И не факт, что правильный результат теста окажется верным в реальной работе. |
|||||||||||||
66
orefkov
31.12.14
✎
09:33
|
(52)
>> Вот что тестировать надо? >> Получим ли правильный результат на правильных данных >> Иди проверять как ведет себя алгоритм в нештатных условиях? Задача тестировщика - создать тест, ломающий систему. (то есть грубо говоря подобрать нештатные условия). Задача программиста - после этого пройти тест, не поломав предыдущих (этакая партия в бильярд с тестировщиком). После этого данная нештатная ситуация перестает быть нештатной и стает обычной. Так вот фишка в чем? Сначала ты думаешь, что число нештатных ситуаций бесконечно и покрыть тестами нереально. Но когда появляются тесты, то оказывается, что во-первых число возможных нештатных ситуаций вовсе даже конечно, во-вторых, появляется видение такой организации архитектуры решения, которое уменьшает количество возможных нештатных ситуаций. |
|||||||||||||
67
orefkov
31.12.14
✎
09:40
|
(65)
Грубо говоря, первое ТЗ - это и есть тест. Только он делается не автоматом, а ручками и глазками. Ведь тест это что? Описание желаемого результата для определенных входных условиях. И как ты правильно заметил, развитие программы может привести и к замене тестов (ты же переделал ТЗ). Грубо говоря, набор тестов и становится ТЗ, только в строгом-формальном виде, да еще и автоматически проверяемом. И да, писать тесты не проще, чем писать саму программу. |
|||||||||||||
68
Локи-13
31.12.14
✎
09:43
|
Все зависит от разрабатываемого функционала.
Где-то достаточно проверить на "работает/не работает" Где-то приходится эмулировать работу "тупого" пользователя Где-то приходится писать автоматические тесты, выполняющие некоторую последовательность n-раз, с контролем результата. А где-то синтаксический контроль ошибок не выдал - значит все ОК ) Свое (обоснуй, а то так всю науку с х.. сведешь) |
|||||||||||||
69
an-korot
31.12.14
✎
09:48
|
странная постановка вопроса, хотя бы 1 запуск требуется чтобы посмотреть на свое творение это будет тестированием?
|
|||||||||||||
70
ifso
31.12.14
✎
09:49
|
КтоПроФомуКтоПроЕрему + СмешалисьВКучуКониЛюди )
|
|||||||||||||
71
Локи-13
31.12.14
✎
09:56
|
(52) как по мне, код должен быть таким, чтобы результат его выполнения был согласован с первичной информацией.
Если менеджер нашел косяки и заменил Петрова на Сидорова - это не есть ошибка. (если именно это не было задачей, запрет менеджеру менять Петрова на Сидорова) Если менеджер выбрал Петрова - Поставил галку "Выводить артикул" - на печать вышел "Сидоров" это однозначно ошибка. Я считаю, что если пользователь может вводить неправильную информацию это не ошибка. Ошибка это когда при вводе правильной информации получаем неправильный результат. |
|||||||||||||
72
Лефмихалыч
31.12.14
✎
10:06
|
(0) не профанация и вполне жизнеспособно, но накладывает серьезные требования на:
1. возможность автоматизации действий самого программиста 2. возможность автоматизации взаимодействия пользователя с графическим интерфейсом, включая автоматизацию сбора фитбэка от интерфеса (или лога, или как хочешь назови) То есть с текущей платформой реального профита получить тяжело, т.к. она это все автоматизировать не умеет. Конечно есть и снегопат, и запись сценариев в 8.3.5, и ключ командной строки /logui, но это все - три параллельные вселенные, которые в сочетании с наглухо закрытыми для программного доступа исходниками делает задачу ни фига не тривиальной. Например, какой-нибудь ROBOT FRAMEWORK ты использовать не сможешь, тебе надо будет изобретать свое колесо с блэкджеком и потертыми шлюхами, по дороге решая ворох глупых проблем, связанных с непреднаначенностью платформы для коллективной разработки Свое (обоснуй, а то так всю науку с х.. сведешь) |
|||||||||||||
73
Escander
31.12.14
✎
10:08
|
(69) нет
|
|||||||||||||
74
Лефмихалыч
31.12.14
✎
10:08
|
+(72) хотя умельцы, которые это практикуют, есть. В том плане, что "ну, как практикуют?" - у них есть автотесты для чего-то им важного, они их гоняют, но говорить про 100% покрытия пока рано, т.к. оно не особо хочет покрываться
|
|||||||||||||
75
Escander
31.12.14
✎
10:08
|
тестирование - это прогон на разнообразных критически (в контексте задачи) различных входящих данных
|
|||||||||||||
76
Лефмихалыч
31.12.14
✎
10:16
|
(52) чаще всего ломается не то, что ты меняешь, а то, что ты не трогал потому. что ты что-то изменил, что связано с тем, что в итоге поломалось. Автоматические тесты нужны больше не для того, чтобы протестировать, правильно или нет ты написал новый код для новой задачи, а для того, чтобы понять: "Если я изменю поведение этого объекта, остальные, связанные с ним, не умрут ли?"
|
|||||||||||||
77
Лефмихалыч
31.12.14
✎
10:17
|
+(76) а то, что ты сейчас пишешь, ты и так сам тестишь по дороге овер 9000 раз
|
|||||||||||||
78
Гёдза
31.12.14
✎
10:21
|
(76) Этоя еще в 1 посте написал )))
|
|||||||||||||
79
Лефмихалыч
31.12.14
✎
10:21
|
Представим сферическую ситуацию: у тебя есть документ Реализация, у которого есть какие-то движения по регистрам и печатная форма Торг12 (или 13). Оно работает и все хорошо, но тут появилась необходимость переработать движения. Ты берешь задачу, пишешь код, движения работают так, как надо и для новых документов, и для старых. Ты доволен, заказчик в экстазе от новых движений, все круто и единороги. Накатываешь это на продуктив и на следующее утро узнаешь, что Торг13 в 50% случаев падает с делением на ноль изза твоих вчерашних изменений. Обидно, блин - ты же ПФ-то не трогал. А таких ситуаций 8999 из каждых 9000
А вот будь у тебя в ходе тестирвоания автотест, который просто дает пинка документу, чтобы он сгенерил печатную форму, ты бы еще до сдачи в опытную эксплуатацию заказчику увидел, что новое поведение не совсем укладывается в старые рамки и все поправил. Вот оно вот для этого всё |
|||||||||||||
80
Лефмихалыч
31.12.14
✎
10:23
|
(78) под такую формулировку, которую ты там навертел, можно любой ответ подогнуть. Пиши понятно и не будет повторов
|
|||||||||||||
81
Локи-13
31.12.14
✎
10:30
|
(79) а тут есть нюанс... как узнать что печ форма зависит от движений?
|
|||||||||||||
82
Garykom
гуру
31.12.14
✎
10:51
|
(79) эээ а что низзя этот автотест в виде автообезьянки накатать? чтобы тыкала по менюшкам ))
ЗЫ если печатная форма и код вывода зависит от движений документа, а не от данных в документе то это "какой то изврат" |
|||||||||||||
83
Гёдза
31.12.14
✎
10:57
|
(82) для уф можно
|
|||||||||||||
84
Локи-13
31.12.14
✎
10:59
|
(82) в бухе счет фактуры вроде как то так печатаются
|
|||||||||||||
85
AlexITGround
31.12.14
✎
11:02
|
Всегда тестирую, но сильно не извращаюсь.
|
|||||||||||||
86
Cherokee
31.12.14
✎
11:15
|
Мой выбор 3.
У нас был один ярый тестировщик и любитель идеального кода. Очень-то долго не продержался ввиду низкой эффективности работы. Принцип такой - проверяем, чтоб не поломать основные механизмы и не накосячить в основном движке, а также по сути ТЗ и шаг влево шаг вправо. Остальное вылезшее в процессе, считается доработками. Как бог на душу положит |
|||||||||||||
87
Злопчинский
31.12.14
✎
20:38
|
Вопрос то вообщем простой
Как узнать набор входных данных покрывающий алгоритм? |
|||||||||||||
88
Злопчинский
31.12.14
✎
20:41
|
или как работать?
Вот написал код Пишу теперь тест Что я должен протестировать этим тестом? Подать на вход те данные на которые расчитан алгоритм и убедиться что выжаются правильные данные? Или как? А если я независимый тестировщик? Как действовать? Как понять прошел тест или нет? Какие тесты делать? |
|||||||||||||
89
Гобсек
31.12.14
✎
20:42
|
.
Пусть пользователи тестируют |
|||||||||||||
90
Адский плющ
31.12.14
✎
22:09
|
Назовите хотя бы один реальный функционал на 1С поддающийся автоматическому неинтерактивному тестированию.
|
|||||||||||||
91
exwill
01.01.15
✎
14:37
|
(88) Тестирование - процесс творческий. Приходится использовать эвристические методы. Потому, что не существует алгоритма,который мог бы подтвердить работоспособность другого алгоритма.
|
|||||||||||||
92
orefkov
03.01.15
✎
09:31
|
(88)
Идеология TDD подразумевает, что наоборот, сначала пишется тест, а только потом код, чтобы пройти тест. То есть получил ТЗ - сначала описываешь это ТЗ в виде тестов, доказывающих, что все сделано по ТЗ. Предполагается, что составление таких тестов (которыми можно доказать выполнение ТЗ) помогает прояснить и лучше представить и устройство будущей программы. |
|||||||||||||
93
iceman2112
03.01.15
✎
09:35
|
Не знаю на скок в 1с это актуально, как правильно больше разрабыватывают тесты, чтобы при изменение функционала быстрее не нарушился старый и можно было быстро найти и устранить баг.
А если у тебя в коде есть баг и ты не знаешь где он, то как тут придумать тест, который найдет его, если ты не знаешь где он. Свое (обоснуй, а то так всю науку с х.. сведешь) |
|||||||||||||
94
iceman2112
03.01.15
✎
09:37
|
А в 1с таже инструментов для тестов нет, а в примере это не нужно, ну зачем?
|
|||||||||||||
95
Злопчинский
03.01.15
✎
10:36
|
(92) тогда объем тестов и их сложность будут соизмеримы с конечной программой..? и как быть уверенным что тесты написаны правильно, если тест это тоже программа?
|
|||||||||||||
96
Reaper_1c
03.01.15
✎
11:56
|
(95) ещё раз. Смысл не в том, чтобы идеально покрыть тестами, а в том, чтобы с самого начала разбить задачу на элементарные и каждый элементарный кусок подготовить к автоматизированному тестированию.
Если ты пытаешься для себя найти пользу-не найдёшь. Эта техника, как и многие другие, предназначена для облегчения коллективной разработки. Тестеры/сотрудники поддержки/ТРП имеют возможность пополнять банк тестов и передать разработчику багу сразу в виде автотеста. Проверять разработчика - не нужно. Автоматизированному проверка повторно один и тот же баг не пропустит. |
|||||||||||||
97
ОбычныйЧеловек
03.01.15
✎
12:41
|
(91) Полностью согласен с определение, что "тестирование процесс творческий" - соответсвено тесты пусть пишут те кому заняться больше нечем (а лучше пользователи ибо не один тест не заменить пользователя-раздоблая который нагнет любой ваш супер тест)
Пусть пользователи тестируют |
|||||||||||||
98
ОбычныйЧеловек
03.01.15
✎
12:47
|
(95) да никак...90% твоего времени будет уходить на написание тестов.
|
|||||||||||||
99
akaBrr
03.01.15
✎
13:09
|
Сложность тестов может превосходить сложность тестируемой программы? Нужно ли писать тесты для тестов? :)
|
|||||||||||||
100
ИС-2
naïve
05.01.15
✎
09:46
|
вот сижу думаю какой же тест придумать, чтобы проверить перевод УПП 1.2 на управляемые блокировки... Только перепроведение документов...
И какой результат считать успешным... |
|||||||||||||
101
Gantoha
05.01.15
✎
09:51
|
у меня вот знакомая тестером работает , понятно что не 1с, так вот например на онлайн казино - с покером тестовая книга это порядка 1000 стр документа с прописанными ситуациями и их решениями ..а вообще обычно при проектах сидит отдел из нескольких человек - обычно индусо-таджиков и пишут тесты по разным методологиям.
|
|||||||||||||
102
RayCon
10.01.15
✎
11:13
|
(60)
>Разговаривал с другом-прогером - он использует тесты. >Когда спросил как можно использовать их в 1С, но не смог ответить. Я понимаю твоего друга... На ноябрьской конференции "Инфостарт" Алексей Лустин делал доклад на тему автоматического тестирования. Его критиковал Дмитрий Шерстобитов: может оказаться, что вручную прокликать будет быстрее и дешевле, чем написать и пройти автоматический тест. Я согласен с Дмитрием: это проблема двух чашек весов, и перевешивает та, что дешевле, а, на мой взгляд, дешевле именно "прокликать". Но!.. Я же примеряю тест под свои нужды, а у меня разработка идёт по Agile. На некоторых проектах, где разработка строится по иным, например, традиционным, принципам, вполне может быть сложиться так, что автоматизированный тест окажется и быстрее, и дешевле. Отсюда простой вывод: при тестировании надо ориентироваться на задачу. ;) |
|||||||||||||
103
orefkov
10.01.15
✎
13:13
|
(102)
Человеческий тест надо оплачивать каждый запуск понемногу (P руб), у автотеста дороже разработка (M руб), но каждый запуск - нулевая стоимость. Ну пусть почти нулевая (К руб). Таким образом, при некотором N выйдем на N * P < M + N * K - то есть автотест станет дешевле. Кроме того, даже при человекотесте задача разработки теста не исчезает, хотя и упрощается. Только к ней еще добавится задача "сторожить сторожей" - никто не застрахован от ошибок "кликальщика" при выполнении тестов - от невнимательности до саботажа. Поэтому для автотестов в 1С актуальна задача уменьшения величины M. Что и делается с одной стороны разработчиками платформы, а с другой энтузиастами - Лустин, Аюханов, Сосна и многие другие. |
|||||||||||||
104
Злопчинский
10.01.15
✎
13:25
|
(103) это хорошо.
но все равно сложилось по этой ветке впечатление что такое автотестирование в т.ч. и разработка самих тестов (правильных) - это имхо больше искусство чем тупая методика. Поэтому массово применять ее по крайней мере у нас - проблематично. Это хорошо если ты сидишь в каком небудь "Неводе" и куча пипла работает с тобой же - можно и время найти/выделить для тестирования и тестов. . но если применять это для фриланса/фикса где загружен работйо по самое нехочу - тут не то что гондурас начнет беспокоить - работодатели/заказчики могут не понять дороговизну и увеличение времени на разработку. Я, например, и так не шибко быстро пишу код (тут вообще паранойя - в коде обсасываю кучу всякой фигни которая может быть) - а если тестирование как отдельный процесс сюда прилепить - сомнительно.. очень сомнительно... |
|||||||||||||
105
RayCon
11.01.15
✎
03:33
|
(103) Теоретически ты всё правильно посчитал, вот только на практике есть одно "но"... Зачем каждый раз тестировать то, что однажды уже протестировано? Нечего туда лазить! А коли никто не будет лазить, то и повторные тесты не нужны. Тестировать придётся только новую функциональность, а вот тут-то и включается фактор длительности разработки уже совсем другого теста. И с каждым новым тестом вся арифметика (а с нею и экономика) сразу же летит в тартарары.
|
|||||||||||||
106
RayCon
11.01.15
✎
03:35
|
(104) +1
|
|||||||||||||
107
Escander
11.01.15
✎
03:42
|
(104) так она и нужна преимущественно тем, кто очередные релизы выкладывает регулярно, имхо... а сколько у нас таких?!
|
|||||||||||||
108
Злопчинский
11.01.15
✎
04:00
|
(105) не совсем верно
Результаты теста зависят от входных данных Поэтому заключение о правильности тестируемого алгоритма можно сделать лишь прогнав алгоритм в тесте по всему возможному массиву входных данных Что ясен пень представляется непомерной задачей Поэтому вообщем надо тестировать постоянно Тогда можно говоритьхоть о каойто квазиправильности алгоритма А то что в куче алгоритмов в конфигах одинце входные параметры даже не проверяются на хотя бы просто заполненность или нахождение в допустимом интервале то и получаем вместо осмысленных сообщений зачастую бессмысленные синтаксические ошибки -что вообщем и является тестом который не прошел Абыдна панымаешь что мы не нанимались темтировщиками к одинцэ Возможно я и не прав И это все написанное бред моего засыпающего разума Спецы поправят Потестируют так сказать в ручном режиме мну |
|||||||||||||
109
Escander
11.01.15
✎
05:19
|
(108) есть методики тестирования в белую(зная всю задекларированную функциональность и часто имея доступ к исходникам) и в чёрную... не справедливо утверждать что один тип методики принципиально во всём лучше другого...
автотестирование в 1С имеет скорее цель проверить основную функциональность (что она в норме после очередных доработок), а сами новые фичи наверняка тестируются в процессе самих доработок. |
|||||||||||||
110
Злопчинский
11.01.15
✎
17:39
|
(109) уже ранеее писали что успешное прохождение тестов не является гарантией работоспособности функционала. Но используют именно так - потому что такое тестирование дает возможность утверждать что в некоторых случаях заявленная функциональность работает так как надо. А это всяко лучше чем не иметь вообще ничего...
То есть если утрировать то про всякое это тестирование\автотестирование можно сказать так: - с драной овцы хоть шерсти клок. |
|||||||||||||
111
pavig
13.01.15
✎
13:59
|
(0)
Когда взял для себя за правило: "Внёс изменение - ПРОВЕРЬ!". Стараюсь следовать. Это Естественно, бывают исключения. Но стараюсь всё же это правило соблюдать. Сначала стараюсь "войти в режим пользователя", то есть тупо жмакаю куда попало и делаю что попало. Потом обращаю внимание на правильность выполнения. Например, если дописал проводки, то контролирую состав проводки, пересчитаю на коленке сумму, количество и прочее. Третий этап - стараюсь моделировать различные ветки алгоритмов, если в пользовательском режиме проверить их затруднительно (например, есть какое-то условие, и чтобы программа пошла по этому условию, нужно вбить руками прилично и непрогнозируемо много первички, в этом случае проще подменить условие на ИСТИНА, чтобы прогнать по этому участку кода). Четвертый этап тестирования - стараюсь определить, на что могли повлиять внесённые мной изменения (например, откуда еще вызывается измененная процедура) и в том же порядке тестирую эти участки функционала. Потому что именно ошибки - основная причина недовольства конечного потребителя. А я - кодер, это мой хлеб. Естественно, тщательность тестирования зависит от требовательности заказчика. Ну и, кончено, от наличия оплаченного времени. Я тестирую я тщательно отлаживаю свои разработки |
|||||||||||||
112
RayCon
13.01.15
✎
18:07
|
(111)
>Сначала стараюсь "войти в режим пользователя", >то есть тупо жмакаю куда попало и делаю что попало. Любопытное у тебя мнение относительно пользователей... Видимо, следующий шаг: они тупые, а я один умный. >Естественно, тщательность тестирования зависит от требовательности заказчика. >Ну и, кончено, от наличия оплаченного времени. Ну, и, разумеется, от тупого "жмаканья куда попало" и "делания что попало" тупыми пользователями. :( |
|||||||||||||
113
Злопчинский
13.01.15
✎
21:56
|
Тупой не тупой а когда из за случайного промаза по клавише или чего нить прога вываливается в синтаксическую ошибку с потрей кучи сделанной работы юзверем тут тупой не тупой юзверь а просто юзверь
Ониже как ребенок Он не нарочно |
|||||||||||||
114
Drac0
14.01.15
✎
08:57
|
(113) М, а зачем оставлять такие кнопки и возможности вообще? Имхо, функционал рабочего места не должен иметь таких дыр. Вдруг кто-то мимо проходя уронить ластик человеку на клавиатуру, а у него от этого час работы на смарку.
|
|||||||||||||
115
pavig
14.01.15
✎
09:38
|
(112)
>Видимо, следующий шаг: они тупые, а я один умный Ну не знаю, может ты и пошел по этому пути, если за меня готов что-то утверждать. Я пока не делал этот шаг: у меня есть другие планы. >>Естественно, тщательность тестирования зависит от требовательности заказчика. >>Ну и, кончено, от наличия оплаченного времени. >Ну, и, разумеется, от тупого "жмаканья куда попало" >и "делания что попало" тупыми пользователями. :( Ну и где тут причинно-следственная связь? Что этим сказать-то хотел? |
|||||||||||||
116
pavig
14.01.15
✎
09:49
|
(114)
Вот для этого в том числе и требуется тестирование. |
|||||||||||||
117
RayCon
14.01.15
✎
21:22
|
(115) Я хотел сказать, что пользователи не "жмакают, куда попало" и не "делают, что попало". Соответственно, твоё тестирование в виде "жмаканья" - бессмысленно: ты (а) не решаешь задачу пользователя, и (б) тратишь своё время впустую.
|
|||||||||||||
118
Пушкин
14.01.15
✎
21:39
|
Есть тестировщики, и весьма хорошие
Пусть пользователи тестируют |
|||||||||||||
119
Злопчинский
14.01.15
✎
21:42
|
117
Едрид-мадрид От того что юзвери не тыкают куда попало не значит что внезапно они это не сделают по какойлибо причине А мне принципиально не хочется в отпуске срываться и трать полдня чтобы устранить последствия краха И это хорошо если крах видно сразу и все стало колом У меня был случай когда аналогичная дырка привела к тому что внешне все ок а внутрях каша полная и это успело набежать за полдня всего Я дня три потратил пока все это выкусил без остановки процесса Мой опыт показывает одно Если есть шанс накосячить то накосячат обязательно рано или поздно |
|||||||||||||
120
RayCon
14.01.15
✎
23:36
|
(119) Это уже совсем другая проблема, которая называется "защита от дурака". Для её купирования используется правило коридора, которое программно запрещает ситуации, потенциально могущие вызвать аборт или некорректную, с точки зрения бизнес-логики, ситуацию. Соответственно, то, что выходит за границы коридора, априори не подлежит тестированию.
|
|||||||||||||
121
Злопчинский
14.01.15
✎
23:43
|
(120) от того что используется правило коридора никак не следует что это правило корретно запрграммлено
Поэтому тыкать жмакать и вопливидоплясова по всему до чего дотянется фантазия и руки тестировщика пусть даже это буду я сам Другое дело что такому стресстесту подтвергается весьма малое колво продукта Ибо ресурсоемко и дорого получается В таком режиме писать можно когда нечего делать больше |
|||||||||||||
122
RayCon
16.01.15
✎
18:23
|
(121)
>от того что используется правило коридора никак не следует что это правило корретно запрграммлено В самом общем случае ты, конечно, прав, но я как-то привык работать с грамотными кодерами, и для меня этот вопрос неактуален. >Ибо ресурсоемко и дорого получается Я именно об этом и толкую! Если будет НЕресурсоемкий и НЕдорогой тест, то и проблемы не будет. :) |
|||||||||||||
123
Гёдза
16.01.15
✎
18:32
|
(122) А кто будет сам корридор тестировать?
Или грамотный кодер по умолчанию дает код который не нужно тестировать? Тогда вообще о чем говорить в этой ветке? |
|||||||||||||
124
Господин ПЖ
16.01.15
✎
18:33
|
>Это уже совсем другая проблема, которая называется "защита от дурака". Для её купирования используется правило коридора, которое программно запрещает ситуации, потенциально могущие вызвать аборт или некорректную, с точки зрения бизнес-логики, ситуацию.
гыгы такое "правило" вырубало движки истребителей над мертвым морем - там высота ниже уровня океана... |
|||||||||||||
125
Рэйв
16.01.15
✎
18:36
|
Все не читал. Но так скажу,мужики. Сколько я не бился и не пытался огородить от дурака систему...Не всегда. Но иногда случался гениальный идиот на которого я даже в мыслях не расчитывал:-))
|
|||||||||||||
126
Рэйв
16.01.15
✎
18:36
|
fools happen ^-)
|
|||||||||||||
127
artbear
16.01.15
✎
18:46
|
Еще не все прочел, но однозначно п.1 "тестирую и пишу тесты постоянно"
с небольшим дополнением - не все нужно тестировать |
|||||||||||||
128
artbear
16.01.15
✎
18:47
|
Еще не все прочел, но однозначно п.1 "тестирую и пишу тесты постоянно"
с небольшим дополнением - не все нужно тестировать. Дубль Я тестирую я тщательно отлаживаю свои разработки |
|||||||||||||
129
artbear
16.01.15
✎
18:51
|
(0) Сценарное тестирование не рекомендую.
Рекомендую наш продукт https://github.com/xDrivenDevelopment/xUnitFor1C Тесты пишешь вручную, но данные для них можешь генерить из боевых данных. Просто и удобно. А уже потом запускаешь ночную сборку и непрерывную интеграцию и наслаждаешься :) Я тестирую я тщательно отлаживаю свои разработки |
|||||||||||||
130
unregistered
16.01.15
✎
19:17
|
(0) Странные вопросы.
Это примерно как полноценное проектное внедрение, когда есть описание "как есть", "как должно быть", полноценное техническое задание (ТЗ) и план реализации ТЗ, сравнивать с т.н. технологией быстрого результата, когда есть только примерное видение как должно быть (хотелки пользователей) и допиливания функционала происходит на живом пациенте с оценкой результатов на ходу. Так и тут. Если есть полноценное ТЗ, то в нём обязательно должно быть описание требований, предъявляемых к системе, и ожидаемое поведение в конкретных обстоятельствах (при каких входных данные какой должен быть результат). То есть набор неких тестов уже заложен в самом ТЗ. Если ТЗ нет или оно написано кратко (рамочно), то объем и глубина тестирование остаётся на откуп разработчику и в зависимости от наличия времени и возможностей может быть проведено от чисто символического - просто запустить и проверить, что не валятся критические ошибки, и заканчивая тщательнейшим тестированием с использованием каких-нибудь инструментов типа (129) или типовых от 1С на самых разных входящих данных, в самых разных режимах, под самыми разными правами. PS Протестировать всё на все 100% невозможно. Иногда в саму логику бывает заложена бомба, которая может сработать при определенном стечении обстоятельств. PPS >> ...используется правило коридора... Часто находятся пользователи достаточно грамотные, способные обойти очень многие правила коридоров, чтобы выйти за их границы. Всего не предусмотришь :( |
|||||||||||||
131
Pr-Mex
16.01.15
✎
20:22
|
Разрабатываю через тестирование с лета 2014.
Использую https://github.com/xDrivenDevelopment/xUnitFor1C Тесты хранятся в Git, разложенные на исходники. Настроен билдсервер TeamCity, который запускает каждую ночь все тесты и рассчитывает % покрытия кода тестами. Уже несколько раз тесты очень сильно выручали, когда нужно было понять, поломается функционал после данной правки или нет. Я тестирую я тщательно отлаживаю свои разработки |
|||||||||||||
132
Pr-Mex
16.01.15
✎
20:23
|
Вот правильный линк:
https://github.com/xDrivenDevelopment/xUnitFor1C |
|||||||||||||
133
Злопчинский
16.01.15
✎
21:04
|
Коллеги
Я бы за Но дайте блин общепринятый инструмент для разработки через тестирование Потому что все таки моя задача как программера выдавать рабочий код А не разбираться в тоннах софта и всяких прделках До тех пор пока не будет стандартизирован процесс тестирования пусть даже в отдельно взятой области то бишь у нас одинэсников то это все сракобесие всеравно |
|||||||||||||
134
Злопчинский
16.01.15
✎
21:04
|
тьфу сорри
Сракобесие=мракобесие |
|||||||||||||
135
Slava_62
17.01.15
✎
10:08
|
Фаны авто-тестирования (не 1с):
https://olegon.ru/showthread.php?t=18538 |
|||||||||||||
136
artbear
17.01.15
✎
16:17
|
(133) Что такое "общепринятый софт" ?
Мы тебе дали уже дали ссылки на наш продукт xUnitFor1C. 3 или 4 человека в разное время в этой ветке :) Я юзаю юнит-тесты свыше 10 лет. На восьмерке xUnitFor1C работает более 2-х лет, поддерживает кучу возможностей. А раньше юзались другие программы. Можешь в гости к нам в Связной приехать, покажу примеры работы с тестами, получение результатов, ночные сборки, непрерывную интеграцию :) ЗЫ кстати, ко всем относится :) Пишите на мыло [email protected] |
|||||||||||||
137
artbear
17.01.15
✎
16:19
|
(0) Мы и вырабатываем этот стандарт разработки/тестирования для использования в 1С-разработке, чтобы процесс разработки в 1С был схож с лучшими мировыми практиками.
. на днях на хабре был интересный перевод по тестированию http://habrahabr.ru/company/luxoft/blog/248051/ |
|||||||||||||
138
Записьдампа
17.01.15
✎
16:31
|
(136) А вы там невозможность протестировать метод с транзакцией уже побороли? =)
Это когда метод использует свою транзакцию, ловит ошибку в исключении, откатывает транзакцию и возвращает вызывающему описание ошибки и флаг успеха? Когда все это выполняется в вашей внешней транзакции - код, проверяющий успешность теста - консистентность данных, лезет в базу и валится с "в данной транзакции уже происходили ошибки". А в продакшне все хорошо, там внешняя транзакция тут же откатывается по флагу успеха. Что ж за мания такая, натягивать сову на глобус и кричать на всех площадках о свои успехах и мировых практиках.... Стандарты они вырабатывают... 1С-то в курсе, типовые уже все перевели небось? |
|||||||||||||
139
artbear
17.01.15
✎
20:50
|
(138) Подробнее напиши об этой ошибке.
Лучше приведи пример кода и проверяющего теста. Вот мой тест на эту тему. Ничего не падает :)
Жду твой код. ЗЫ Фирма 1С идет, как всегда, своим путем, но в курсе про нашу работу. А мы делаем свою работу, приближая разработку к мировым практикам разработки! |
|||||||||||||
140
spock
17.01.15
✎
21:11
|
(139) Артур, мое уважение, но xUnitFor1C далеко до промышленного стандарта.
|
|||||||||||||
141
spock
17.01.15
✎
21:24
|
+140 мне чтобы написать ФТ пришлось вспотеть, образно говоря.
Подготовка данных из mxl, потом их использование через именованные переменные серьезно тормозит процесс. Надо бы это направление оптимизивароть :) Ну и есть ошибки в самом движке, все собирался написать багрепорт, но времени не было. "к нам в Связной" - в Мск? |
|||||||||||||
142
artbear
17.01.15
✎
21:29
|
(140) Конечно, до стандарта очень далеко, но ведь стараемся сделать стандартную вещь, с удобством использования, документацией, примерами, достижением целей тестирования и т.п.
(141) Ага, это тем, кто в Мск и возле Мск проживает. ошибки я люблю, про ошибки напиши. . Пока такая подготовка данных для тестов это самый быстрый вариант. У типового сценарного тестирования 1С ИМХО такого и близко нет :) Если у тебя есть предложения по оптимизации, с удовольствием пообщаюсь. ЗЫ у тебя гугл-аккаунт есть? можно в Hangouts пообщаться. Мое мыло выше. |
|||||||||||||
143
artbear
17.01.15
✎
21:32
|
(141) >> мне чтобы написать ФТ пришлось вспотеть, образно говоря.
А основные затраты куда пришлись? на создание данных, на доработку основного кода для возможности тестирования, на написание кода теста, что еще? . сколько уже тестов написал? Первые тесты всегда писать сложно, тут идет и обучение, и выработка привычки, и исследование инструментов. поэтому нужно начинать с простейших тестов, постепенно их усложняя :) |
|||||||||||||
144
spock
17.01.15
✎
21:35
|
(142) да мы на гугл+ зафрендены.
ps: вакухи у вас приятные :) |
|||||||||||||
145
Господин ПЖ
17.01.15
✎
21:38
|
(136) Запилите статью на хабре - почитаем... Приехать в Связной - просто так вряд ли кто поедет. У вас же не семинар. И работа и у вас и "у нас"...
|
|||||||||||||
146
spock
17.01.15
✎
21:39
|
(143) да мне простейшие не нужны были, сами тесты вопросов не вызывали. Мне в срочном порядке нужен был фреймворк для написания ФТ, чтобы протестить сложный функционал на основе определенных данных.
Задачу решил, но вот "в срочном порядке" пострадало по вышеописанным причинам :) Продукт для ЮТ вполне сносно подходит. |
|||||||||||||
147
artbear
17.01.15
✎
21:41
|
(146) написал ФТ с помощью нашего фреймворка, верно?
Попробуй разложить свои временные затраты при создании тестов по примеру в (143) |
|||||||||||||
148
spock
17.01.15
✎
21:48
|
(147) львинная часть времени ушла на исследование инструментов и фикс багов, потом на подготовку данных (мне нужны были переменные). Важный момент: у меня было под УФ, и продукт только вступил на эту тропу, судя по коду и комментам к нему :)
Где-то за 4 часа написал 5 тестов для этой ситуации. Про доработку основного кода не говорю, так как в данном случае у меня был классический TDD-подход, сначала мой тест, потом реализация кода подчиненным сотрудником. |
|||||||||||||
149
фобец
17.01.15
✎
21:48
|
Разработка через написание тестов увеличивает время разработки в пару раз?
|
|||||||||||||
150
artbear
17.01.15
✎
21:59
|
(148) Тестирование в УФ уже пару лет работает. Не так давно дорабатывали для УФ Такси 8.3, были определенные проблемы, решили не сразу.
|
|||||||||||||
151
artbear
17.01.15
✎
22:02
|
(149) На первые тесты время разработки увеличивается серьезно, далее на каждый новый тест тратится все меньше времени.
ИМХО где-то 20-30% времени уходит на тестирование. Но не забывайте, что фактически сюда входит время на проработку требований и нужных сценариев, проектирование, тестирование. уменьшается время отладки, т.к. ошибки находятся достаточно быстро. например, люди, пользующиеся ТДД, почти не пользуются отладчиком :) А по данным Макконелла, на отладку уходит до 50% времени разработки! |
|||||||||||||
152
artbear
17.01.15
✎
22:10
|
Старая тема по тестированию
v8: v8: Разработка через тестирование и просто автоматическое тестирование. Кто практикует? Где я уже отвечал на подобные вопросы :) |
|||||||||||||
153
skeptik_m
17.01.15
✎
22:18
|
(151) А сами тесты, они конечно неким волшебным образом отдадки не требуют. И сопроводения тоже. Ага-ага ...
Ну не бывает чудес - код разработанный с помощью TDD конечно более качественный, но он и более дорогой. В добавок, мы тут все делаем очень много "одноразового" по факту кода - заказчик что-то там захотел, это самое "что-то там" получил, но по тем или иным причинам пользоваться регулярно не стал или скоро бросил, или использует, но на 5% ... А преимущества TDD проявляются при длительной поддержке и развитии продукта. В общем TDD вещь полезная (при определенных условиях), а вот фанатизм по ее поводу - вреден. |
|||||||||||||
154
artbear
17.01.15
✎
22:25
|
(153) Мы говорим о боевых системах, в которых пользователи работают годами.
Так что 1С в любом случае = длительная поддержка и развитие. фанатизм всегда вреден, никто не говорит, что только ТДД юзать, на любой функционал нужен тест, нужно 100% покрытие кода :) Конечно, тесты, как и любой код, требуют некоторого сопровождения. Как правило, отладчиком пользуются не для тестов, а для отладки функционала, используемого в коде теста. |
|||||||||||||
155
artbear
17.01.15
✎
22:27
|
(154) Я в (137) дал пример статьи
>>на днях на хабре был интересный перевод по тестированию http://habrahabr.ru/company/luxoft/blog/248051/ там как раз говорится об ускорении разработки, в т.ч и по Agile, и какое место здесь занимают тесты и их разработка. |
|||||||||||||
156
Записьдампа
18.01.15
✎
00:46
|
(139) Т-щ менеджер, ты там из моей презентации в (138) самое интересное зачем-то выбросил – обращение к базе. А при обращении к базе картинка несколько изменяется. Все четко по рекомендациям:
Это, вообще говоря, не ошибка – это пример того, что ваши постулаты типа "Тесты должны быть независимы", в 1С слабовыполнимы Для обеспечения этой независимости вы настойчиво предлагаете использовать транзакцию. При этом получаем отличие среды исполнения теста от продакшна - ровно на эту транзакцию, которая влияет на поведение окружения (внезапно для мировых стандартов, но вполне документировано для 1С). Вообще интересно, что ж вы там у себя такое тестируете по высоким мировым стандартам, что подобный случай не встречали. ОбщегоНазначения.РазложитьСтрокуВМассивПодcтрок ? =) А если встречали, почему не описали в документации как особенность и не дали рекомендации? Да, я могу вручную написать в тесте костыль, обходящий эту особенность и стирающий данные. Но я не буду этого делать, потому что написание тестов тогда превращается в написание движка, причем своего, особенного для каждого тестируемого метода. Зачем тогда мне ваш инструмент? Запускалка обработок? Ну дык и позиционируйте ее так, зачем неработающую идеологию-то проповедовать? |
|||||||||||||
157
Злопчинский
18.01.15
✎
00:53
|
(136) А фигли бы вам не организовать очный семинар-встречу-тренинг.
даже плптно (разумно). я бы с удовольствием приехал обогатиться знаниями. только интересует не примерно вот это https://github.com/xDrivenDevelopment/xUnitFor1C а все таки для чайников - потому как спецы во всем сами разберутся. А хорошо бы ло бы например с чего начать? чем должен владет ДЕВЕЛОПЕР (потому что программистов тут среди нас мизер), чтобы начать использовать ваш подход. какой инструментарий нужен? какой софт? типовой сценарий разворачивания и установки для начала использования. Демо-сценарии разработки простенького теста и прогона его. Мне вот нифига непонятно (я наверное тупой вусмерть). Выделить тучу времени чтобы самому разобраться в ТРЕБУЕМОМ ОКРУЖЕНИИ для выполнения тестов - вообще не понимаю с чего начать. вот хотя бы взять 1с++ - там была дока где от практически самых начал разжевывалось основы и тривиальные примеры. Хотелось бы вот примерно такое же. чтобы посидев, послушав, посмотрев - приехал домой, скачал нужный софт (?), установил (?), организовал рабочее окружение (?) и начал "писать" тесты, а не тратить неделю на создание пространства рабочего. Пусть тесты кривые будут - это вопрос наработки. А инструментарий - ну не глубокий я мегапрограммер (еще куча задач кроме программинга) - все что хочется (пусть даже с увеличением первоначальных затрат) - улучшить качество выдаваемых решений и как-то "стандартизировать" процесс создания их. как то вот так. сорри, если что-то не так.. |
|||||||||||||
158
Pr-Mex
18.01.15
✎
01:39
|
(157) по этой теме уже давно проводятся тренинги и семинары.
Например вот: http://silverbulleters.timepad.ru/event/130489/ |
|||||||||||||
159
Записьдампа
18.01.15
✎
01:55
|
Да не существует его, требуемого окружения. Есть наборы говна и палок разной степени паршивости, начиная от 1Сного сценарного тестирования, через яркий пример - продавливаемый Артуром вот этот вот фреймверк и до поделий безвестных криворуких мастеров. Каждый набор интерпретирует Истину Тестирования по-своему. Модульным тестированием обычно страдают фикси, которые и не подозревают, что в одной конфигурации может быть код разных поставщиков. Сценарным – франчайзи, которым главное – внедрить процесс, а потом убрать все шероховатости. Оно и понятно – это отражение насущных проблем разработчиков.
Потому что не ложатся подходы из умных книжек, рассчитаных на сборку кода из исходников и работу с чистыми базами данных на механику 1С с ее вывертами. 1С она другая – не лучше, не хуже, просто другая. Она позволяет разработчику мыслить бизнес-процессами, проваливаясь в код по минимуму. Но в большинстве своем 1Сник не хочет думать о предметной области, он хочет плескаться в песочнице, размышлять над префиксами имен, переменных, устраивать в комментариях переписку о том, кто последний изменял код. Потому что ему кажется, что это приближает его к “мировым стандартам ” |
|||||||||||||
160
Pr-Mex
18.01.15
✎
01:55
|
(156) Так а в чём собственно проблема с дополнительной транзакцией?
Её никто не навязывает. Никаких стандартов, что её обязательно надо использовать - тоже нет. Просто часто с ней бывает удобней. Вот и всё. Если она в данном тесте мешает - просто ненужно её делать ))) Про написания костыля - тоже непонятно. Требуется написать всего одну процедуру, причём она может быть потом повторно использована всей командой разработки. Никакого нового движка городить не надо ))) А по уму, надо создать запись здесь с описанием проблемы (для начала поискав в уже решенных): https://github.com/xDrivenDevelopment/xUnitFor1C/issues Там люди опытные, подскажут как лучше сделать. |
|||||||||||||
161
Записьдампа
18.01.15
✎
02:00
|
(160) То есть постулаты о независимости тестов, не такие уж и постулаты, а уже рекомендации?
А вот про процедуру поподробней пожалуйста. С учетом того, например, что в обработчиках записи могут порождаться объекты, которые я не контролирую вообще. |
|||||||||||||
162
Злопчинский
18.01.15
✎
02:34
|
(158) учтем
Хорошо бы анонсы мероприятий публиковать на мисте |
|||||||||||||
163
Genayo
18.01.15
✎
10:57
|
(158) И что, там реально за 62 бакса можно скачать полную видеозапись?
|
|||||||||||||
164
Pr-Mex
18.01.15
✎
11:22
|
(161) Независимость тестов друг от друга никак не связана с транзакциями.
Эта независимость может быть достигнута разными способами. Выбирать следует тот способ, что лучше подходить для данной ситуации. Надеюсь понятно объяснил. Насчет реализации процедуры: 1. Можно удалять данные за собой по набору, который использовался для создания окружения. 2. Если происходит что-то совсем критичное, и ты реально не можешь отследить все последствия, можно запустить обработку, которая приводит базу к эталонному состоянию (у меня такая используется на билд сервере при ежедневном запуске тестов). Она работает несколько секунд. Итого - надо просто выбрать инструмент, который лучше подходит для твоего случая. |
|||||||||||||
165
lustin
18.01.15
✎
12:05
|
(158) правильная ссылка http://www.silverbulleters.org/premium-kontent-kursov/
(162) были анонсы - даже банер платный крутился на мисте. а в целом по дискуссии - странные вы тут, немного. Много очень разговоров, мало руками делаете. Превращаетесь потихоньку в дубовый форум. Вам пока РАНО разрабатывать через тестирование, надо начинать с малого. 1. установить сервер сборок - любой который понравится через Далее - Далее - Далее 2. сделайте на сервере сборок 3 шага: а. полный ночной синтаксический контроль текущей версии из хранилища б. выгрузку исходников в git репозиторий (подключите его к TFS, Jira, Redmine в. отсылку на e-mail информации Большего на первом этапе НЕ надо. Захотите запускаться - [email protected] пишите и Вам ответят. Также есть специальный раздел форума http://xdd.silverbulleters.org/t/how-to-xdrivendevelopment-kak-ispolzovat-i-kak-rabotat/46 P.S. И как Артур правильно заметил, "Серебряная Пуля" еще в апреле прошлого года после AgileDays2014 произвела небольшую презентацию для 1С о способах/сценариях разработки через тесты. В перспективе наши наработки я думаю будут включены в стандарт в каком-либо виде (никуда не денемся). Что касается бизнес-задачи я уже писал, что после внедрения наблюдаются следующий финансовые улучшения, для ИТ руководителей * уменьшение срока возврата инвестиций в 1С продукты на 6% * повышение уровня утилизации ресурсов инфраструктуры для 1С на 30% относительно текущего * увеличение индекса удовлетворенности пользователей NPS на 30% * увеличение индекса соблюдения сроков соглашения об уровне услуг SLA на 30% * уменьшение срока выхода функциональности в 2 раза * возможность управлять портфелем продуктов 1С в среднесрочной и долгосрочной перспективе (от полугода до 3-ех лет) |
|||||||||||||
166
tridog
18.01.15
✎
12:10
|
(165) "возможность управлять портфелем продуктов 1С в среднесрочной и долгосрочной перспективе" - и почему когда я читаю такие заявления вспоминается история "про кактусы и розы"?
|
|||||||||||||
167
Записьдампа
18.01.15
✎
12:10
|
(165) Вот ты сейчас практически всем заинтересованность и убил, молодец, чо...
Поняли, котаны? Рано вам еще, странные вы. У нас тут финансовые улучшения, для ИТ руководителей... И да, 62 бакса за курс. |
|||||||||||||
168
lustin
18.01.15
✎
12:26
|
(166) потому что мы с Вами читали одни и теже статьи, единственный способ объяснить пользу от http://scaledagileframework.com/ - использовать именно такие формулировки
(167) не хитрите пожалуйста, как Вы еще обоснуете переход на подобные подходы перед руководством. А специально для Вас мы накидали другое: Разработчик сможет: * повысить заработную плату * повысить процент интересных задач в общей массе рутины * поехать вовремя в отпуск * не заниматься микроменеджментом * не "тушить пожары" * иметь команду проффесионалов * выступить на Инфостарте как докладчик * получить почет и уважение ... * "мир во всем мире" |
|||||||||||||
169
lustin
18.01.15
✎
12:33
|
(0) что касается самого фреймворка - то да: пока это инструмент от проффессионалов, для проффесионалов. Чтобы придать ему маркетинговой привлекательности и "продуктового" лоска и запущена концепция консалтинга. Продукт то напоминаю OpenSource - то есть Вы можете сколько угодно критиковать на словах, но pull request'ов мы от Вас не наблюдаем, также как и Issue на github. А это говорит о том, что Вы хотите получить НИЧЕГО не отдавай.
В связи с чем я и написал, что по большому счету Вам не нужна "разработка через тестирование". Вы пока не столкнулись с проблемой. А вот проблемы как правильно написал orefkov - простые и банальные: например когда все только начиналось, среднее количество дней жизни задачи было 112 дней (как раз на проекте PrMex) сейчас по моим данным - это уже 43 дня от момента возникновения до финального аудита выполнения. Вот вам и экономическая эффективность. |
|||||||||||||
170
lustin
18.01.15
✎
12:34
|
(169) "что Вы хотите получить ВСЁ, НИЧЕГО не отдавая" - вот так будет правильней.
|
|||||||||||||
171
Записьдампа
18.01.15
✎
12:44
|
(168) У вас забавный промах в оценке целевой аудитории.
Если пристально почитать ветку с начала, то станет ясно, что начали общаться разработчики с разработчиками, на уровне разработчиков. Потом пришел Артур, который начал мягко продвигать свой продукт - ну на безрыбье и то хлеб. С точки зрения разработчиков. И тут приходит т-щ помощник Солнца, думая что тут засели как минимум начальники IT служб, и прямо заявляет, что это все для профессионалов, а вам это не надо, потому что экономическая эффективность, и вообще вы негодяи, которые хотят ВСЕГО! Маркетинговая привлекательность и продуктовый лоск, они разработчикам как-то перпендикулярны. Они с конечным продуктом работать будут, что собственно и обсуждают. В результате при внедрении получите активное противодействие снизу. И зачем, спрашивается, приходил? |
|||||||||||||
172
lustin
18.01.15
✎
12:55
|
(171) у меня нет промаха в оценке целевой аудитории - я все прекрасно понимаю.
исходный посыл - "профанация и мракобесие". Нет. Если совсем вдаваться в историю, то продукт Артура, а точнее продукт со множеством участников https://github.com/xDrivenDevelopment/xUnitFor1C/network/members был ответом на попытку в одной крупной компании выпилить 1С в принципе и заменить ее на "кошерную" платформу. Потом все было еще веселей - как я уже написал: Agile начал рапространяться как "протечка с потолка", и необходимо было реагировать - так возник остальной инструментарий git, code review и всё остальное. Теперь еще страшней - переход на концепцию DevOps: когда больше нет разработчиков или тестировщиков - есть только инженеры. Так возникли адаптации docker и chef к 1С. Нам к сожалению или к счастью приходится жить НЕ в закрытом мире 1С, а в тесном сотрудничестве с С#, Java, Ruby, Python. Если у вас НЕТ подобных проблем - то тогда всякие эти новомодные TDD|BDD не для Вас, пока материнская компания не запилит их адаптацию официально. |
|||||||||||||
173
lustin
18.01.15
✎
13:16
|
И еще в качестве расширения кругозора - найдите знакомое лицо в мире 1С на следующей картинке http://skilltrek.ru/img/02.jpg
|
|||||||||||||
174
Злопчинский
18.01.15
✎
13:41
|
Зашибись
Я(условно) чтобы повысить собственную продуктивность заюзываю всякие продукты (мсофис, групваре И так далее) И даже плачу за некоторые из них При этом никто не требует участвовать в их разработке 1сники - в части неодинэс - малоподвижны в смысле чегото другого, такиеже потребители. Как большинству потребителей ьольшей части одинэсников пофиг что потреблять. Основной принцип -пришел взял запустил и юзаешь. Меньшая часть более активна и чегото изобретает активно участвует и делает Могу ошибатся Хз Непонятно Видно нет у меня задач такого масштаба чтобы все это "мракобесие" стало востребованным |
|||||||||||||
175
Гёдза
18.01.15
✎
13:42
|
Очень малое количество ИТ начальников понимают необходимость структурного подхода к тестированию.
А внедрить такую систему снизу мало реально |
|||||||||||||
176
Гёдза
18.01.15
✎
13:43
|
Ибо выгоды от такого подхода проявляются не сразу,а увеличение время на разработку очень даже есть
|
|||||||||||||
177
Гёдза
18.01.15
✎
13:44
|
Ведь мы пишем тесты, чтобы ПОТОМ наши доработки не сломались, а это потом обычно и остается на потом
|
|||||||||||||
178
tridog
18.01.15
✎
14:03
|
(173) Олега сложно не узнать. Написал бы лучше, что это вообще за фото)
|
|||||||||||||
179
lustin
18.01.15
✎
14:12
|
(174) ну и я о том же - от проблемы надо исходить.
Разработка через тестирование - это игра в длинную: когда ты пилишь продукт срок жизни которого ну скажем от 3-ех месяцев и ты его разработчик, тебе чтобы не подставить самого себя, хочешь - не хочешь нарабатывать автоматизированные скрипты. Когда ты приходящий разработчик "под задачу" - здесь лучше "играть в короткую": разработка через поведение - накидал код типа такого: ПриходнаяНакладная.НажатьМоюРазработаннуюКнопкуКотораяДелаетСкидку(); ОтчетСНовойСкидкой.Показать(); Еще это называется ДемонстрацияЧерезТестирование ;-) - так пробудет Ваня Берездецкий и команда где он работает (хотя по моему они периодически забивают и на это). То есть тестирование - фактически "Кнопка нажималка" перед демонстрацией заказчику и во время деонстрации. После этого акт выполненных работ и деньги на бочку ;-) P.S. Артур сейчас будет ругаться - фактически здесь тестовый код пишется после самой разработки: но зато он хотя бы пишется и пользователи не тестируют руками. (178) фото это с тренингов Асхата Уразбаева и ScrumTrek по внедрению инженерных практик при разработке, тот самый "соседний" мир "кошерных" платформ. Как говорит EvilBeaver - может поэтому БухгалтерияПредприятия сейчас с каждым днем выглядит всё привлекательней и привлекательней. |
|||||||||||||
180
Записьдампа
18.01.15
✎
14:19
|
(173)
- Дамы, а давайте играть в карты на раздевание - Поручик, вы посмотреть хотите или похвастаться? Ну Фогель, ну без бороды. К Моничеву вас не подпустили, я так понимаю? И правильно сделали. В общем, в подкорку четко вбито: ТДД -> внедренцы xUnitFor1C -> Лустин нагло сказал что нам это не надо, и вообще вы превращаетесь в дубов. Спасибо большое за ценный совет и разработанный продукт. |
|||||||||||||
181
lustin
18.01.15
✎
14:40
|
(180) Я уважаемый, Вам лично, ничего нагло НЕ говорил.
Я вам лично сказал, что надо быть более конкретным, чтобы вам могли что-то посоветовать и подсказать. Я занимаюсь внедрением инженерных практик в командах 1С. Есть проблема ? Есть инженерная практика как делать надо и как лучше не надо, чтобы не подставится. С xUnitFor1C придется думать и кодировать по другому, поэтому я посоветовал начинать с простого "ночного" синтаксического контроля. Затем первый дымовой тест на открытие всех форм. Потом уже что-то серьезное. То есть я советую не разрабатывать через тестирование сразу обычным 1С разработчикам, а начать с простой автоматизации собственной деятельности - например получение актуальной версии их хранилища https://github.com/xDrivenDevelopment/AutoAdmin1C/blob/develop/Scripts/retrieve_storage.os чтобы сделать каталог версий CF файлов Отсылка к дубовому форума - была не персонально к участникам дискуссии, а к ее формату в стиле http://vapaus.ru/ Я думаю к этой теме многие еще вернутся в конце года, тогда думаю получится чуть конструктивней. |
|||||||||||||
182
Злопчинский
18.01.15
✎
14:41
|
Эээ
Просветите незнающего Я так понял есть два конкурирующих подхода Или что? |
|||||||||||||
183
tridog
18.01.15
✎
15:07
|
(179) А можем быть она выглядит привлекательней и привлекательней благодаря стараниям ее разработчиков?
Не умаляя тренингов Асхата Уразбаева (вообще о них ничего не знаю) - но так говорить нельзя. Иначе поставщик туалетной бумаги на селезневку сможет заявлять, что благодаря его туалетной бумаге БП становится все лучше) |
|||||||||||||
184
orefkov
18.01.15
✎
15:28
|
Имхо, все просто - запуск и обслуживание бензопилы очень отличается от запуска и обслуживания самолетного двигателя. Было бы глупо на бензопилу заводить формуляр двигателя, записывать все запуски, времена работы, вести подробный учет каждой детали. И таки да, бензопила заводится гораздо быстрее и дешевле, чем самолетный двигатель.
Поэтому, имхо, если человек не видит выгод автотестирования, скорее всего, его продукт еще не дошел до масштаба/необходимости их применения. С другой стороны, если человек начинает задумываться о таких вещах, скорее всего продукт уже вырастает из коротких штанишек. Разработчик чувствует, что что-то уже не так, но что именно, и куда дальше тыкаться - еще не понимает. |
|||||||||||||
185
lustin
18.01.15
✎
15:32
|
(182) да именно - 2 подхода.
1. Внедрять сразу разработку через тестирование - типа "прям вот завтра" без тестов НЕ пишем кода. Всей командой - это дает максимально взрывной объем тестов и другой подход к разработке, что собственно "больно" и в итоге в команде возникают "ненавистники" тестов - примеры может рассказать PrMex 2. Начинать с сервера качества (сервер сборок), потихоньку прикручивая всякие автоматические плюшки, типа проверки, копипастамеры, анализ конфиугации т.д. - ну то есть какие проблемы сейчас актуальны, такие и автоматизируем. А потом когда "вся обвязка" автоматизирована - автоматический "накат" на рабочую уже сделал. Начинаем в процесс добавлять тесты - вначале дымовые (типа открыть все формы в конфигурации и закрыть их), потом "кнопко-нажимки" - тестирование 8.3, а уже потом доходим до Unit тестирования. Каждая команда выбирает свой подход и свой путь развития - стандартом тут является только наличие сервера сборок и скриптинг на 1Script, чтобы было удобней автоматизировать и не переключать контекст. |
|||||||||||||
186
lustin
18.01.15
✎
15:38
|
(183) Асхат, а точнее 3 команды ScrumTrek, SystemAproach и UnusalConcept занимаются повышением уровня качества команд разработки в сотфтверных компаниях
http://scrumtrek.ru/ - для разработчиков http://www.system-approach.ru/ - для менеджеров продуктов и системных архитекторов http://www.unusual-concepts.ru/ - для владельцев ИТ бизнеса в НЕ 1С мире очень известные товарищи - выходцы из кузницы LuxSoft по-моему. (0) Кстати - в НЕ 1С мире тоже идет большая война: как тестировать и сертифицировать. Причем процесс сертификации описан в том же ГОСТ, но простого способа "прогнать поведение системы" под конкретной версией Windows и MSSQL пока не существует. В итоге многие C#, Java, ruby и python программисты вполне себе осознанно забивают на всякие эти ваши методики. |
|||||||||||||
187
Genayo
18.01.15
✎
16:03
|
(185) А есть подробное описание "для чайников" с чего начинать 2 подход, какой и как использовать софт и т.д?
|
|||||||||||||
188
artbear
18.01.15
✎
16:20
|
Кто-то тут писал, что я пришел и начал двигать наш продукт по тестированию. ИМХО ЗаписьДампа писал.
Это неверно, т.к. в этой теме народ еще в декабре писал о нашем продукте xUnitFor1C. Как Алексей написал, есть разные подходы по разработке и тестированию. Есть ТДД - разработка через тестирование. Есть другой подход (185) - сначала идет автоматизация на сервере сборок, и постепенно добавляются разные тесты, в режиме ТДД или без него. Главное - автоматизируйте свою работу и не замыкайтесь только на 1С. Используйте чужие полезные практики. Все равно в обоих случаях используется наш продукт xUnitFor1C для различных видов тестирования. Даже сценарные тесты 8.3 поддерживаются :) ИМХО аналогов в мире 1С для него нет и вряд ли вырастет без участия компании 1С. |
|||||||||||||
189
Rie
18.01.15
✎
17:20
|
(174) Среди 1Сников, как и везде, работает правило "80-20".
|
|||||||||||||
190
lustin
18.01.15
✎
21:17
|
(185) Подробное мы попробовали в виде блого-записи http://www.silverbulleters.org/obyichnyiy-start-rabotyi-obyichnogo-programmista-1s/
Потребуется: шаг "первый": 1. TeamCity 2. SourceTree + MsGit 3. Gmail акаунт 4. Bitbucket акаунт шаг второй: 1. 1Script - https://bitbucket.org/EvilBeaver/1script/wiki/Home - качать лучше последнюю версию инсталятора http://ci.silverbulleters.org/job/1Script-Develop-Build/lastSuccessfulBuild/artifact/dist/ 3. команда Create build plan 4. команда Create build step 5. Получить последнюю версию из хранилища - https://github.com/xDrivenDevelopment/AutoAdmin1C/blob/develop/Scripts/retrieve_storage.os - получаем CF 5. один скрипт написать самим - полученный CF файл проверить синтаксически ;-) По памяти всё - по моему это даже домашнее задание на одном из курсов |
|||||||||||||
191
ifso
18.01.15
✎
23:13
|
(190) в т.ч. после таких пробовательных тестов и родился крик души в адрес оплачивающих банкет "памагите разабраться с тармазами файловой бухии", не ?)
|
|||||||||||||
192
lustin
19.01.15
✎
09:39
|
(191) если у вас проблемы с тормозами файловой бухгалтерии - это другой курс-практикум ;-)
Свое (обоснуй, а то так всю науку с х.. сведешь) |
|||||||||||||
193
DrZombi
гуру
19.01.15
✎
09:52
|
Хотя 1С тестирует на пользователях :)
Я тестирую я тщательно отлаживаю свои разработки |
|||||||||||||
194
Pr-Mex
19.01.15
✎
12:32
|
(175) (176) (177)
Есть такое. Начальнику тоже надо дозреть. Большие конторы быстрее приходят к пониманию, что что-то надо менять. Лучше начинать с малого. И дело пойдёт. |
|||||||||||||
195
ifso
19.01.15
✎
12:43
|
(192) там (см. Какие вести с партнёрского семинара? БП 2.0 закрывают? 8.3.6.x выпускают? ) авторам душевных криков аналогично еще не ответили ?)
|
|||||||||||||
196
ultrannge89
19.01.15
✎
13:12
|
Заказали у бита сделать правила обмена между ут 11.1 и бух 2.0.
На самом деле складывается ощущение что они свои правила никогда не тестят. Написание правил по выгрузке 3х документов длится уже месяца полтора, но по правде сказать хотелок у бухов тоже дофига, но тоже проверять их наработки запарился уже. Хотя в этом есть очевидный плюс, теперь я хоть немного стал разбираться в конвертации. |
|||||||||||||
197
Злопчинский
19.01.15
✎
13:15
|
Что ты хочешь от расставлятелей галочек
Какой квалификации? Нет у них понимания поэтому и идет так все долго |
|||||||||||||
198
lustin
09.02.15
✎
16:52
|
(197) Может это поможет http://infostart.ru/public/328695/
|
|||||||||||||
199
Ksandr
09.02.15
✎
17:34
|
Все никак не доберусь - собираюсь написать пару приемочных тестов с использованием RSpec, Capybara и Poltergeist. Суть в том, что Poltergeist откроет веб клиент 1С, Capybara пощелкает кнопки и сообщит что и как.
|
|||||||||||||
200
Ksandr
09.02.15
✎
17:35
|
В приложении на Ruby on Rails уже около 100 тестов, а покрыто только процентов 20% функционала.
|
|||||||||||||
201
Злопчинский
09.02.15
✎
21:17
|
(198) посмотрим
|
|||||||||||||
202
artbear
10.02.15
✎
18:00
|
Желающие могут посмотреть мою статью на Инфостарте http://infostart.ru/public/326820/
"Механизмы тестирования в 1С. Использование методики TDD (разработка через тестирование) в 1С" Данная статья написана по материалам доклада, прочитанного автором на первой конференции инфостарта 2012 года. Она опубликована в журнале Инфостарта №1. |
|||||||||||||
203
Garykom
гуру
10.02.15
✎
18:49
|
(202) в статье, новый метод 4 изобрел "парное программирование или обзоры кода"
это так то не "один пишет – один контролирует", а "один пишет|кодирует - один командует|управляет|говорит что писать" т.е. это похоже на прораба и работника ЗЫ применял(и) этот метод, супер по факту т.е. одному думать не надо тупо изображай интеллектуальную печатную машинку, а вот второй думает тот же метод для двух геологов с ВО, один башкой работает а второй тупо с лопатой отдыхает...потом меняются ЗЗЫ метод правильно называется "программирование на коленях" |
|||||||||||||
204
artbear
10.02.15
✎
19:28
|
(203) Весь смысл именно в паре, а не в командовании :(
прочитай внимательно еще раз этот абзац из статьи. один пишет, другой рядом контролирует, задает вопросы, уточняет и т.п. в этом максимальная польза. И это давно известный принцип экстремального программирования. |
|||||||||||||
205
Злопчинский
10.02.15
✎
19:36
|
угу.. видно, что типовые явно в некоторых местах писали экстремалы ;-)
|
|||||||||||||
206
Злопчинский
10.02.15
✎
19:37
|
Самый простой пример (может заблуждаюсь?) - ТИС, из документа поступления (валютныйе цены) обновляется закупочная цена в справочнике (рублевая) - так блитн обновление идет по курсу валюты из справочника валют, а не по курсу в документе поступления - я малось в осадок выпал).. - может ступил конечно...
|
|||||||||||||
207
artbear
10.02.15
✎
19:46
|
(206) Вот тебе и нормальный сценарий создания теста:
нашел ошибку, воспроизвел в тесте, убедился, что тест падает, исправил код, убедился, что тест не падает. включил в общие тесты, которые запускаются - ночью или часто профит. если в следующий раз обновишь конфу, запустишь тесты и увидишь, что этот тест упал, получишь профит - бага не будет. реальный психологический профит :) проверено на себе и других подопытных :) |
|||||||||||||
208
Злопчинский
10.02.15
✎
19:56
|
(207) однако чукчу умный...
"тест падает" - это хорошо.. в данном случае - ничто нигде не падает. получаются неверные (с моей и клиента точки зрения) закупочные рублевые цены. Чтобы понять верные или неверные цены - надо собственно вручную прорешать некий тестовый вариант. если я прорешал вручную тест - то нафиг мне его писать? чтобы гонять регулярно и убеждаться что все ок? . хорошо когда результат теста приводит к падению - результат выполнения теста очевиден. когда результатом теста является сравнение с неким эталоном - ито нафиг мне тесты? я сам себе эталон... |
|||||||||||||
209
Злопчинский
10.02.15
✎
19:59
|
тут даже вопрос тсоит в том - как понять что тестом надо покрыть именно сравнение закупочных цен по типу как есть сейчас и как должно быть...? если я знаю как должно быть - то ценность впоследствии созданного теста, покрывающего данный участок - минимальна. да, хорошо что тупой контроль будет делать тупой тест а не я. Но на своей памяти повтороне выплывание косяков там где они были исправлены - нстолько редки - то писать тесты для этого нет никакого смысла. если только конечно не корабль к юпитеру запускаешь
|
|||||||||||||
210
Garykom
гуру
10.02.15
✎
20:27
|
(204) согласен что 2-й который пишмашинка может вставлять свои 5 коп.
но он не главный, т.е. последнее слово не за ним! там дальше есть такое правило )) если он считает что надо не так...то работающий головой без вопросов садится за клаву и говорит "ну давай говори как надо сделать - командуй дальше" замена происходит на ходу, смысл в том что тот, кто думает стратегии, не должен париться тактикой |
|||||||||||||
211
Garykom
гуру
10.02.15
✎
20:29
|
(208) в примере подразумевается что ниче вручную прорешивать не надо, уже есть ответ готовый для тестовых данных и их прогоняем
банальная система тестирования например для всяких олимпиад по программированию, когда прогу тестируют набором тестов и даже если в проге есть ошибки но набор тестов их не выявил то победил )) |
|||||||||||||
212
Злопчинский
10.02.15
✎
20:39
|
(210) опыт показывает что там, где нет ответственного за дело - бардак и херня сплошная. Двух ответсвенных - быть не может. Просто потому что это не может. По определению. Потому что сношать мозг со стороны руководителя в отношении подчиненных - гораздо удобнее и продуктивнее одному ответсвенному, ане двум раздолбаям... пусть они даже называются экстремальными программистами.
я бы даже назвал это не "экстремальное программирование", а "X-тремальное" - потому что что получится - вообще непонятно.. неизвестно... . У как говорят у нас горнолыжников-программистов: - В экстремальном программировании главное - вовремя понять где кончается экстрим и начинается pizdec |
|||||||||||||
213
Злопчинский
10.02.15
✎
20:40
|
(211) юлин. где я этот "готовый ответ для тестовых данных возьмму"..?
|
|||||||||||||
214
Garykom
гуру
10.02.15
✎
20:48
|
(213) от заказчика?
|
|||||||||||||
215
Злопчинский
10.02.15
✎
20:51
|
нафига мне его от заказчика брать? он мне его сам даст - когда ошибка вылезет.
но мы ведь говорим о том, чтобы в эксплуатацию УЖЕ по возможности без ошибок выдавать... . херня короче полная эти ваши тесты. для промышленной разработки наверное нужное дело в остальном - весьма весьма сомнительно... |
|||||||||||||
216
Злопчинский
10.02.15
✎
20:51
|
Пока что, клиентура сильно кривится когда сумма за работы увеличивается.. с какого хз объем работ увеличился примерно при том же качестве продукта?
|
|||||||||||||
217
Reaper_1c
10.02.15
✎
22:08
|
(212) Может хватит уже примерять техники коллективной разработки, нужные для ускорения и повышения качества работы команды программистов применять к себе одному? Пока ты один - любая командная техника тебя замедлит, увеличит стоимость и не повысит качества, потому как ты уже супер стар.
|
|||||||||||||
218
Злопчинский
10.02.15
✎
22:12
|
Блина
Есть желание гдето чтото улучшить Но как Пока непонятно |
|||||||||||||
219
Злопчинский
10.02.15
✎
22:13
|
вот блин типовые конфиги мамы
Они вообще както тестируются Какова внутренняя кухня Кто в курсе? |
|||||||||||||
220
Garykom
гуру
10.02.15
✎
22:41
|
(219) есть штат обезьянок...иногда на них экономят и используют вынужденных, да еще и платить за это заставляют ))
|
|||||||||||||
221
Mutniy2
10.02.15
✎
22:51
|
(0) > как определить минимальный набор тестов, покрывающих нужный функционал..?
Зависит от простоты алгоритма. Если алгоритм прост, то тестирование нужно шапочное, однако, если алгоритм сложен, то его надо покрыть тестами. Пример сложного алгоритма: реализация односвязного списка на с++ и т.п. |
|||||||||||||
222
GedKo
10.02.15
✎
22:59
|
(99) 1. легко. и могут быть более затратными в человекочасах.
2. тесты - это признак что не так. при разборе полетов или тест подправишь или код. так что тесты в тестах не нуждаются. нуждается в тестах система, которые их отрабатывает :) |
|||||||||||||
223
GedKo
10.02.15
✎
23:07
|
(219) >Кто в курсе?
не знаю как в типовых, а у нас тесты делятся на три типа: 1) человекотесты - ищут «непредсказуемые» глюки 2) автотесты - проверяют результаты экспортных процедур/функций и функциональность создания объектов 3) пользователи - ну тут как у всех. |
|||||||||||||
224
Reaper_1c
10.02.15
✎
23:28
|
(219) Хреново они тестируются. Регрессионного тестирования нет. Есть следы автоматизированного тестирования с различными типами клиентов и только. В прошлом году 2 раза регистрировал ошибки, возникшие из-за некачественного тестирования БП перед релизом. Просто функционал не запускали после сборки релиза ни разу.
|
|||||||||||||
225
Reaper_1c
10.02.15
✎
23:28
|
(218) Любое улучшение нужно начинать с поиска проблемы/ограничения...
|
|||||||||||||
226
Злопчинский
10.02.15
✎
23:55
|
Все проблемы там где не автоматизировано -в неспособности выполнять и согласовывать простейшие действия между двумя сущностями-людьми
Злой я шо капец |
|||||||||||||
227
Garykom
гуру
11.02.15
✎
00:04
|
(226) нее, проблема в коммуникациях...
т.е. как заказчик может объяснить что он хочет, если он сам не знает что ему надо? и наоборот как исполнитель может делать софт для заказчиков, не разбираясь, не поработав как они? вот недавний яркий пример это УТ11, вот почему они почти допиленную УТ10.3 просто не переписали на УФ? зачем свой лисапед делать? который пока как надо не ездиет? причем писали явно полные 7-ники )) |
|||||||||||||
228
Garykom
гуру
11.02.15
✎
00:05
|
(227)+ причем походу ЗиК-цы ))
|
|||||||||||||
229
Злопчинский
11.02.15
✎
00:05
|
(227) то что проблема в коммуникациях это однозначно
|
|||||||||||||
230
Злопчинский
11.02.15
✎
00:06
|
(227) тв это... На семерочников то не гони...
|
|||||||||||||
231
Злопчинский
11.02.15
✎
00:07
|
Ну както двигаться вперед надо
Вот и переписывают по сто раз одно и то же |
|||||||||||||
232
Garykom
гуру
11.02.15
✎
00:09
|
(230) дык как на знатоков 7.7 и не думал
но вот такими же методами, причем копи-паст из конф 7.7 это что? |
|||||||||||||
233
Garykom
гуру
11.02.15
✎
00:10
|
(231) движение ради движения? это какой то m$ и abode выходит
|
|||||||||||||
234
Garykom
гуру
11.02.15
✎
00:13
|
(233) в результате выигрывает не то кто новое-лучшее придумывают, а те кто "лучше двигаются" т.е. новые версии г* выпускают
как с принтерами и картриджами для них )) сча на дешевых принтерах, точнее на дорогих картриджах для них больше производители аналогов зарабатывают чем бренды потому что быстрее их выпускают и распространяют чем сами бренды |
|||||||||||||
235
artbear
11.02.15
✎
00:21
|
(210) Ты мелкое с мягким не путай :)
Парное программирование это не то, о чем ты рассказываешь. дай "своему" методу работы 2-х человек другое название, т.к. "парное программирование" уже занято. |
|||||||||||||
236
artbear
11.02.15
✎
00:27
|
(215) ты уж для себя определись, понимаешь ли, что такое тестирование вообще?
Почитай википедию и т.п. упрощенно - тестирование это проверка твоей программы каким-то ожиданиям/условиям. твой вопрос - откуда возьмутся тесты? ответ - да откуда угодно! от заказчика, сам придумай, из условий/ограничений. автоматизируем тестирование для того, чтобы оптимизировать свою работу, исключить появление старых ошибок, упростить сопровождение. Попробуй поработать в каком-нибудь коллективном проекте (где не один программист, а несколько разного уровня компетенции) и сам увидишь, нужно ли тестирование. |
|||||||||||||
237
Reaper_1c
11.02.15
✎
00:28
|
(226) Аналогично, коллега. Может тебе пора уже soft skills осваивать? В hard skills у тебя и так компетенция заоблачная для текущей деятельности-то...
|
|||||||||||||
238
Garykom
гуру
11.02.15
✎
00:35
|
(235) тогда каким образом это метод программирования? каким образом и чем он отличается от обычной совместной разработки группой из 2-х и более человек? причем даже тимлида нету ))
|
|||||||||||||
239
Garykom
гуру
11.02.15
✎
00:40
|
(238)+ извиняюсь, но без главного (который всегда прав и отвечает за это если что) любые разногласия и сразу проблема - стоп разработке
система мастер-подмастерье работает, система 2 мастера без разделения задач или без старшего мастера сверху нет |
|||||||||||||
240
Reaper_1c
11.02.15
✎
00:50
|
(238) Главный - архитектор проекта. У него этих парных ячеек не одна и не две. Настоящему парному программированию все эти игры с ответственностью не нужны - вокруг места дислокации ячейки стоит гвалт и треск, работа прет дуром. А все потому, что разработчикам процесс начал приносить удовольствие.
(239) Да их толковый менеджер за неделю научит правильно работать. Особенно если техническими навыками не обладает. После 5-10 сеансов реализации каждого из мнений с разбором плюсов и минусов полученных результатов code monkey сами научатся в спорных случаях делать оба варианта и проводить ретроспективу. |
|||||||||||||
241
Garykom
гуру
11.02.15
✎
00:54
|
(240) т.е. надо найти 2-х скиллнутых прогов на 1 задачу? а смысл?
если 1-го то найти проблема не говоря уже о том что 2-е одну задачу в 2 раза быстрее не сделают )) но могут сделать в примерно 1,5 раза лучше |
|||||||||||||
242
Reaper_1c
11.02.15
✎
01:15
|
(241) Один скилловый прог:
Сомневается в каждом своем решении. Пока сомневается - раздумывает и не кодит. Имеет запущенный мессенджер Имеет запущенный почтовый клиент Вспоминает, что еще не читал хабр В паре 2 скилловых прога не сомневаются - они пишут код блеать. В паре 2 скилловых прога не отвлекаются на мессенджер и почту - они пишут код блеать. В паре 2 силловых прога не отвлекаются на хабр - они пишут код блеать. В итоге решение результат появляется даже быстрее чем в 2 раза. |
|||||||||||||
243
Garykom
гуру
11.02.15
✎
01:55
|
(242) не видел )) без надсмотрщика сзади за спиной с табелем. чтобы такое работало...
скорее они будут в хероев причем онлайн играть двоем )) |
|||||||||||||
244
Злопчинский
11.02.15
✎
01:57
|
(232) вопрос к тем кто подбирал команду для написания конфиг
|
|||||||||||||
245
Злопчинский
11.02.15
✎
02:00
|
(236) у меня нет никаких сомнений в необходимости тестов и втотестов при командной разработке
Хотя бы потому чио мой опыт меня учит что большинство проблем именно на стыках А при командной разработке я думаю этих стыков пруд пруди Где поймают там и пруд |
|||||||||||||
246
Злопчинский
11.02.15
✎
02:01
|
(237) елы палы дай хоть ссылку почитать про софтскилл и хардскилл
|
|||||||||||||
247
Злопчинский
11.02.15
✎
02:03
|
(242) в результате код такой что смотреть противно
Ибо ни томуни другому не хватило времени хабр почитать по теме кодируемого Ибо пишут код блеать с дикой скоростью |
|||||||||||||
248
Злопчинский
11.02.15
✎
02:03
|
Забыл поставить мегасмайл
|
|||||||||||||
249
Garykom
гуру
11.02.15
✎
02:05
|
(248) такой ?
???????????????????????? ???????????????????????? ???????????????????????? ???????????????????????? ???????????????????????? ???????????????????????? ???????????????????????? ???????????????????????? ???????????????????????? ???????????????????????? |
|||||||||||||
250
Garykom
гуру
11.02.15
✎
02:06
|
(249) (( блин в кодовой таблице нету этих ASCII символов
|
|||||||||||||
251
Garykom
гуру
11.02.15
✎
02:06
|
||||||||||||||
252
Злопчинский
11.02.15
✎
02:10
|
(243) не ну почему
Я видел и сам участвовал И перло нас в паре с челом с которым мы работали нереально Просто потому что мы иогда были молодые По 20 лет Хренячили с дикой производительностью на ассемблере так что только перья летели Разрабатываемая прога тестировала сама себя -новый пишущийся функционал Как снежный ком наращивалась За пять дней с нуля освоить ассемблер узкоспециализированного аычислителя На кроссассемблере запрограммить незеровую программу Отладить это все прогнать и сдать в эксплуатацию Это да Это было И не надо было нахрен никаких тдд эджайлов и прочего Просто потому что перлонереально И главное потому что жто было комуто реально нужно А сэтой одноэсиной такое впечатление что постоянно в куче дерьма копаешься Это как сервячок сынок говорит папечервячку Папа вот пчелки цветочки Вот бабочки цветочки Почему мы то в говне? Потому что сыное - Родина! |
|||||||||||||
253
Reaper_1c
11.02.15
✎
02:18
|
(246) Ну вот вроде статья неплохая: http://futurecenter.in.ua/pratsevlashtuvannya/korysni-porady/hard-yly-soft-skills-chto-vazhnee-dlya-menedzhera/ (252) Вот так оно и началось. Посмотрели умные люди на 20 летних пацанов, которые жгут, и подумали: "А мы чем хуже?"
|
|||||||||||||
254
Garykom
гуру
11.02.15
✎
02:36
|
(253) эээ? типа греки/римляне мочили за счет софтскиллс всех варваров с хорошими хардскиллс ?
индивидуально любой варвар уделывал 2-3 греков/легионеров но вот фаланга/легион уделывал любую толпу варваров на раз )) так это пока вопрос "методы" развития и обучения уникальным навыкам. типа художественный талант там и т.д. потом кто нить систематизирует, разработает тесты для выявления и методички для развития и будет конкретный такой хардскиллс с этого момента |
|||||||||||||
255
Злопчинский
11.02.15
✎
03:22
|
(253) фраза а чем мы хуже чем то мне напоминает филььм тупой и еще тупее часть два
;-) |
|||||||||||||
256
Злопчинский
11.02.15
✎
03:31
|
(253) спасибо
Отправил ссылочку своим руководителям |
|||||||||||||
257
gae
11.02.15
✎
09:19
|
(79) Написание автоматизированного теста для проверки влияния каждой доработки на другие механизмы - это по моему слишком затратно. Плохо себе вообще это представляю...
Теоретически, конечно, можно сделать некий огромный тест который несет в себе проверку кучи ситуаций, но он во первых будет очень долго проверять (хотя можно, наверное, запускать частично, для предполагаемых проблемных объектов), во вторых поддерживать его в актуальном состоянии для изменяющейся/обновляющейся программы - это жестоко. Как правило разработчик, исходя из знаний взаимосвязь в конфигурации, в каждом конкретном случае определяет на что может повлиять, и хотя бы минимально "протыкивает" некоторые действия, проверяет что они не поломались. |
|||||||||||||
258
gae
11.02.15
✎
09:22
|
А тестирование работоспособности самого нового функционала - это в основном создание контрольных примеров со спектром ситуаций, и прогонка по ним.
Работает - передаем в опытную эксплуатацию, ловим там ошибки, правим. |
|||||||||||||
259
artbear
11.02.15
✎
12:03
|
(257) А программа-то развивается, а возможностей все больше, а старые возможности также должны работать.
А кто-то должен это все проверять? а с каждым разом проверок все больше? тут или забивать и надеяться, что разработчики молодцы или пользователи все найдут или переходить на автоматизацию проверок/тестирования. |
|||||||||||||
260
Гёдза
11.02.15
✎
12:10
|
Самое сложное в тестировании - это когда нужно для теста создать пяток документов и уже в 6 увидеть нужный результат (например зачет авансов).
Так влом обычно эту ситуация воспроизводить, что часто думаешь: а я же ничего такого не трогал - значит не сломалось. Вот тут как мне кажется автотестирование, где авто создадутся эти необходимые документы очень помогает |
|||||||||||||
261
Гёдза
11.02.15
✎
12:13
|
Сам недавно приобщился к хЮнит и уже пару раз он мне помог
|
|||||||||||||
262
Гёдза
11.02.15
✎
12:14
|
Единственное что в для хЮнита ОЧЕНЬ мало документации, примеров, бест практис
|
|||||||||||||
263
n0ther
11.02.15
✎
12:46
|
В первую очередь по-любому smoke test. А дальше зависит от заказчика задачи. Если внешний - то 1ый пункт, если внутренний - то 2ой.
https://ru.wikipedia.org/wiki/Smoke_test Свое (обоснуй, а то так всю науку с х.. сведешь) |
|||||||||||||
264
Злопчинский
11.02.15
✎
12:55
|
(261) хотелось бы поподробнее
Что сподвигло На чем проверял Какие результаты ощущения |
|||||||||||||
265
artbear
11.02.15
✎
14:02
|
(260) Да, сложный этап "создание тестовых данных" всегда сильно осложняет создание тестов.
Вот для этого я в xUnitFor1C и добавил генератор макетов данных на основании реальных данных. В итоге создание данных очень сильно упростилось, и сейчас на это тратится мало времени, основное время уходит на код самого теста и его проверку. |
|||||||||||||
266
artbear
11.02.15
✎
14:22
|
(263) в качестве дымовых тестов в xUnitFor1C я реализовал спец.тесты "открытие всех форм конфигурации", открываем под пользователем-админом и пользователями с ограниченными правами.
достаточно быстро ловятся все простейшие недоработки и проблемы с правами. |
|||||||||||||
267
artbear
11.02.15
✎
14:25
|
(262) Работаю над этим.
Скоро выпущу статью с реальными примерами использования xUnit |
|||||||||||||
268
новичекВ1С
11.02.15
✎
14:36
|
(267) Скоро это когда, примерно хотя бы. И где ловить анонс новости?
|
|||||||||||||
269
artbear
11.02.15
✎
15:31
|
(268) Инфой о новых релизах xUnitFor1C обычно я делюсь в Гугл+.
Статью выложу на одном или нескольких ресурсах (http://www.silverbulleters.org, Инфостарт, Habrahabr) |
|||||||||||||
270
gae
11.02.15
✎
16:39
|
(259) Если ведешь разработку своей конфигурации и если есть ресурсы - то да, надо пробовать. А при обычной работе 1С-ников - вряд ли.
|
|||||||||||||
271
gae
11.02.15
✎
16:43
|
(260) Так автоматическое создание контрольного примера то тоже надо настроить, то есть придумать пример, указать какие объекты надо создать и как они должны быть заполнены. Это ведь еще больше времени, чем просто его вбить. Как правило вбил его в базу один раз и потом его гоняешь. Если надо - уточняешь.
|
|||||||||||||
272
Гёдза
11.02.15
✎
16:48
|
(271) Ты в любом случае это делаешь когда первый раз разрабатываешь.
Или ты вслепую пишешь код без данных? |
|||||||||||||
273
artbear
11.02.15
✎
17:59
|
(271) смотри (265) и http://goo.gl/Sn9eYO
|
|||||||||||||
274
gae
11.02.15
✎
20:18
|
(272) В любом случае
|
|||||||||||||
275
gae
11.02.15
✎
20:33
|
(273) Если вкратце, это что-то переброски объектов между базами?
|
|||||||||||||
276
ADirks
12.02.15
✎
08:40
|
Всё не читал. Но, вижу что тут мало кто понимает, что такое функциональное тестирование, и для чего.
Попробую чисто на пальцах, конкретный пример тестов от индексированной таблицы, может станет понятнее Процедура тестСоздатьКолонку() Экспорт ТЗ = ТЗ(); Сам().ПроверитьРавенство(ТЗ.НоваяКолонка("К1"), 1); Сам().ПроверитьРавенство(ТЗ.НоваяКолонка("К2"), 2); КонецПроцедуры Процедура тестСоздатьКолонку_Ошибка() Экспорт ТЗ = ТЗ(); Сам().ПроверитьРавенство(ТЗ.НоваяКолонка("К1"), 1); Сам().ПроверитьРавенство(ТЗ.НоваяКолонка("К2"), 2); Сам().ПроверитьИсключение(Сам(), "НовКол", Сз(ТЗ, "К1")); Сам().ПроверитьИсключение(Сам(), "НовКол", ПолучитьПустоеЗначение()); КонецПроцедуры Процедура тестСортировкаПоУбыванию() Экспорт Сам = Сам(); ТЗ = Выборка_ЗаполнитьТЗ(); ТЗ.Сортировать("-к1"); Сам.ПроверитьРавенство(ТЗ.ВыбратьСтроки(), 1); Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(), 1); Сам.ПроверитьРавенство(ТЗ.к1, 15); Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 2); Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(), 1); Сам.ПроверитьРавенство(ТЗ.к1, 10); Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 4); Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(), 1); Сам.ПроверитьРавенство(ТЗ.к1, 5); Сам.ПроверитьРавенство(ТЗ.к2, 1); Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1); Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(), 1); Сам.ПроверитьРавенство(ТЗ.к1, 5); Сам.ПроверитьРавенство(ТЗ.к2, 2); Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 3); Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(), 1); Сам.ПроверитьРавенство(ТЗ.к1, 1); Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 5); Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(), 0); КонецПроцедуры |
|||||||||||||
277
ADirks
12.02.15
✎
08:51
|
Т.е. видим, что никакого волшебства, всё банально. Но когда такие тесты написаны на все мыслимые ситуации, это сильно облегчает жизнь. И что характерно, когда тесты пишутся _до_ функционала, то это ещё и облегчает кодирование - ибо сразу видно, работает или нет.
|
|||||||||||||
278
artbear
12.02.15
✎
17:37
|
(272) В целом, да, но "Переброска объектов между базами" совсем уж кратко :)
ИМХО простой, быстрый, удобный интерфейс создания тестовых данных именно для разработчика. У нас народ даже начал этот механизм начал юзать для создания новых данных при обновлении ИБ :) |
|||||||||||||
279
artbear
12.02.15
✎
17:41
|
(277) Алексей, привет!
Дополню Алексея. На все мыслимые ситуации сразу писать не нужно. Потом, со временем, тесты будут дополняться и количество неучтенных сценариев будет уменьшаться. Когда-то и тестов для 1С++ было 10 :) а для xUnitFor1C 1 :) а сейчас у 1С++ за 1000 тестов (правда, с 2006 года их количество почти не менялось) а у xUnitFor1C 300 тестов. Правда, выполняются они в разных платформах (5 - 8.2.13, 8.2.17, 8.2.19, 8.3.4, 8.3.5) и режимах (3 - обычное приложение, тонкий и толстый клиент управляемого приложения. так что можно смело умножать на 5*3 и итоговое число тестов 300 * 15 = 1500 тестов :) |
|||||||||||||
280
artbear
12.02.15
✎
17:42
|
(279) Упс, с арифметикой всегда было плохо, а с математикой хорошо :)
всего 4500 прогоняемых тестов :) |
|||||||||||||
281
Злопчинский
12.02.15
✎
18:08
|
(276) как понять, какой тест является обязательный, а какой - избыточным (лишним), то есть входит в подмножество другого теста?
. вот, например, Даты в таблице значений пробовал.. тупо не задумываяфсь накидал алгоритм реализующий задачу и начал подсовывать тесты (там же, топик 11). Полезли ошибки, начал модифицировать алгоритм, чтобы исключить ошибку, ну и крутил так пока приходилы мысли КАКОЙ ТЕСТ ЕЩЕ БЫ ПОДСУНУТЬ. Когда мысли насчет какой тест подсунуть иссякли, все тесты выдавали результат правильный - на этом остановился). сравнение тестов с правильным результатом проводил "интерактивно" - то есть визуальным осмотром (чтобы было быстрее, иначе пришлось бы для каждого написанного теста решать задачу вычисления правильного результата -а это дольше чем просто увидеть что результат неправильный). ну и что в итоге - даже в таком варианте написание простенького алгоритма с тестами (я вообще правильно подошел?) - дало какое-то время. оценить принесло это профит или нет - возможности нет, боя не знаю сколько я писал бы влгоритм тщательным продумыванием без тестов. Где правда, брат? что не так? или так? |
|||||||||||||
282
Злопчинский
12.02.15
✎
18:11
|
(277) в (276) нихрена не понял...
|
|||||||||||||
283
artbear
12.02.15
✎
18:14
|
(281) Без обид, но это эпичный мем :)
"пришлось бы для каждого написанного теста решать задачу вычисления правильного результата -а это дольше чем просто увидеть что результат неправильный)." :) т.е. ты знаешь, какой результат правильный, но не можешь это сформулировать :) На самом деле, это типовая проблема! пока мы не сможем сформулировать критерии приемки, завершения работы, сложно передать работу другому человеку (заказчику, тестеру, соседу-разработчику), так и автоматизировать тестирование. Нужно в первую очередь как раз получать критерии приемки/завершения с некоей формализацией. |
|||||||||||||
284
Goggy
12.02.15
✎
18:16
|
А я сохраняю традицию фирмы 1С...
Пусть пользователи тестируют |
|||||||||||||
285
Garykom
гуру
12.02.15
✎
18:18
|
(283) без обид... но тогда будет сплошной индусский код
т.е. наваяли...оно тесты не проходит...нафига переписывать когда можно под прохождение тестов патчу сделать заодно и больше заплатят т.к. кода будет БОЛЬШЕ! |
|||||||||||||
286
artbear
12.02.15
✎
18:20
|
(281) Цитата: "как понять, какой тест является обязательный, а какой - избыточным (лишним), то есть входит в подмножество другого теста? "
сначала находишь вообще сценарии выполнения вообще (например, выписать их куда-нибудь), далее выполняешь экспертную оценку (сам, заказчик, другие разработчики и т.п.) о том, какие сценарии важны/критичны, а какие можно не проверять. Опять же методом экспертной оценки принимаешь решение, какие оставить, какие убрать. т.е. остается список обязательных и важных сценариев, которые и нужно протестировать. Тестишь как вручную, так и автоматически. здесь уже сам решаешь. |
|||||||||||||
287
Гёдза
12.02.15
✎
18:24
|
Как правильно реализовывать цепочки тестов.
Пример: Вводим пту > вводим доп расходы > вводим РТУ - прверяем партии. Каждый тест должне проверить интерактивную работу документа + сравнить движения Что лучше 1 вариант: каждый тест создает свой документ. все тесты запускаются строго полсдовательно. + удаление данных. либо перед тетами либо после 2 вариант: каждый тест загружает все необходимые данные и тестирует себя. последовательность не важна. удалять данные можно сразу полсе выполнения теста |
|||||||||||||
288
artbear
12.02.15
✎
19:06
|
(287) Это вопрос или ответ?
|
|||||||||||||
289
artbear
12.02.15
✎
19:08
|
(285) Не совсем понял.
Какую патчу? что-то я не замечал индусского кода у тех, кто тесты пишет :( |
|||||||||||||
290
Злопчинский
12.02.15
✎
19:44
|
(283) блин, ну так это и есть основной вопрос во что упирается написание тестов - то есть по сути это формализация приемки задания. А если эту формализацию заказчик сам сформулировать может только очень округло - то все это тестирование (то есть приемку работы) - провожу я вместо заказчика. а мну-то за эту работу никто не платит... ;-)
. как раз пару раз при попытках разместить на фрилансах мелкие задания которые влом самому делать было так ипроисходило - прог: А вот готово! а я ему: идите нафиг, ибо вот так получается криво! и по новому кругу - меньше 5-6 итераций не получалось. дальше я уже уставал... и расходились с той или иной степенью удовлетворенности друг другом. |
|||||||||||||
291
Злопчинский
12.02.15
✎
19:46
|
(286) ага, то есть опять сплошное искусство... вместо простой понятной и отчуждаемой технологии/инструментария...
|
|||||||||||||
292
Злопчинский
12.02.15
✎
19:47
|
(289) а нафига в (276) процедура тестСоздатьКолонку() - которая нигде не вызывается?
|
|||||||||||||
293
artbear
12.02.15
✎
20:32
|
(289) Это и есть тестовый метод, который вызывается извне фреймворком тестирования.
для тестов 1С++ было важно, чтобы имя теста начиналось на тест, метод был экспортным и без параметров. |
|||||||||||||
294
artbear
12.02.15
✎
20:35
|
(290) Вот именно, если бы ты ему дал более точные критерии, было бы меньше итераций :(
но помимо тестирования лучше еще и ревью кода делать, и кросс-тестирование и т.п. (291) любое занятие можно превратить в искусство. Минус любого тестирования - тестирование никогда не найдет все 100% ошибок. На самом деле все просто, но ошибки можно и пропустить по разным причинам. |
|||||||||||||
295
Garykom
гуру
12.02.15
✎
20:39
|
(289) эээ? когда это тесты писали те кто пишет код? они пишут процедуры/точки входа для запуска тестов в своем коде
а вот кто пишет тесты (тестовые данные) и запускает их согласен не индусы дык написан код, отдан на тестирование (да сами запустили) не проходит )) дык мы же ответу знаем, что мешает подправить под входные данные чтобы давал нужные выходные )) |
|||||||||||||
296
Злопчинский
12.02.15
✎
21:18
|
(294) стоимость такого "программиста 1С" по моему мнению стремится к очень низкой величине, в противовес ожиданиям этого самого "программиста 1С"
. повбывав бы.. . (ну и меня наверное тоже повбывали бы) |
|||||||||||||
297
Злопчинский
12.02.15
✎
21:23
|
(295) это запросто ;-)
еще когда служил, колбасится у нас народ, сдает/готовит курсовую (по второму образованию, что-то там на фиников/итп). Приходят, Сергей, глянь, ты ж 1Сник, что-то у нас все правильно, но при этом "не сходится..."... ну я значит с высоты так грю с протяжной ленцой поиивая виски и покуривая сигару ;-) - давайте, мол, глянем вас болезных... ;-) минут 5 заняло.. там они эти курсовые клонируют друг у друга, склонировали у какой-то девки, все в экселе куча таблиц листов, в итоге в столбике одном итог ну никак не совпадает с суммой по столбику... а фигли - стоит ручками в ИТОГЕ нужная цифирь и все... ;-) Отдал... Поиздевался конечно малость - как без этого ;-) |
|||||||||||||
298
artbear
14.02.15
✎
16:28
|
(295) >>когда это тесты писали те кто пишет код?
Очень и очень часто. когда нет тестеров, когда работают через ТДД, когда работают в хороших командах, когда являются хорошими разработчиками :) и т.п. А тестеры бывают очень редко. А после кризиса будет еще меньше. |
|||||||||||||
299
artbear
14.02.15
✎
17:16
|
(295) В командах из нескольких разработчиков вообще крайне сложно работать без договоренностей, формализованных каким-то образом требований, тестов (ручных и автоматических).
|
|||||||||||||
300
Garykom
гуру
14.02.15
✎
17:29
|
(299) уточнение... в больших командах разработчиков "разного" уровня "продвинутости"
еще тесты практически бесполезны для гуи, а >50% на 1С это интерфейс для пользователей |
|||||||||||||
301
Pr-Mex
14.02.15
✎
18:54
|
(300) уровень продвинутости - неважен.
У меня в команде 5 разработчиков. Не реально держать в голове все контексты, все ньюансы кто/что делал. Договариваться приходится постоянно. >"еще тесты практически бесполезны для гуи" пиши UI тесты, если UI на проекте очень важен. Для этого могут понадобиться специфичные инструменты, типа Sikuli IDE. Но ничего нерешаемого тут нет. |
|||||||||||||
302
artbear
14.02.15
✎
19:45
|
(300) Тесты ГУИ писать лучше пореже, слишком это неблагодарное и сложное дело.
Лучше всю бизнес-логику выносить из ГУИ, чтобы слой бизнес-логики был изолирован от формы. и тестами покрывать именно бизнес-логику, а не код формы или еще ГУИ. |
|||||||||||||
303
Злопчинский
14.02.15
✎
20:51
|
(301) ух ты! а вкратце - какова идеология-подходы по тестирования гуи?
|
|||||||||||||
304
Злопчинский
14.02.15
✎
20:54
|
(302) это хорошо если ты гуем подготовил чтотот и отдал в бизнеслогику
а если собственно логика зависит от того что жмакнул пользователь например тупо на каждый жмак на сканере-тсд - идет проверка чего-то в базе и в ответ оппа - так и так есть возможность пойти сюда и туда |
|||||||||||||
305
artbear
14.02.15
✎
21:44
|
(304) вот и выдели бизнес-метод "Жмак на сканере ТСД" с набором параметров.
Твой Гуй вызывает только этот метод с передачей параметров. в Гуе минимальная логика, вся логика в бизнес-методе. И тесты нужно делать именно на бизнес-метод. Еще такая схема называется как доменная модель :) |
|||||||||||||
306
artbear
14.02.15
✎
21:49
|
(303) идеологий много, но лучшая - это не тестить Гуй :)
Тестирование ГУИ относят к верхнему уровню (Икроу :) по пирамиде Маслоу), как и приемочные. Но часто путают приемочные и Гуи-тесты Можно получить пользу от этих тестов, но очень сложно найти бывает найти ошибку, если эти тесты падают, т.к. причин ошибки может быть масса. ГУИ-тесты очень медленные (тот же Селениум), поэтому они запускаются довольно редко. И пользы разработчику приносят мало. Т.к. по упавшему тесту часто приходится долго разбираться, где же ошибка :( |
|||||||||||||
307
Злопчинский
15.02.15
✎
01:09
|
(305) такая модель построения будет содержать состоять из дофигища связей гуя с кучей кусочных бизнеспроцессов
Меой мелкий опыт говорит что большинство проблем возникает на стыках Здесь же таких стыков на уровне интерфейс-кусочек бизнеслогики просто офигеть Както так я себе представляю Давайте посмотрим на тонкого клиента Это приерно оно и есть Получили чтото от гуевогофейса и переправили на серверв бизнеслогику Все это ворочается не сильно быстро Както так |
|||||||||||||
308
artbear
15.02.15
✎
16:12
|
(307) Так это и есть нормальный путь - выделяем куски от бизнес-процесса (классы, модули, объекты, сущности) и их автоматизируем.
А ты хочешь все в одной БА-А-АЛЬШОЙ процедуре с именем "Бог" держать :) ? |
|||||||||||||
309
Asmody
15.02.15
✎
17:28
|
(308) так ты уйдешь на другую сторону грабель: реализовывать каждую сущность отдельным микросервисом. Не сказал бы, что это путь в светлое завтра
|
|||||||||||||
310
artbear
15.02.15
✎
18:51
|
(309) Может быть, уйду, а может быть, и нет.
Все зависит от задачи, от опыта, от проектирования и т.п. |
|||||||||||||
311
Мебиус
15.02.15
✎
20:03
|
(310)
То есть,нужно еще на этапе проектирования закладывать оптимальную для автоматизированного тестирования архитектуру? Благое устремление, но как быть с текущей реальностью? |
|||||||||||||
312
Мебиус
15.02.15
✎
20:18
|
(308)
Много разных слов. Очень интересно, тема действительно крайне актуальная, но никакой конкретики. Можешь на простом примере в любой типовой "на пальцах" объяснить как работает технология. |
|||||||||||||
313
Pr-Mex
15.02.15
✎
22:25
|
(303) Возьмём крайний случай.
Представь, что пишешь какой-нить Angry Birds. И тебе важно, что именно вот в этот момент игры на экране появилась именно эта надпись. Или наоборот. На экране появилась реклама, но она не должна была заслонить основные элементы управления. Вот тут нас выручают UI тесты. Мы в нужный момент времени ищем на экране нужный элемент. Само собой прогоняем этот тест под разными платформами (версиями ОС), разными разрешениями и т.д. Чтобы искать что-то на экране, используют специфичные инструменты. Мне нравиться Sikuli IDE, это по сути скриптовый движок, язык - питон. Есть и другие движки. Что же касается 1С - то это чаще всего нафиг не надо. Заказчику важна бизнес логика, а не координаты кнопки на экране. |
|||||||||||||
314
artbear
15.02.15
✎
22:41
|
(312) непонятно, что именно нужно объяснить.
Жду уточнения. |
|||||||||||||
315
Мебиус
15.02.15
✎
23:02
|
(314)
Как технология работает на практике Живой пример теста. Желательно понятного всем присутствующим и не оторванным от жизни. |
|||||||||||||
316
Asmody
15.02.15
✎
23:55
|
(315) это бесполезно. Я уже этих апологетов неоднократно спрашивал: как протестировать СКД? Ноль конкретики. А "дважды-два" тестировать бессмысленно.
|
|||||||||||||
317
Asmody
15.02.15
✎
23:56
|
И на вопрос "надо ли тестировать тесты?" я тоже не получил ответа
|
|||||||||||||
318
artbear
16.02.15
✎
00:30
|
(317) "Про бесполезно" ты зря написал.
Тесты практически не нужно тестировать, т.к. 1. в них нет логики, тесты должны быть линейны. 2. сначала лучше писать падающий тест для гарантии того, что он написано верно, а только потом функционал под него. |
|||||||||||||
319
artbear
16.02.15
✎
00:30
|
(316) что-то я твой вопрос по СКД не видел.
Уточни, что именно ты подразумеваешь под "как протестировать СКД" ? |
|||||||||||||
320
artbear
16.02.15
✎
00:32
|
(315) тут уже было много слов и бросаний в разные стороны.
Так что твой вопрос не очень понятен. какую технологию тебе нужно пояснить? ТДД или как вообще тестировать или как ГУИ отделить от бизнес-логики или еще что? |
|||||||||||||
321
artbear
16.02.15
✎
00:38
|
(319) Пока ты не ответил, попробую протелепатировать :)
Вот тебе готовый тест проверки отчета на СКД. В тесте сначала создаются тестовые данные в базе, затем выполняется отчет на СКД, получается сводная таблица. Эта таблица сверяется с эталоном. http://goo.gl/hMiHHB - можешь скачать сам файл теста (это обработка http://goo.gl/6z4H6A - текст самого теста (этой обработки) http://goo.gl/jGOFI7 - скриншот эталонного результата работы СКД Что скажешь? помогло? |
|||||||||||||
322
artbear
16.02.15
✎
01:01
|
+(321) В Вики xUnitFor1C http://goo.gl/Hhdh4T я документировал этот же пример.
Там изучать поудобнее :) |
|||||||||||||
323
Злопчинский
16.02.15
✎
01:41
|
(322) все равно не понимаю
Таблица отчета на скд сверяется с эталоном Откуда берется/взять эталон? |
|||||||||||||
324
Asmody
16.02.15
✎
01:41
|
(321) вот с момента "сначала создаются тестовые данные в базе" можно подробнее.
|
|||||||||||||
325
Asmody
16.02.15
✎
01:43
|
(318) т.е., вы утверждаете, что тесты тестировать не надо, так как вы их пишете без ошибок. Так может просто начать писать без ошибок код?
|
|||||||||||||
326
Мебиус
16.02.15
✎
11:52
|
(316)
"Я уже этих апологетов неоднократно спрашивал: как протестировать СКД" А ты знаешь толк в извращениях). Протестировать отчет на СКД учитывая все возможные варианты, поля и отборы крайне нетривиальная задача. |
|||||||||||||
327
Asmody
16.02.15
✎
12:47
|
(326) а зачем мне тестировать 2+2?
Пусть научат добрые люди, как в рамках проповедуемой ими TDD нарисовать простенький отчет на СКД. |
|||||||||||||
328
Asmody
16.02.15
✎
12:55
|
Если мы говорим про тестирование как про сравнение результата некоторой программы (функции) на известных исходных данных с известным результатом, то это возможно только в случае, если функция не зависит от свободных переменных, либо мы можем привести её к такому виду. Для любой функции, которая берет данные из внешнего источника (файла, БД, от внешнего сервиса и т.п.), необходимо создавать "заглушки", известные как "моки". Так вот создание мока для той же СКД превращается в 1С в нетривиальную задачу, по сложности сопоставимую (если не превосходящую) с основной задачей.
|
|||||||||||||
329
artbear
16.02.15
✎
12:56
|
(323) Эталон - это результат работы твоего функционала на определенных входных данных.
Например, для функционала "Сложить 2 и 2" эталоном будет 4. А результат берется из описания работы твоего функционала и понимания критериев завершения. |
|||||||||||||
330
Asmody
16.02.15
✎
12:58
|
(329) Функционал — это отображение некоторого множества в число. Я не понимаю, о чем ты говоришь.
|
|||||||||||||
331
artbear
16.02.15
✎
12:59
|
(324) >>сначала создаются тестовые данные в базе
ты же знаешь, какие исходные данные у тебя будет юзать твой отчет. вот каким-то образом эти данные и создаешь. Способов масса: - вручную вводишь спец.данные - юзаешь уже готовые данные из какой-то заполненной ИБ - используешь создание данных в своей базе путем копирования из другой ИБ xUnitFor1C помогает тебе сильно упростить этап получения готового макета данных из реальных данных нужной ИБ. Полученный макет данных ты можешь юзать в любой ИБ (например, пустой) и использовать для тестирования своего функционала. Тестирование в этом случае не будет зависеть от ИБ, а только от специальных, заранее заданных данных. |
|||||||||||||
332
artbear
16.02.15
✎
13:01
|
(330) Вот теперь я тебя перестал понимать :(
какое множество? у тебя есть функционал, который умеет складывать 2 числа. Исходные данные: Значение1=2 и Значение2=2 Функционал: Рез = Сложить(Значение1, Значение2) Результат: в переменной Рез. Эталоном для Значение1=2 и Значение2=2 служит число 4. вот тебе и тест, и эталон. |
|||||||||||||
333
artbear
16.02.15
✎
13:02
|
(328) В целом про заглушки/моки ты прав, но причем здесь 1С и СКД ?
|
|||||||||||||
334
Мебиус
16.02.15
✎
13:10
|
(333)
Вероятно "заглушки" это и есть тестовые данные. |
|||||||||||||
335
ГеннадийУО
16.02.15
✎
13:15
|
(331) Вот например имеем отчет на СКД, в нем используется 20 временных таблиц. Т.е. я должен создать эталонные данные на все 20 таблиц, и тестировать "снизу вверх", постепенно заменяя эталонные ВТ выборками из БД?
|
|||||||||||||
336
Asmody
16.02.15
✎
13:15
|
(332) Функционал — это математический термин. Когда речь идет о реализации некоторого набора операций в программе, принято говорить "функциональность".
|
|||||||||||||
337
Asmody
16.02.15
✎
13:17
|
(335) Именно. Точнее, ты должен создать N наборов контрольных данных, где N — количество тестовых случаев.
|
|||||||||||||
338
Asmody
16.02.15
✎
13:18
|
(337)+ причем, согласно TDD, ты должен их создать __до того__, как напишешь сам отчет.
|
|||||||||||||
339
Гёдза
16.02.15
✎
13:19
|
(332) такие примеры слишком оторваны от жизни
|
|||||||||||||
340
Гёдза
16.02.15
✎
13:21
|
(339) А процедуры вообще так просто не протестируешь
|
|||||||||||||
341
ГеннадийУО
16.02.15
✎
13:22
|
(338) Ага, и при каждом уточнении ТЗ пересоздавать их заново...
|
|||||||||||||
342
artbear
16.02.15
✎
13:27
|
(332) На простых примерах сторонних вопросов мало, видна только суть схемы/методики. Например. в показанном примере только один тестовый сценарий.
А при работе с более сложными примерами у народа возникает куча сопутствующих вопросов, начинают появляться разные тестовые сценарии, отклонение от темы. Люди даже слишком озадачиваются количеством возможных тестовых сценариев. А на самом деле все просто - не нужно тестировать все сценарии, нужно выделить важные/критичные и только их тестировать. |
|||||||||||||
343
Гёдза
16.02.15
✎
13:30
|
(341) Если изменение тз влияет на 20 случаев - то нужно пересоздавать все 20 тестов.
Ведь при разработкетоже придется прогонять все 20 тестов заново |
|||||||||||||
344
Гёдза
16.02.15
✎
13:31
|
(342) как раз на таких пример не видно ничего. Поэтому и идет непонимание. "Зачем проверять 2+2?"
|
|||||||||||||
345
artbear
16.02.15
✎
13:31
|
(335) >>СКД и 20 временных таблиц.
Таблицы созданы по данными ИБ или подставляются откуда-то извне? ИМХО неважно, сколько таблиц юзается. важно, какие данные юзаются. Вот в тесте желательно эти данные и создать. Есть жесткая методика/требование - работать в чистой базе, и все данные создавать с нуля. Это довольно сложно, но максимально эффективно. xUnitFor1C сильно помогает решить эту задачу. Есть методика не столько жесткая - работаем в какой-то заполненной базе. данные создаем редко, и тесты прогоняем на этой базе. Здесь низкий порог входа. Я сам им периодически пользуюсь. Но при использовании разными разработчикам возникают проблемы - тесты могут тупо не работать у соседа, т.к. у него своя ИБ и данные различаются. И начинаются проблемы :( |
|||||||||||||
346
artbear
16.02.15
✎
13:37
|
(341) (343) Если исходные требования меняются, то тесты также, возможно, придется менять. Но наверняка, не все 100% тестов, а только часть.
И это нормально. Как раз тесты и помогают быстро переключаться на новые требования. |
|||||||||||||
347
spock
16.02.15
✎
13:37
|
(337) Не понимая в вопросе, о котором споришь, решил блеснуть собственными знаниями? Так ты бы сразу ветку в бан с формулировкой "Ничего не понимаю, значит этого не существует".
|
|||||||||||||
348
Asmody
16.02.15
✎
13:38
|
(347) ты хочешь в бан? это легко устроить
|
|||||||||||||
349
spock
16.02.15
✎
13:42
|
+347 ошибся постом, к (336) обращено.
|
|||||||||||||
350
Asmody
16.02.15
✎
13:47
|
Апологеты тестирования, а особенно новомодных xDD, часто забывают или сознательно не договаривают, что написание тестов экспоненциально зависит от тестируемого.
|
|||||||||||||
351
Мебиус
16.02.15
✎
13:56
|
(350)
Тем не менее практическая польза все таки есть. Взять хотя бы "дымовое" тестирование на открытие форм или перепроведение всех документов под пользователями. Особенно помогает при доработке прав и ролей. Не все естественно - но хоть как то страхует от "тупых" ошибок. |
|||||||||||||
352
ГеннадийУО
16.02.15
✎
14:10
|
(345) Но тогда получается я смогу протестировать только конечный результат отчета, а если тест упадет - это никак не поможет мне узнать в какой именно из 20 выборок у меня ошибка...
|
|||||||||||||
353
Asmody
16.02.15
✎
14:14
|
(351) Да я против что ли?
Но есть нюанс© Вот статья уважаемого artbear на ИС, в которой поётся всё та же мантра "TDD — это благо, с TDD нам всем будет хорошо". Начинаешь продираться, искать смысл — ноль конкретики. |
|||||||||||||
354
Asmody
16.02.15
✎
14:15
|
Пока получается, что TDD — это Trash Driven Development©
(применительно к 1С) |
|||||||||||||
355
ГеннадийУО
16.02.15
✎
14:19
|
(354) Ну это слишком радикально. Просто данная технология имеет предельно узкую нишу применения при разработке в (на) 1С. И декларирование ее "серебряной пулей" несколько самонадеянно...
|
|||||||||||||
356
ИС-2
naïve
16.02.15
✎
14:29
|
(345) тестирование на базе созданной с нуля абсолютно неверный подход, ибо это приводит к тому, что разработка оказывается не работоспособной в реальных условиях. Проверено на практике
|
|||||||||||||
357
Asmody
16.02.15
✎
14:30
|
BDD — Bullshit Driven Development©
|
|||||||||||||
358
oleg_km
16.02.15
✎
14:33
|
(353) Грубо для себя я понимаю так:
Программа (кусок кода) не пишется в один присест. Т.е. я пишу заготовку (функциональный прототип), потом его рефакторю, потом оптимизирую, потом допустим добавляю новый функционал и по новому кругу. Допустим тестирование занимает час и каждый шаг тоже час. Итого получается 1 Без тестов написал прототип - час потестировал - час порефакторил - час потестировал - час пооптимизировал - час потестировал - час Итого 6 часов Вроде как есть рутинная операция тестирование, которая в данном случае не меняется. Более того, даже при добавлении функционала как правило старые тесты тоже должны отрабатывать. Поэтому вроде как получается экономия: написал тест - час написал прототип - час поправил тест - час порефакторил - час пооптимизировал - час Итого 4 часа Я правильно понял смысл тестирования? |
|||||||||||||
359
oleg_km
16.02.15
✎
14:34
|
Ой, обсчитался - 5 часов. Но чем больше циклов модификации, тем больше выигрыш.
|
|||||||||||||
360
Asmody
16.02.15
✎
14:38
|
(358) Нет, в TDD ты сначала пишешь тест. Потом добиваешься, чтобы он проходил хоть как-нибудь. Потом пишешь еще один тест, добиваешься, чтобы проходило два теста. И т.п. Потом рефакторишь, попутно смотришь, чтобы тесты не сломались.
Потом приходит изменение требований. Ты изменяешь тесты в соответствии с ним. А потом добиваешься, чтобы тесты не ломались. |
|||||||||||||
361
Мебиус
16.02.15
✎
14:39
|
(358)
Неверно Тест тоже нужно менять после рефакторинга. |
|||||||||||||
362
Asmody
16.02.15
✎
14:41
|
(360)+ при этом не забывая, что тестировать надо не только успехи, но и фейлы.
|
|||||||||||||
363
ADirks
16.02.15
✎
14:55
|
Про тестирование СКД. А в чём собственно проблема?
Нагенерировать данных? - да, это не самое приятное занятие, но при наличии некоторого инструментария не так сложно, как кажется на первый взгляд. Проверить результат работы отчёта? - я не восьмёрошник, с ходу не могу сказать, но вроде же можно получить табличку-результат, и посмотреть, а чего там написано в ячейках, каким шрифтом, и какого цвета. |
|||||||||||||
364
Гёдза
16.02.15
✎
14:56
|
(362) Для первого шага достаточно только успехи тестировать
|
|||||||||||||
365
Мебиус
16.02.15
✎
15:11
|
(363)
) |
|||||||||||||
366
artbear
16.02.15
✎
18:01
|
(360) 1. главное, помнить, что догмы это плохо.
поэтому не всегда можно/нужно работать в режиме ТДД. Хотя ТДД очень удобно, позитивно и повышает надежность и т.п. :) 2. Цитата: "приходит изменение требований". Как правило, когда тестов много, изменение требований не слишком влияет на тесты. |
|||||||||||||
367
artbear
16.02.15
✎
18:04
|
(353) Цитата "Начинаешь продираться, искать смысл — ноль конкретики."
я тебе уже много конкретики дал. по СКД ты мне так и не ответил. |
|||||||||||||
368
Asmody
16.02.15
✎
18:09
|
(367) Так я свои
|
|||||||||||||
369
Asmody
16.02.15
✎
18:10
|
пусть будут придирки, а не претензии
|
|||||||||||||
370
Злопчинский
16.02.15
✎
18:12
|
Мутотень какаято
Пока что делаем так Пишем код Пишем тщательно сразу используя навыки как умеем Потом тестируем Как минимум на граничных значениях и всяких аналогичных нежданчиках типа пустых значений несоответствие типов и прочее Сидим смотрим в код и пытаемся выродить тесты которые поломают систему Както так я обычно действую Ну и зачастую большинство не тестирую или тестирую очень слабо Сложные вещи тестируются в эксплуатации Да бывают крупные бяки изза этого Но никто же не дает бпбла на наем тестировщика и прочее нужное Потому что зачастую к ит отношение такое |
|||||||||||||
371
Asmody
16.02.15
✎
18:19
|
давайте отойдем от СКД и рассмотрим более простую задачу. Элементарную, я бы сказал.
Пусть у меня есть некоторый код, который для некоторых значений текстовых параметров получает строку текста с десятичным числом от сервиса в Интернете. Какие бы тесты вы предложили в моём случае? |
|||||||||||||
372
Гёдза
16.02.15
✎
18:22
|
тестирование интеграций с другими системами - это отдельная песня
|
|||||||||||||
373
Гёдза
16.02.15
✎
18:22
|
как минимум можно проверить что она запускается и не падает
|
|||||||||||||
374
Asmody
16.02.15
✎
18:33
|
(370) для "нежданчиков типа пустых значений" заведите вот такое:
Функция _Поумолчанию(НужноеЗначение, ДругоеЗначение) Экспорт Возврат ?(ЗначениеЗаполнено(НужноеЗначение),НужноеЗначение,ДругоеЗначение); КонецФункции |
|||||||||||||
375
ADirks
16.02.15
✎
18:47
|
(371) например
Функция тестСервисДоступен() Возврат МодульСервис.Доступен(); КонецФункции Функция тестМЖ() Если НЕ МодульСервис.Доступен() Тогда Ошибка = "сервис недоступен"; Возврат Ложь; КонецЕсли; Возврат ПроверитьРавенство(МодульСервис.Запросить("Вася", "Галя"), "МЖ"); КонецФункции Функция тестЖМ() Если НЕ МодульСервис.Доступен() Тогда Ошибка = "сервис недоступен"; Возврат Ложь; КонецЕсли; Возврат ПроверитьРавенство(МодульСервис.Запросить("Дуня", "Ваня"), "ЖМ"); КонецФункции Функция тестММ() Если НЕ МодульСервис.Доступен() Тогда Ошибка = "сервис недоступен"; Возврат Ложь; КонецЕсли; Возврат ПроверитьРавенство(МодульСервис.Запросить("Петя", "Серёжа"), "Недопустимые параметры"); КонецФункции |
|||||||||||||
376
Asmody
16.02.15
✎
18:52
|
(375) сервис доступен меня волнует мало, входные параметры проверяются в коде с выбросом исключения, поскольку не зависят от пользовательских данных, а вот с эталоном мне не сравнить, поскольку ответ сервиса может быть разным.
|
|||||||||||||
377
Asmody
16.02.15
✎
18:58
|
Кстати, вариант ответа на случай "сервис недоступен" в коде предусмотрен, его тоже неплохо протестировать
|
|||||||||||||
378
ADirks
16.02.15
✎
19:00
|
(376) как это разным? для одних и тех же входных параметров сегодня одно, а завтра другое?
для теста нужны 2 вещи: набор входных параметров - констант набор выходных параметров - констант |
|||||||||||||
379
Мебиус
16.02.15
✎
19:02
|
(378)
так разным, как курсы валют например |
|||||||||||||
380
ADirks
16.02.15
✎
19:05
|
Функция тестПолучитьКурс()
Возврат ПроверитьРавенство(ЭтоЧисло(МодульСервис.Курс()), Истина); КонецФункции |
|||||||||||||
381
shuhard
16.02.15
✎
19:16
|
(370) отчего мутотень
представь себе крупную учетную систему,ту же УПП в которую ты врезал кусок редко используемого общего модуля, вызываемый из 15 точек с полусотней параметров стэка ситуация для УПП в части партий, НДС или взаиморасчетов типовая и тестом является контрольный пример длинной в сотню операций , перекрывающий весь функционал УС в таком раскладе кроме тестирования нет иных приемов |
|||||||||||||
382
Asmody
16.02.15
✎
19:19
|
(378) Это текущий курс с ММВБ. Он может меняться несколько раз в минуту
|
|||||||||||||
383
ADirks
16.02.15
✎
19:20
|
(382) А что в этом случае тестировать то надо?
|
|||||||||||||
384
Reaper_1c
16.02.15
✎
19:23
|
(382) Если ответ сервиса идет с состоянием "2хх", а содержание преобразуется в целевые типы данных 1С корректно - считаем тест пройденным.
|
|||||||||||||
385
shuhard
16.02.15
✎
19:24
|
(371) полный перебор входных параметров
включая несуществующие коды валют, ошибочные форматы даты, выборку за 3015 год, нарушение формата любого из параметров стэка |
|||||||||||||
386
artbear
16.02.15
✎
19:36
|
(371) Народ, опять смешиваете все в одну кучу.
Есть наборы тестовых сценариев. Этих сценариев может быть куча, какие угодно, хоть все множество целых чисел перебирайте. И есть сценарии, которые нужно реально выполнять. Эти два множества не равны. Последнее входит в первое. Нужно выбрать только важные/критичные и их проверять. Проверять можно как вручную, так и автоматически. Автоматически проще, если тестируем не один раз. Как правило, приходится тестировать не один раз, т.к. сразу трудно написать правильный код. А раз не один раз тестируем, ручные тесты задалбывают и народ приходит к автотестам. |
|||||||||||||
387
artbear
16.02.15
✎
19:39
|
По тесту, связанному с сервисом.
Это интеграционный тест. Такие тесты достаточно сложны. Лучше делить тесты на 2 части: 1 - сам интеграционный тест, который напрямую юзает сервис. 2 - внутренние тесты, которые не юзают сам сервис, а юзают некие идеальные/эталонные данные, которые МОЖЕТ/ДОЛЖЕН предоставлять сервис. Здесь юзаются заглушки (моки/стабы) интеграционные тесты могут падать по разным причинам, независящих от нас- связи нет, сервис поломался и т.п. внутренние тесты должны проходить всегда на 100% |
|||||||||||||
388
artbear
16.02.15
✎
19:40
|
+(387) интеграционные тесты проверяют работу сервиса и работу нашего кода. если тест упадет, придется разбираться, кто виноват - наш код, сервис, или тест.
если упадут внутренние тесты - то сразу проще найти виновника, т.к. их всего двое - либо код либо тест. |
|||||||||||||
389
shuhard
16.02.15
✎
19:43
|
(387)[внутренние тесты должны проходить всегда на 100%]
100% включает в себя ошибки округления ? |
|||||||||||||
390
artbear
16.02.15
✎
19:43
|
вы поймите - тестирование не панацея, никакая методика за вас или заказчика не придумает тестовых сценариев для конкретной задачи.
это наша профессия, изучать и решать всякие сложные задачи, детализируя, формализуя и т.п. |
|||||||||||||
391
artbear
16.02.15
✎
19:44
|
(389) это опять проблема выбора тест.сценариев.
если считаешь округление важным, пиши тесты на это или вручную тестируй если нет, не пиши и не тестируй вручную :) |
|||||||||||||
392
artbear
16.02.15
✎
19:46
|
Повторюсь, что автотесты - это продолжение ручного тестирования.
Как только народ задалбывается тестировать вручную одни и те же сценарии, так и приходит к автоматизации. если вы вручную не тестируете все ситуации, так и в автотестах наверняка это не нужно. |
|||||||||||||
393
Мебиус
16.02.15
✎
19:47
|
(390)
Стесняюсь спросить тогда Ваша какая профессия? |
|||||||||||||
394
ADirks
16.02.15
✎
19:49
|
(387) Насчёт того, что тесты могут быть сложными, позволю себе не согласиться. Крайне желательно, чтобы они были как можно более примитивными, к этому надо стремиться всеми силами.
ну и вариация теста из (375), когда отсутствие сервиса не наша проблема: Функция тестМЖ() Если НЕ МодульСервис.Доступен() Тогда ЛогТестов("сервис недоступен"); Возврат Истина; //ошибка не наша, но информацию надо видеть КонецЕсли; Возврат ПроверитьРавенство(МодульСервис.Запросить("Вася", "Галя"), "МЖ"); КонецФункции |
|||||||||||||
395
shuhard
16.02.15
✎
19:51
|
(391) не о том, вопрос о границах применимости прямого тестирования и о его вариативности, ибо у любого метода есть разумные пределы
|
|||||||||||||
396
Злопчинский
16.02.15
✎
20:15
|
(386) "..Нужно выбрать только важные/критичные и их проверять."
- ну и как их выбирать? |
|||||||||||||
397
ADirks
16.02.15
✎
20:30
|
(396) Ты когда ТЗ пишешь, или в голове какие-то планы строишь - как выбираешь? Вот так и с тестами. Тут уже не раз же упоминалось, что тесты - это по сути ТЗ/хотелки, просто выраженные в такой вот форме.
Это же просто инструмент: можно пользоваться (но тогда нужно учиться), а можно и не пользоваться. |
|||||||||||||
398
Мебиус
16.02.15
✎
20:44
|
(397)
Так все таки - как протестировать отчет на СКД? Учитывая тот факт что пользователь может создать 23,5 варианта отчета и установить отбор сортировку, условное оформление и по любому полю и это все должно работать с учетом особенностей интерпретатора СКД. |
|||||||||||||
399
ADirks
16.02.15
✎
20:45
|
И ещё такой момент. Когда ты что-то пишешь, вот прям на бумажке, очень часто приходит понимание, что правильно, что неправильно, и что с этим делать. Ты при этом декларируешь некие цели, и видишь как это можно достичь.
А язык тестов - он тоже декларативен. |
|||||||||||||
400
ADirks
16.02.15
✎
20:47
|
(398) создать 23,5 вариантов входных данных, и проверить результат для каждого.
Как иначе то? |
|||||||||||||
401
Мебиус
16.02.15
✎
20:59
|
(400)
и рекурсивно прогнать все возможные варианты отбора и условного оформления, для каждого опять таки создав вариант входных данных для контроля. Итого если у нас 10 полей в каждом по 10 реквизитов 23,51010 2 350 наборов водных данных для простого отчета на СКД Как то неэффективно |
|||||||||||||
402
shuhard
16.02.15
✎
21:04
|
(401) проблема в переборе вектора входных параметров нет, вопрос в эталоне , его нельзя получить расчетным путем, а значит тестирование состоит в двойном прогоне на эталонном и тестируемом отчете, что делает тест СКД бессмысленным, раз уже есть эталонное решение
|
|||||||||||||
403
ADirks
16.02.15
✎
21:12
|
(401) 2350 тестов, даже если каждый тест в одну строчку - да многовато.
Тут врядли можно придумать какой-то универсальный механизм на все случаи жизни. Я обычно делаю тесты на всякие замысловатые случаи, которые не укладываются в банальную схему (у нас тут банальные схемы свои, не СКД, и вообще семёрка). |
|||||||||||||
404
Мебиус
16.02.15
✎
21:17
|
(403)
вот в этом и вопрос - чем проще среда разработки тем более применимо прямое тестирование. |
|||||||||||||
405
ADirks
16.02.15
✎
21:20
|
(404) вот поэтому мне восьмёрка и не нравится, а особенно СКД.
Оне же про это не думали. Совсем. |
|||||||||||||
406
Мебиус
16.02.15
✎
21:21
|
(405)
Счеты проще всего тестировать) |
|||||||||||||
407
artbear
16.02.15
✎
21:23
|
(401) А что ты сейчас делаешь, без автотестирования?
как проверяешь эти тысячи вариантов? |
|||||||||||||
408
artbear
16.02.15
✎
21:24
|
(394) Леша, я говорил как раз, что интеграционные тесты могут быть сложными.
И их нужно упрощать/разделять ответственность разными способами Например, делить на 2 части - с зависимостью от сервиса и без зависимости от сервиса. |
|||||||||||||
409
artbear
16.02.15
✎
21:25
|
+(407) Читай еще раз (386).
|
|||||||||||||
410
Мебиус
16.02.15
✎
21:30
|
(407)
Я лично ничего давно уже не делаю. |
|||||||||||||
411
Мебиус
16.02.15
✎
21:30
|
В конфигураторе
|
|||||||||||||
412
ADirks
16.02.15
✎
21:31
|
(406) Счёты тестировать вообще не надо. Тестировать можно только методы работы с ними. Но это уже не программно :)
(408) Ну я понял, ты говорил, что тестов понадобится тупо больше. Это да. |
|||||||||||||
413
Asmody
16.02.15
✎
21:44
|
(387) 1. Это не интеграционный тест. Сервис - это просто источник данных.
2. Ничего сложного в его тестировании нет, достаточно поднять локальный веб-сервер с набором статических страничек. Это на порядки проще, чем делать тестовые базы для СКД. |
|||||||||||||
414
artbear
16.02.15
✎
23:26
|
(413) 1. Почитай определение интеграционных тестов. Любой тест, в котором участвует больше одной компоненты, модуля, блока может считаться интеграционным.
А уж если сторонний сервис, тем более интеграция. 2. ну поднимешь ты веб-сервер и набор страничек. неплохое решение для интеграционного теста, фактически это мок. а что должен возвращать сервер, знаешь? если знаешь, эта информация и есть тестовые сценарии. след.вопрос - этот веб-сервер будет доступен только на твоей машине? а если разработчиков несколько? а есть уверенность, что твой веб-сервер повторяет функционал настоящего сервиса? вопросов по твоему веб-серверу очень много. Его нужно поддерживать, он должен быть доступен. Как ты его будешь при появлении новых тест.сценариев? и т.п. и т.д. 2.1 где ты увидел, что нужно делать "тестовые базы" под СКД? я лично писал, что данные нужно генерить, а не базы :) тут вопрос, что легче сделать - тест.данные или веб-сервер поднять? в зависимости от ответа можно выбирать путь тестирования. |
|||||||||||||
415
artbear
16.02.15
✎
23:28
|
Народ, повторюсь в очередной раз -
1. тест.сценарии никто не придумает за вас или заказчика. 2. Автоматизация тестирования только помогает в тестировании, она повторяет ручное тестирование, позволяя получать различные плюшки - типа увеличение производительности, упрощение разработки, быстрый поиск ошибок в коде, более точное понимание требований, критериев, и т.п. и т.д. |
|||||||||||||
416
artbear
16.02.15
✎
23:34
|
(396) Злопчинский, насколько я вижу, у тебя проблема с генерацией тест.сценариев.
Это стандартная проблема у разработчиков, пользователей. Почитай про тест-анализ. Также очень полезно узнать про классы эквивалентности. Например, видел в постах про СКД 2500 вариантов. А если подумать, можно выделить одинаковые/эквивалентные группы/классы сценариев, граничных значений. За счет выделение подобных групп можно сильно уменьшить количество тест.сценариев. Например, нам нужно протестировать поведение РН. можно проверять проведение РН по всем товарам из базы. а можно подумать и выделить несколько классов (товары, услуги, материалы) и протестить фактически проведение всего нескольких сценариев и их вариаций. Главное, не забывать выделять важные/критичные сценарии. Например, мы знаем, что материалы мы не продаем, поэтому проведение РН с материалами можно не тестить. |
|||||||||||||
417
Мебиус
16.02.15
✎
23:42
|
(416)
"поэтому проведение РН с материалами можно не тестить" Вы ребята так оторваны от реальной практики, что ах дух захватывает. Поэтому мы друг друга не понимаем. Хотя здравое зерно есть. Но оно так зарыто, что экскаватором не разгребешь. |
|||||||||||||
418
artbear
16.02.15
✎
23:48
|
(417) Я с 1С разных версий с 1998 года работаю.
Прошел разные уровни - и франч, и фикси, и фри. Разных клиентов. Задачи разного уровня. Команды от 1 человека до 7. В чем оторванность? в том, что говорю о простых примерах? или в том, что занимаюсь тестированием? что еще? Понимаешь, есть разные уровни. кто-то работает с ларьками и таких клиентов у него 20, кто-то работает над одной системой на фикси, кто-то работает в ит-конторе над кучей систем. у каждого свой уровень, свои навыки, свои проблемы. если тебе не нужно тестирование, ты или еще не дорос до этого или тебе это не нужно, потому что (подставь свои причины). |
|||||||||||||
419
artbear
16.02.15
✎
23:52
|
+(418) я лично ленивый, меня задалбывает выполнять одни и те же вещи постоянно, особенно это рутина.
поэтому я и занимаюсь разработкой, автоматизацией, в т.ч. и собственной работы. Еще забыл упомянуть - кто-то работает в сфере, где ошибки и простои бизнес-систем очень дорого стоят. и либо ты делаешь продукт стабильнее разными способами, либо прощаешься с разработкой на этой системе и уходишь куда-то в другое место. |
|||||||||||||
420
Asmody
17.02.15
✎
00:07
|
(414) в принципе, после [где ты увидел, что нужно делать "тестовые базы" под СКД? я лично писал, что данные нужно генерить, а не базы] тему про мантры тестирования СКД можно закрывать.
|
|||||||||||||
421
Asmody
17.02.15
✎
00:15
|
Остается только напомнить, что в силу архитектурных особенностей, данные, являющиеся входными для запросов и СКД, в 1С в отрыве от БД не существуют.
Самое неприятное, что иногда происходит реструктуризация. И если вы думаете, что тестирование кода, связанного с обработкой данных персистентных хранилищ, — это проблема только 1С, то вы ошибаетесь. |
|||||||||||||
422
artbear
17.02.15
✎
00:26
|
(420) Это ты к чему?
(421) да, из-за особенностей 1С тестирование и тесты юзаются по-другому. и что неприятного в реструктуризации? |
|||||||||||||
423
Asmody
17.02.15
✎
00:45
|
(422) в том, что надо не только провести реструктуризацию тестовых баз, но и наборов для тестирования.
|
|||||||||||||
424
Asmody
17.02.15
✎
00:47
|
Наборов данных, конечно.
Или вы уже научились "генерить данные" в отрыве от БД? |
|||||||||||||
425
artbear
17.02.15
✎
00:50
|
(423) Да, тесты также нужно поддерживать.
Но не всегда это бывает сложно. Например, в генераторе тестовых данных по макету и макета на базе реальных данных (из xUnitFor1C) сделано так: поля, у которых значение не отличается от значения по умолчанию (пустая ссылка, ложь, 0, "" и т.п.) не выводятся в макет. в итоге макет проще и понятнее. Да и достаточно редко добавляются реквизиты, которые обязательно должны быть заполнены. А если новые реквизиты необязательны, то и старые макеты (и их тесты) не нужно менять. |
|||||||||||||
426
artbear
17.02.15
✎
00:53
|
(424) да, тут смешно получилось, я почему-то посчитал, что тебя сложность именно потому, что нужно много тест. баз зачем-то генерить :)
На самом деле создание тестовых данных не самая простая задача. Для решения этой проблемы мной в xUnitFor1C и была добавлена генерация тест.данных из простого табличного макета и создание полноценного макета на базе реальных данных. В итоге тест.данные стало очень легко создавать. Все, кто пользуется этим механизмом, отмечают этот факт. Попробуй, может быть, понравится :) |
|||||||||||||
427
Злопчинский
28.02.15
✎
00:14
|
Пишу загрузку иксемеля
Файл иксемеля в имени имеет маркердаты Внутри также есть дата Макер в имени сделан для ускорения обработки и выборки файлов нужных из списка Вопрос Надо ли тестом предусматривать что маркер имени файла не совпадает с датой внутри файла? Почему? И где должна проводиться верификация данных на входе их использования или на выходе их формирования? |
|||||||||||||
428
Asmody
28.02.15
✎
00:23
|
(427) если обработка данных требует верификации, то надо ее делатьв обработке, а тест должен проверять верификацию: тест на корректные данные - верифкация прошла, тест на некорректны данные - верификация не прошла
|
|||||||||||||
429
Asmody
28.02.15
✎
00:26
|
Я вот тоже давеча xml мучал. Проблема была в том, что файлы исходные здоровые - мегабайты не совсем "прямого" html'я.
Тестирование "выпрямляющих" функций получается в разы сложнее этих функций. |
|||||||||||||
430
Злопчинский
28.02.15
✎
01:39
|
(429) вот загрузка иксемеля
Схемы нет Надо ли проверять наличие суммындс в строке или нет? А хз!!! |
|||||||||||||
431
Asmody
28.02.15
✎
01:46
|
(430) тестирование самого xml - дело твоей обработки, а тестирование кода, тестирующего xml, - дело тестов.
|
|||||||||||||
432
Злопчинский
28.02.15
✎
02:41
|
....а тестирование кода, тестирующего xml, - дело тестов....
Это ты сейчас действительно мощно выступил |
|||||||||||||
433
Злопчинский
28.02.15
✎
02:43
|
Да есть понимание
Что требуется интсрументарий управления тестами Автоматическим тестированием Это голый инструментарий Его освоим Остались мутными вопросы собственно самой разработки через тестирование |
|||||||||||||
434
pumbaEO
28.02.15
✎
10:24
|
(433) вот так всегда, управлять все хотят, а писать - код нет.
Я тестирую я тщательно отлаживаю свои разработки |
|||||||||||||
435
Asmody
28.02.15
✎
10:59
|
(433) разработка через тестирование - это муть и модный жупел.
Если ты написал тест до кода и пытается подогнать под него код, ты заведомо загоняешь себя в ящик. |
|||||||||||||
436
pumbaEO
28.02.15
✎
11:06
|
(435) не всегда. Когда точно знаешь, что должно получиться и какие шаги сделать, разработка через тестирование помогает.
Когда еще не знаешь, куда тебя кривая приведет, тогда TDD больше мешает, но после того, как я получил более или менее работающий результат, могу уже начинать писать тесты. Т.е. у меня уже появляется видение результата и тогда стараюсь сначала тест нарисовать, а потом уже реализацию или исправление. Хотя нет, у меня больше "наго внокодил, наго внокодил, посмотрел - будет что-то стоящее, давай теперь чуть перепишу, подправлю и вот тут уже появлется тест, а потом правильная реализация" . |
|||||||||||||
437
Torquader
28.02.15
✎
11:47
|
Какое тестирование ?
Если вместо проверки работоспособности и правильности каждой функции делать проверку только всего алгоритма в целом, то потом можно на такие подводные камни нарваться, что мама не горюй. Особенно, когда будет повторное использование функции - в ней окажется систематическая ошибка, которую не заметили из-за того, что весь алгоритм проверку прошёл. А вот после исправления ошибки в функции - он будет работать неправильно. |
|||||||||||||
438
Asmody
28.02.15
✎
14:03
|
В 1С, и в xUnit1c в частности, катастрофически не хватает простых конструкторов коллекций. Писать каждый раз Массив.Добавить() по 20 раз достает.
|
|||||||||||||
439
ДенисЧ
28.02.15
✎
14:04
|
Демона нужно учить писать шаблоны в 1с? О_о
|
|||||||||||||
440
Asmody
28.02.15
✎
14:04
|
Еще в xUnit1c нет проверки на невхождение строки И сравнения коллекций
|
|||||||||||||
441
Asmody
28.02.15
✎
14:05
|
(439) у себя я пишу _ВМассив(1,2,3,4,5,6,7,8,9,10) и получаю что нужно
|
|||||||||||||
442
Asmody
28.02.15
✎
14:09
|
Еще могу написать _В(КакойТоМассив, "фывапролдж")
или так _В(_В(_В(КакойТоМассив, "йцукен"), "фывапр"), "ячсми"); _В(КакаяТоСтруктура, "Ключ", "Значение") |
|||||||||||||
443
pumbaEO
28.02.15
✎
14:42
|
(441) тяжело pull-request сделать?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |