![]() |
![]() |
![]() |
|
Автоматическое тестирование функционала конфигураций 1С | ☑ | ||
---|---|---|---|---|
0
fez
14.07.04
✎
15:24
|
Брать тут: http://1c.alterplast.ru/functest/index.html
. Зачем нужна эта дура: вкратце Наши ожидания от функционала любой программы (в том числе и конфигурации 1С) можно записывать в виде, понятном для компьютера. И затем использовать эти записи для автоматической проверки сохранения программой ожидаемого функционала. Полезно для контроля над ошибками при внесении в программу изменений. Так же может применятся, как способ написания ТЗ. |
|||
1
fez
14.07.04
✎
17:40
|
Это что, вообще никому не интересно, или просто нужно время подумать?
|
|||
2
Волшебник
14.07.04
✎
17:46
|
Нужно время подумать. Я решил дома посмотреть в спокойной обстановке.
|
|||
3
Crew
14.07.04
✎
17:52
|
(1)
Посмотрел. Интересно. Пока руками не потрогаю ничего не скажу. Если бы она еще и правила тестирования сама писала ;))) P.S. И ошибки исправляла... ;) |
|||
4
fez
14.07.04
✎
19:22
|
(2) Это хорошо. Подождем.
|
|||
5
romix
15.07.04
✎
01:38
|
У Вас сами тесты хранятся в текстовичках? А как насчет хранить их в БД?
Например, в документе, который хранит а) ТЗ с движениями/проводками б) имя регистра в) ссылку на тестовый документ (что тестируем). |
|||
6
fez
15.07.04
✎
09:47
|
(5) Мне не нравится эта идея. Поскольку в таком случае процесс "постановки на тестирование" для произвольной конфигурации резко усложняется.
|
|||
7
romix
15.07.04
✎
20:11
|
(6) Я подумал - а ведь исходная инфа и проводки/движения, которые делает документ - все это же уже есть в самом документе... То есть можно вообще ничего нигде не хранить. Ert должен пробежаться по документам и сравнить логику "превращения" первичного документа в его проводки и движения по регистрам и счетам. У вас, в общем и целом, это так?
|
|||
8
fez
15.07.04
✎
23:31
|
(7) Не. Кроме исходной инфы и проводок документа есть еще и наши ожидания. То, как мы хотим, чтобы было. Эти ожидания и хранятся в тесте.
Логика превращения - это собственно, тестируемый код. Как ты собираешься сравнивать проводки с кодом? :) |
|||
9
romix
15.07.04
✎
23:41
|
(9) Логика превращения - это либо тестируемый код, либо тест (рассмотрение одного и того же с двух противоположных сторон; код производит изменения, тест - их проверяет). Тест можно писать на любом языке. Почему бы это не сделать обрабткой 1С? Или другими средствами получается заметно проще и элегантнее?
|
|||
10
fez
15.07.04
✎
23:45
|
(9) Я запутался. Можно пример?
|
|||
11
romix
15.07.04
✎
23:53
|
(10)
Код (А, Б, В - реквизиты): А=2 Б=2 В=А+Б Тест (внешний отчет): А=2 Б=2 Если В<>А+Б Тогда Сообщить("Ошибка №21"); КонецЕсли; |
|||
12
Petro
16.07.04
✎
08:12
|
А вот мне недавно пришлось перелапатить все печатные формы на предмет их влезания в лист, как тест сможет проверить влезло/не влезло :) ?
|
|||
13
fez
16.07.04
✎
10:00
|
(11) Чушь. Если у тебя в результате сложения 2+2 получится 5 - твой тест все равно пройдет.
(12) Думаю, что никак. В перспективе (очень дальней) такие вещи можно будет сделать просто автоматически. |
|||
14
romix
16.07.04
✎
10:42
|
(13) Нет, при несовпадении он напишет ошибку.
|
|||
15
Поп Гапон
16.07.04
✎
11:08
|
А если подойти к процессу тестирования со стороны интерфейса?
Тесты хранятся в виде записей последовательности действий (выбор пунктов меню, активизация реквизитов, ввод текста, нажатие на кнопки) по созданию тестовой базы. Создаются тесты в режиме автомаатической записи действий программера. Какие-то группы действий комментируются (текстом или даже голосом, чтобы не отрываться). Тест представляется списком действий, описываемых в читабельном варианте. Допустим изменили конфигурацию. Взяли тесты к ней, расставили точки останова, запустили тест на автомате (тут сразу и скорость выполнения теста можно увидеть, причем в разных условиях). На точке останова, посмотрели детальное выполнение, если надо, часть действий переделали (ну допустим интерфейс изменился). Дешево и сердито. |
|||
16
fez
16.07.04
✎
11:55
|
(14) Какую? И в коде 2+2 = 5, и в тесте 2+2 = 5. Совпадает? совпадает. Правильно? нет.
|
|||
17
fez
16.07.04
✎
11:56
|
(15) Сделай. А я посмотрю, насколько это будет дешево.
|
|||
18
romix
16.07.04
✎
15:50
|
(16) Ошибка и в коде, и в тесте маловероятна, т.к. программеру надо одинаково ошибиться дважды. Кроме того, тест может подставлять проверочные данные и смотреть, какой подсчитался итог.
|
|||
19
fez
16.07.04
✎
15:56
|
(18) Ты не понял. Представь, что у тебя неправильно работает операция сложения.
|
|||
20
romix
16.07.04
✎
16:10
|
(19) Для тестирования функций использут отдельные законченные тесты.
Кроме того, если известны исходные данные (2+2) и требуемый результат (4), то ошибка таки всплывет. |
|||
21
fez
16.07.04
✎
16:20
|
Вот в твоих тестах нету требуемого результата - 4.
Или я не понял, что именно ты тестируешь своим тестом? |
|||
22
romix
16.07.04
✎
16:27
|
То есть, я так понял, в случае вашего теста программер один раз формирует документ как надо, "фотографирует" получившиеся проводки и потом автоматически их сверяет?
Тогда это получается подстраховка на случай изменения MD (только в этом случае может что-либо измениться)... А, или еще может измениться, если проводить документы в случайном порядке... Да, тогда это интересно... |
|||
23
fez
16.07.04
✎
18:18
|
(22) Именно. Еще можно применять, как способ написания ТЗ.
Документ уже есть, но проводок еще никаких не создает. Мы создали тестовых документов, и в тестах указали, какие проводки хотим видеть. После этого программируем до тех пор, пока тесты не начнут проходить. |
|||
24
romix
16.07.04
✎
19:58
|
(23) Ну тогда имхо проще хранить ожидания в документах - иначе сам тест должно быть очень тяжело вводить (вбивать вручную)... В части справочников - на них же надо как-то ссылки давать? Коды и наименования ручками переписывать - тоже вроде как не дело...
|
|||
25
fez
16.07.04
✎
21:05
|
Ты ФанкТест не смотрел что ли вообще? Для пользователя есть интерфейс, где он и выбирает справочники/документы. А в тексте хранится ЗначениеВСтрокуВнутр().
Интерфейс, правда, немного корявый, но просто никак не дойдут руки доделать. |
|||
26
romix
16.07.04
✎
23:39
|
(25) Я смотрел когда-то давно старую версию - мне понравилась сама идея - сейчас пишу из кафе :-) От лишнего апа я думаю хуже она не станет :-)
Да никогда руки не дойдут. :-) Надо имхо документами такие вещи делать. Особенно хорошо я думаю это прокатит в 8.0. (одним доком можно зацепить сразу все регистры/счета). |
|||
27
romix
16.07.04
✎
23:39
|
(26) ух ты, звездочки дали :-)
|
|||
28
fez
17.07.04
✎
14:33
|
(26) На итланде в форуме по восьмерке народ плачется, что инструмента нету. Сделаешь? :)
|
|||
29
romix
20.07.04
✎
16:20
|
(28) А разве не прокатит просто док, у которого табличные части - это ожидания по движениям регистров, а в шапке указан документ, который после проведения должен выполнить эти движения/проводки? Такого рода доки могут принадлежать особому "административному" журналу, который невидим для юзеров. А ссылку подскажете?
|
|||
31
fez
20.07.04
✎
16:30
|
http://itland.ru/forum/index.php?showtopic=3642
А восьмерку я видел весьма поверхностно, так что по конкретике реализации - это не ко мне :) |
|||
32
romix
20.07.04
✎
16:38
|
(31) То есть я хочу сказать в 8.0 имхо это можно сделать влегкую - почти ничего даже писать не надо... Ну только сам перебор этих административных документов и сравнение движений "подопытного" дока с табличными частями тестирующего дока (два или три вложенных цикла).
|
|||
33
fez
20.07.04
✎
16:48
|
Ну я вчитался и понял, что пожалуй да, на восьмерке это должно быть легко. Множественные табличные части - рулят.
|
|||
34
fez
27.07.04
✎
16:30
|
(2) Ну как, посмотрел?
|
|||
35
Пролд
19.08.04
✎
02:36
|
(34) Фез, сабж ветки Технология обновления типовых конфигураций
реально написать за 50 квалифицированных человеко-часов? Т.е. в реальное время? |
|||
36
fez
19.08.04
✎
11:53
|
Повторюсь здесь. Эту задачу за это время я бы не взялся делать.
Скорее всего, если сначала подумать, чего именно мы хотим тестировать - то получится как-то использовать уже существующие технологии (тот же FuncTest), а если их не хватит, то доработки вполне могут влезть в указанные временнЫе рамки. |
|||
37
Wasya
19.08.04
✎
12:02
|
Поделюсь пока небольшим опытом внедрения FuncTest.
В первую очередь, внедрил автоматическое тестирование модулей проведения. Все работает нормально. Затраты на поддержание тестов в актуальном состоянии небольшие. Одна беда писать модули проведения легко и одно удовольствие. Данные уже готовы и структурированы. Участие в этом процессе вредных пользователей минимально. По моим оценкам затраты на написание и исправление модулей проведения заметно меньше 10%. Во вторую очередь тестировал отчеты. По условиям функционирования FuncTest, надо было адаптировать отчет под автоматическое тестирование. Это конечно не очень нравиться. Вот где пожалел, что в 7.7 нет препроцессорных команд. Не нравится и способ передачи таблицы результатов из отчета в FuncTest, но тут уж на то воля автора. В отчете у меня была уж очень хитрая ошибка (а если кодер грамотный, то только такие и могут быть) пришлось помучиться с моделированием ошибочной ситуации в тестовой базе. В данный момент пытаюсь тестировать процедуры глобального модуля. Принцип такой создал внешнюю обработку, которая принимает от FuncTest задание и вызывает процедуру глобального модуля. Результаты в виде таблицы значений передает обратно в FuncTest. На написание обработки, заполнение тестовой базы данными ушло два часа. Баг исправлялся 5 минут. Причем если бы я не использовал автоматическое тестирование, время на исправление бага было бы таким же. Обидно, что может к этой процедуре я больше никогда и не вернусь и соответственно затраты на автоматическое тестирование ушли впустую. Какие предварительные выводы у меня получились? Область применения FuncTest жестко ограничена. Можно тестировать все – что не изменяет данных. БД до тестирования и после тестирования должна оставаться неизменной. Затраты времени (соответственно рублей) на разработку заметно увеличиваются. Это пассив, а что в активе? Чего больше всего боится программист, после обновления конфигурации? Что перестанет работать то - что работало. Примеры из жизни: Надо было немного переделать печатную форму документа. Само исправление заняло немного времени, но попутно решил провести рефакторинг – чуть-чуть оптимизировать код. Сделал это не аккуратно. В результате менеджеры целый день выдавали документы с ошибкой. Менеджеры уже привыкли, что проблем у них никаких и тщательно не проверяли, что у них печатается. Да и ошибка проявлялась не всегда и была малозаметной (итоговые суммы были правильными). Ошибка обнаружилась только в конце дня. Второй пример крупнее. Одна довольно крупная фирма по продаже компьютеров в течение дня не могла принимать заявки у корпоративных покупателей из-за проблем с 1С после обновления. Получается что выгода от внедрения автоматического тестирования не в уменьшении времени на разработку и ни в улучшении качества программы, а в уменьшении потерь предприятия от ошибок в программе. Попутно мы частично снимаем с пользователей функцию вечного бета-тестера экспериментов программиста. |
|||
38
fez
19.08.04
✎
12:20
|
(37) "Не нравится и способ передачи таблицы результатов из отчета в FuncTest, но тут уж на то воля автора"
Мне самому она не очень нравится. Так что если напишешь по-другому - приму с благодарностью. "Обидно, что может к этой процедуре я больше никогда и не вернусь и соответственно затраты на автоматическое тестирование ушли впустую." Вспомни об этих словах через год. Ты поймешь, как ты был не прав. Даже если один какой-то тест никогда больше и не сломается - общая масса тестов вселяет в разработчика все бОльшую и бОльшую уверенность. Это действительно сильный эффект. "Можно тестировать все – что не изменяет данных. БД до тестирования и после тестирования должна оставаться неизменной" Вот этого я не понял. Что именно ты имеешь в виду? Ввод документов на основании? Обработки? |
|||
39
fez
19.08.04
✎
12:23
|
(38+) Вот еще чего забыл. На страничке http://1c.alterplast.ru/functest/reports.html открылся сбор отзывов пользователей. Твой отзыв можно туда тоже добавить?
|
|||
40
Wasya
19.08.04
✎
12:26
|
Скажем у меня есть обработки, которые автоматически формируют документы. Как я понимаю, чтобы их тестировать надо иметь начальную тестовую базу. В ней запускаем обработку. Получилась база с добавленными документами. и ее надо сравнить с эталонной (ожидаемой)базой.
|
|||
41
Wasya
19.08.04
✎
12:28
|
добавляй.
|
|||
42
fez
19.08.04
✎
12:36
|
(40) Раздели обработку на две части. Первая часть будет формировать табличные части документов в виде ТаблицыЗначений. Вторая часть будет создавать документы и говорить ЗагрузитьТабличнуюЧасть().
Тогда можно будет проверять только первую часть, забив на вторую (в силу ее примитивности). |
|||
43
21
19.08.04
✎
12:37
|
то же, но для 8, пожалуйста
|
|||
44
fez
19.08.04
✎
12:41
|
(41) Готово.
|
|||
45
fez
19.08.04
✎
12:42
|
(43) 500 баксов.
|
|||
46
fez
19.08.04
✎
12:43
|
(45+) И условия лицензирования - GPL.
|
|||
47
Волшебник
24.08.04
✎
00:27
|
Разработка критериев анализа систем автоматизации тестирования
1. Поддерживаемые процессы тестирования. 2. Поддерживаемые типы тестов. 3. Поддерживаемые технологии. 4. Интеграция с системами разработки. 5. Техническая и документальная поддержка компанией разработчиком. 6. Обучение и сертификация персонала, работающего с набором инструментов и/или методологией. 7. Представительство компании-разработчика в странах ближнего зарубежья. http://www.citforum.ru/SE/testing/pankratov/criterion/ |
|||
48
Денок
18.01.05
✎
12:04
|
Большое спасибо очень помогли. А то ручками уже ......
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |