понедельник, 18 июня 2018 г.

Easy "white-box" testing

(Смотрите запись https://vimeo.com/226001966  или читайте текст ниже)

Расскажу о лёгкости тестирования "белым ящиком".
Многие уверены, что проверкой кода должен и может заниматься только высокий профессионал, имеющий опыт написания сложных программ и досконально знающий язык программирования. Но вскоре вы поймёте, что эту работу вполне можно дать вчерашнему школьнику со знаниями Информатики и Мат-Анализа.
Надеюсь, вам известно, что основными причинами серьёзных багов являются элементарные опечатки, недоправки копи-пастов и даже отсутствие кода, поэтому предлагаю проводить тестирование «белого ящика» при помощи утилит аудиторов кода:
* даже юниоры убедятся, что проверка сорсника – это не сложно;
* определим полезные визуализаторы и метрики кода;
* в процессе будут подсказки по выбору и использованию утилит.

Неколько примечаний:
- примеры кода написаны на языке PL/SQL Oracle;
- Все умозаключения по применению основаны на собственном опыте;
- Дабы избежать маркетинговых проблем и не поощрять вашу лень при интернет-поиске, никаких конкретных названий продуктов упомянуто не будет. А также советов, как у программиста взять код для теста, это «интимный» вопрос. Даже профи-аудитору код дают после утряски юридических вопросов. Предположим, что сорсник хотя бы на чтение уже в нашем распоряжении;
- Под юнитом/сорсником/подпрограммой/кодом будем иметь ввиду обычный текстовый файл с листингом программы.


Как работают утилиты, которыми пользуются аудиторы кода:
- Сначала Парсер разбивает текст на строки: значимые (сами команды) и вспомогательные (комментарии, пустые строки);
- Потом Лексер по значимым строкам определяет структуру кода: подпрограммы, команды, параметры и тому подобное;
- Визуализатор генерит диаграммы;
- Анализатор высчитывает метрики кода и по этим данным формирует предупреждения о нарушенных правилах кодирования. Списком таких «нарушений» удобно пользоваться при проведении code review, но не всегда утилиты статического анализа имеют подробные расшифровки и рекомендации по устранению ошибок. Поэтому при подборе утилит обращайте внимание на то, есть ли возможность создать свои правила проверки кода и устанавливать иные лимиты на метрики.


Приведу несколько примеров помощи тестировщику от визуализаторов кода.
Самый простой визуализатор, как ни странно, - комментарии. Их игнорируют программисты, оправдываясь правильно-названными компонентами кода, хотя, не все считают обязательным удалять закомментированные строки кода. А поскольку они не являются полезными комментами, то от них надо избавляться, благо есть система контроля версий. При наличии полезных комментов не так опасно потерять СКВ или баг-трекинговую систему (историю задачи можно восстановить по комментариям).
Если к правильным комментариям добавить специальные теги, то получится документор кода или псевдокод. Когда же чистая выборка документора совпадает с текстом аналитика хотя бы по логичности распределения команд в коде, тестировщик может автоматически закрывать чек-лист про покрытие кодом спецификации задачи. А поскольку некоторые утилиты по комментам псевдокода строят блок-схемы, то сравнение с UML диаграммой аналитика даст объём тех-задания, не покрытого кодом, моментально.
Ясное дело, наличие комментов зависит только от программиста, который не очень-то любит писать обычные тексты, но его можно легко уговорить на ведение комментов, если составлять их как план подпрограммы из текста аналитика, а потом к ним дописывать код. Они помогут следующему кодеру разобраться в программе.
При тестрировании через комментарии, юниору не нужны знания синтаксиса языка, и даже более того – по ним можно изучать программирование.
К слову сказать, крупные компании ведут комментарии кода в обязательном порядке и по своим правилам/шаблонам. Когда же StartUp-у захочется сертифицироваться, то код уже придётся документировать.


Вторая группа визуализаторов, полезных тестировщику, показывает ход программы. Это: блок-схемы, Flowchart, UML диаграммы по готовому листингу.
Мощнейшая утилита из портфеля аудитора! По нарисованному коду, даже без знаний синтаксиса языка, сразу видна масса багов или тем на рефакторинг:
- количество блоков всегда можно подсчитать, и в некоторых утилитах выставить лимит. Если диаграмма большая, то сорсник длинный. А «лапша» всегда была поводом для оптимизации кода;
- находите дубликаты блоков через поиск текста в блоках и подсветку путей, чтобы проверить их на проблемы после копи-паста (недоредактированный код), либо оформить внутреннюю задачу для рефакторинга по выносу повторений в отдельную функцию (повторяющиеся блоки - причина будущих опечаток и недоправок, а унифицированные функции ускоряют правки и переделки);
- сворачиваемость блоков и подсветка определённых путей ("Да", "Нет", "Исключение") более чётко покажут недостаточно обработанные условия и отсутствие кода. А когда фича не дописана, то тестировщику нет смысла тратить время на проверку пустот (сразу возвращайте на доработку);
- мёртвый код ищется два месяца «чёрным ящиком», а при использовании flowchart определяется за пару минут путём сравнения с диаграммой или текстом от аналитика;
- кликабельность из блоков в строки кода помогает обнаружить замедления, которые бывают от наличия комментариев или обращений к базе внутри цикла (обычно в схеме flowchart не показывается текст комментариев, поэтому их наличие придётся выявлять в самом коде, а визуализацию циклов легче определить по диаграмме);
- глазастые заметят в примере переменные без присвоенного значения или неочищенные в конце (проблем от некорректного обращения с переменными множество - от переполнения буфера и до некорректного расчёта и передачи в другие модули).
Утилиту для построения блок-схем чаще других можно найти в среде разработки программиста. Также много аналогов в свободном доступе.


Третья группа визуализаторов – демонстрирует вызовы одних подпрограмм другими и показывает связи объектов данных с кодом. Их называют обычно Call Tree, References&Dependencies диаграммы (направления стрелок показывают вызовы объектов) и CRUD матрица (Create/Read/Update/Delete операции над данными из подпрограмм).
Сорсники и таблицы всего проекта попадают без повторений в диаграмму. Поэтому простым поиском по имени выявляйте лишние и недостающие обращения к объектам. Например, в диаграмме о кадрах может быть лишней процедура "tech_proc_2", а в матрице бухгалтерии или финансового отдела часто можно обнаружить нехватку процедур или таблиц с ордерами прихода/расхода (если существует корпаративные стандарты наименований объектов).
Для генерации диаграмм и матриц берите чистый исходный код, не прошедший обфускацию или компиляцию, потому что замена имён не даст нужного результата.
Пользуйтесь детализацией связей, подсветкой вызовов и сменой уровней связей при поиске зацикленных процедур (в примере процедура "tech_proc_2" должна быть проверена на все вызовы процедурами "emp_proc_1" и "emp_proc_3", так как при определённых условиях вполне может случится зацикливание), а также шагов, приводящих к мутации данных (в примере показан триггер "emp_trg" и процедура "emp_proc_3", влияющие на данные в таблице "emp_tbl", а поскольку процедура через несколько шагов может быть выполнена из триггера, то вполне вероятно совместное обращение к одним и тем же данным).
Если формат выходной диаграммы SVG, XML или VDX, то более вероятно воспользоваться всеми полезностями (поиск по диаграмме, подсветка путей, кликабельность из диаграммы в код, сворачиваемость блоков диаграмм).


А теперь немного о метриках кода, то есть о качестве в цифрах. Если визуализаторы более полезны на начальном этапе разработки, то на метрики кода влияют каждые изменения подпрограммы. К сожалению, идеального кода не существует и добиться невозможно, как и КПД-100%. Чем же мы, тестировщики, в состоянии помочь кодеру?
Самая простая метрика - количество строк в сорснике до компиляции. С этим файлом работает программист в среде разработки – правит, отлаживает, компилирует. А большой объём файла совсем не на руку ни компилятору, ни системе контроля версий, ни тем более среде разработки.
Хороший редактор раскрашивает синтаксис, показывает начало-конец цикла и иными способами помогает кодеру, а все эти примочки требуют ресурсов. В один прекрасный день вчерашний код не откроется в среде разработки – и конец всем фиксам.
В СКВ дешевле хранить некоторые маленькие файлы, нежели один и тот же большой дописывать, потому что место на сервере слишком быстро закончится.
Слияние изменений (merge) выполнять в СКВ на мелких отдельных файлах проще, и конфликты случаются реже - как в коде, так и между сотрудниками.
Вторая простая для подсчёта величина – количество параметров (и особенно глобальных), которое рекомендуют не более 7 (5 входящих, 2 на выход). Цифра пришла из чистой психологии - единовременно человек запоминает не более 7 объектов. Для работы с бОльшим количеством параметров придётся взводить хинты-подсказки, требующие ресурсов и времени.


С 70-х годов XX века благодаря T.J.McCabe, Maurice Halstead, и чуть позже Don M Coleman и Paul Oman с Jack Hagemeister стало возможным измерить качество кода и спрогнозировать его развитие. Величины, выведенные этими людьми, стали носить их имена.
Thomas J.McCabe вывел формулу цикломатической сложности юнита как разность рёбер и узлов с добавлением удвоенного количества компонент связности.
При грубой оценке граф цикломатической сложности совпадает с диаграммой flowchart, где стрелки выполняют роль рёбер (на рисунке - зелёные), овалы и многоугольники считаются узлами (на рисунке - красные звёздочки), а целый законченный блок – компонент связности (на рисунке - серым цветом ограничены два графа для примеров кода).
Не для всех случаев граф цикломатической сложности идентичен flowchart, потому что если используется сложное условие (через OR/AND), то каждое из них может считаться узлом (в примере граф для процедуры "threeinone" станет идентичен графу для процедуры "oneinthree").
Максимальное значение величины McCabe утверждено Американским Национальным Институтом Стандартов и Технологий (NAST), равно 10, но последнее время расширяют до 15.
Нам тестировщикам это значение говорит о необходимом количестве юнит-тестов.


Все величины Мариуса Халстеда рассчитываются по операторам и операндам, и поэтому утилита должна быть версионно-зависимой для языка программирования, а лучше встроенной в среду разработки.
Что есть операторы и операнды помним, да? В выражении «a+b»: "+" – оператор, "a" и "b" – операнды.
Не удивляйтесь, если подсчитанные строки в листинге не совпадают с длиной программы по Халстеду, потому что длина программы – это сумма всех операторов и всех операндов.
Словарь юнита он определил как сумму уникальных операторов и операндов.
А помножив длину программы на логарифм словаря, Халстед получил объём подпрограммы (или ещё эту величину называют "сложностью Халстеда"). Она максимально не должна превышать 1000 (лимит не утверждён никаким стандартом).
Если же исследовать функцию сложности, приняв уникальными все операнды и операторы, то в самом сложном юните должно быть примерно – 45 операторов и 90 операндов, как это видно на графике. Фактически - это невообразимая программка.


Maintainability Index перевожу для себя не как ремонтопригодность, а как «важность и устойчивость», потому что он  прогнозирует развитие подпрограммы  (сколько ещё можно править или расширять юнит).
Индекс значимости подпрограммы, выведенный Доном Колеманом и Паулем Оманом, дополненный Джеком Хейгмейстером, зависит от всех составляющих листинг: операторов и операндов, блоков и их связей, значимых  и вспомогательных строк кода.
Предел индекса никакими институтами пока не утверждён, но для стабильно-устойчивых подпрограмм рекомендуется писать код так, чтобы индекс был более 85. Когда индекс падает ниже 65, то ваш юнит совсем плох.
Если поисследовать функцию, рассчитывающую индекс, то при максимальных величинах Халстеда, МакКейба и комментов в одном юните - не стоит делать более 1500 строк. Это видно на среднем графике.
Формула имеет две модели: с учётом комментариев (обе строки формулы:" MI = 171 - 5.2*ln(HV) - 0.23*CC - 16.2*ln(LOC) + 50*sin(sqrt(2.4*COM)) ") и без учёта комментариев (только первая строка: " MI = 171 - 5.2*ln(HV) - 0.23*CC - 16.2*ln(LOC) "). Поскольку величина комментариев зависит от функции синуса, то при отношении объёма комментов к строкам кода в процентах, синусоида сложно извивается на отрезке от 0 до 100 (левый график показывает несколько вариантов подбора - максимумы). Если же брать долевое исчисление комментов - от 0 до 1 (правый график), то 3/10 комментированных строк дадут максимум полезности. Юнит должен быть легко-читаемым. И даже цифры подтверждают, что нет смысла экономить за счёт комментариев: "+50 всегда лучше трёх минусов для стремящихся к 85 и выше".


В таблице-шпаргалке перечислены формулы для исчисления качества кода. Особым шрифтом выделены две формулы для прогноза количества багов (вывел Халстед).


При использовании аудита кода, как части среды разработки, никаких дополнительных вложений от вас не потребуется: ни в обучение, ни в покупку, ни в дальнейшую поддержку утилит, как это приходится делать с юнит-тестами.
Если результаты юнит-тестов дают понимание о том, «каков код здесь и сейчас», то аудит говорит о перспективах развития подпрограммы.
Code Audit - для комплексного тестирования всего проекта, Unit testing – для точечного.
Одно другим подменить невозможно, но совместное использование только улучшит качество конечного продукта.
Мечтающие взлететь в bug-bounty, воспользуйтесь тем, что завалялось у вашего программиста, а именно утилитами аудиторов кода, вшитые в среду разработки.

Делайте аудит кода, находите сразу причины сложных багов, давайте подсказки программистам, где именно и что рефакторить для улучшения качества кода. Или научите их делать аудит кода самостоятельно, регулярно, автоматически через шедулеры, и в тестировщиках отпадёт необходимость.

воскресенье, 17 июня 2018 г.

AutoRN

Как ваш техписатель (ТП) или выпускающий билд тестировщик (Т) собирает текст для Release Notes (РН)? РН всегда собирает один человек или любой в состоянии сделать это? На всех стадиях разработки и выпуска продукта проводится проверка текста на адекватность или полагаетесь только на ТП, который в последний день перед выпуском шерстит все закрытые задачи и выписывает нечто приблизительное? А может только выбирает подряд все Summary из задач, вошедших в билд? Храните ли вручную собранные РН в Системе Контроля Версий (СКВ), легко ли их найти и вставить в инсталлятор продукта?
Как создавать описание билда, которое будет понятно пользователю, и он его обязательно изучит – об этом и расскажу.
ConquestSS публикует билды десктопных продуктов не часто (максимум – раз в полгода), а посему существует система бета (b) и предвыпускных (rc) билдов, для которых нет надобности компоновать РН. Вместо текста показывается шаблонный текст: "RELEASE NOTES [ProductName] [MajorNumber].[MinorNumber] Release [ReleaseNumber] (draft, not completed)".
Общепринятая структура РН: Новинки (Н – Features), Улучшения (У - Improvements), Исправленные Ошибки (ИО – Fixed Bugs), Исключено (И – Deleted/Deprecated), Возможные Проблемы (ВП – Detected Bugs). На каком этапе удобнее группировать? Для автоматизации конечно же надо начинать с низов – каждую задачу сразу распределять по структуре РН.
Из каких источников ТП может брать информацию для составления РН? К каждому сабмиту в СКВ разработчик обязательно пишет короткий комментарий о сделанных изменениях, который понятен сотрудникам со знанием языка программирования. Хоть СКВ и имеет самое правильное распределение задач по номерам билдов, но тексты комментариев к сабмитам мало подходят для РН, ведь их будет читать пользователь, не знающий "кухни" продукта. Поэтому инфу лучше брать из Баг-Трекинговой Системы (БТС). Но в БТС задачи ведутся для параллельных билдов или даже продуктов, поэтому нужны определённые пометки. В Jira есть очень полезная и удобная штука – лейблы, которые может добавлять и менять любой пользователь БТС, а также по ним легко фильтровать. Поскольку одна задача может содержать несколько лейбл, то и проблема параллельных билдов/продуктов вполне разрешима. Для автоматизации сбора РН была предложена система лейбл: "RN_[MinProductName]_[MajorNumber].[MinorNumber].[ReleaseNumber].[LastPublishedBuildNumber]+", где префикс "RN_" означает причастность задачи к РН, "MinProductName" – короткое наименование продукта, " [MajorNumber].[MinorNumber].[ReleaseNumber].[LastPublishedBuildNumber]" – полный номер последнего опубликованного билда, "+" – символ плюса означает последующий выпускаемый билд/версию. Например, в феврале выпустили Продукт Компании (ПК) версии "3.5.7.123", а в апреле собираются выпустить "ПК 3.6.2.ХХХ", в таком случае лейбла для задач, которые необходимо описать в РН ближайшего выпускаемого билда, будет "RN_ПК_3.5.7.123+".
Из какого поля брать тексты, чтоб это было быстро, при минимальном влиянии человеческого фактора? Значение из Summary вряд ли будет понятно пользователю, так как его составляют коротко, понятно лишь для проектировщиков и тестировщиков. Полное описание из Description совсем не подходит для РН, так как много технических деталей, а выбирать пару строк значит прикручивать парсер. Хоть у задач Jira и есть поле Components, но в нём может быть указано несколько модулей продукта, и для РН группировка станет сложной. И самое трудное – тип задачи Н/У/ИО/И/ВП – нельзя брать из поля Type, так как в БТС оформленный баг вполне может быть описан в РН как улучшение, а закрытая новинка без полного тестирования должна быть в блоке исключённых функциональностей. Учитывая вышеизложенные проблемы, было предложено создать текстовое поле "Release Notes Text", не обязательное для заполнения, но с возможностью правки для любого вида задач. История правок в Jira после ревизии аналитиком или разработчиком помогает обучать ТП. Черновой вариант от разработчика способствует составлению тест-аналитиком более полного комплекса тестовых случаев, а подправленный тестировщиком текст добавляет его понятливости конечным пользователем.
Для автоматизации сбора РН пришлось чётко описать во внутренней Wiki схему заполнения поля "Release Notes Text":
- в первой строке указать имя блока группировки РН кратко (Н/У/ИО/И/ВП) или подробно (Новшество/Улучшение/Исправленные Ошибки/Исключено/Возможные Проблемы);
- во второй строке указать одно наименование модуля или функциональной страницы продукта;
- в остальных строках описать задачу понятным для конечного пользователя языком.
При соблюдении такой структуры становится легко и просто распарсить и сгруппировать текст РН. А если показ РН в продукте делается в HTML формате, то необходимое форматирование удобно делать сразу в поле Jira.
Черновой вариант текста к каждой задаче хорошо бы оформлять программисту, потом подправлять тестировщику, а уже ТП завершит процесс форматирования и лексической пригодности.
Сочетание "непустое поле РН" и "наличие лейблы" является итоговым фильтром задач, которые должны быть отмечены в РН ближайшего выпускаемого билда. Лейблу проставляет ТП после полной проверки РН. Сбор текстов из спец.поля Jira – элементарное действие, но необходим самописный парсер для отсева дубликатов, группирования без излишних заголовков и выставления сортировки, соответствующей маркетинговым целям. Этот же автосборщик РН делает тексты в двух вариантах – с указанием номеров задач для промежуточных билдов и отчёта о наличии текстов, их корректности функциональной и лингвистической. Примечание: из РН, собираемых в html-формате, работают линки номеров задач Jira.
Аннотация к билду удобна для налаживания обратной связи с пользователем. К каждому пункту новшества и изменения в РН стоит добавить три чекера "Помогло", "Незаметно", "Лишнее". А в конце текста РН добавить функцию отправки результатов в Вашу техподдержку с возможностью дописать личное мнение о билде. Маркетинг может простимулировать какими-нибудь бонусами отправленную анкету. Будьте уверены, анализ анкет даст огромное поле деятельности аналитикам и тестировщикам.

суббота, 16 июня 2018 г.

Дорогие trivial-ы

В распределённой команде руководитель время от времени поставляет тривиальные баги команде тестировщиков. Но самому их вносить в систему учёта багов ему лень. А поскольку команда общается посредством Slack, то картинки постятся в чат, часто без пояснений о конкретном месте проблемы, мол: "Ищите сами, всё же видно!" Ещё ситуацию усугубляет серверная версия Jira без выхода в Инет. Билд с фиксом шеф обычно желает получить мгновенно, так как считает такие баги "пятиминутками". Но в 5 минут никогда невозможно уложиться.
Устные просьбы оформлять сразу в Jira опубликованные в чате картинки успеха не имели, поэтому пришлось подсчитать убытки всей команды из-за лени начальника.
Bug Reporter Tester Bug Fixer
3-5 мин на снятие screen shot, редактирование и вставку в Slack 1-3 мин на чтение чата и понимание проблемы (где происходит, как получить, в чём собственно проблема) 1-3 мин на чтение и понимание проблемы (где происходит, как править)
10-30 мин на собственное возвращение к прерванной работе 10 мин – 2 часа на воспроизведение в разрабатываемом билде и опубликованном 5 мин правка и submit в систему контроля версий
опционально: 30 мин на выяснение подробностей с репортером 10 мин – 2 ч проверка в скомпиллированном приложении
10 мин на пересылку оригинала screen shot из Slack в локальную сеть с Jira 10-30 мин на собственное возвращение к прерванной работе
3-10 мин оформление задачи в Jira
10-30 мин на собственное возвращение к прерванной работе
10 мин – 2 ч проверка после правки
опционально: 20 мин оформление возврата, разночтений и последствий недоправок, недопроверок
13-35 мин 44 мин – 5 ч 43 мин 26 мин – 2 ч 38 мин

Итого, на одну "пятиминутку" требуется от 1 ч 23 мин до 6 ч 56 мин общекомандного времени.
Сократить перерасход времени можно за счёт регулярной проверки новооформленных задач одним или несколькими сотрудниками QA. При этом нет необходимости отрываться от текущих дел, так как на new-task-review обычно уходит 10-20 минут ежедневно в рамках регулярных запланированных работ, а правка и проверка задач тоже в планах всей команды и нет необходимости отрывать кого-то от текущих дел.
Bug Reporter Tester Bug Fixer
3-5 мин на снятие screen shot, оформление и вставку в Jira 1-3 мин на чтение и понимание проблемы в рамках проверки задач Jira 1-3 мин на чтение и понимание проблемы (где происходит, как править)
10-30 мин на собственное возвращение к прерванной работе 10 мин – 2 ч проверка после правки опционально: 30 мин на выяснение подробностей с репортером
опционально: 20 мин оформление возврата, разночтений и последствий недоправок, недопроверок 5 мин правка и submit в систему контроля версий
10 мин – 2 ч проверка в скомпиллированном приложении
13-35 мин 11 мин – 2 ч 23 мин 16 мин – 2 ч 38 мин

При таком раскладе затрачивается от 40 мин до 5 ч 36 мин общекомандного времени на "пятиминутку". Экономия – от 43 мин до 1 ч 20 мин.

пятница, 15 июня 2018 г.

ХАОС (порядок автотестов)

ХАОС – хорошие автоматизированные общие скрипты

Тестировщик в Agile команде – это в первую очередь автоматизатор, поскольку процессы на всех стадиях разработки программного обеспечения скоростные. В быстрых проектах роли объединяются и замещаются, а поэтому ресурсы должны быть обще-доступны, понятны, просты в применении.

ЧТО

Автоматизация – это применение любых средств для ускорения процесса и снижения "человеческого фактора". Авто-тесты в большинстве случаев являются самостоятельными программами, исходники которых – обычные скрипты, то есть текстовые файлы. Исходя из таких условий, к файлам скриптов применимы все оговоренные в команде правила ведения исходников программы: именование, структуризация, хранение, доступность.

ГДЕ

Очевидно, что скрипты авто-тестов необходимо хранить в той же Системе Контроля Версий (СКВ), что и исходники выпускаемого продукта. Опыт показывает, что наиболее удобно выделять место под авто-тесты в рамках конкретного продукта или модуля. В дереве СКВ одноимённые подпапки "Авто-тесты" упрощают поиск при их запуске в CI (Continuous Integration) среде. Наличие скриптов в СКВ способствует более корректному их редактированию в зависимости от версии выпускаемого продукта.

КАК

Хотя скрипты авто-тестов и будут хранится в непересекающихся местах, но к их именованию также необходимо применить общие правила: уникальность в рамках проекта и модуля (префиксы по имени продукта, модуля), аббревиатура авто-теста (или использовать расширение имени файла, если их запуск отличен от основного приложения), для CI не эффективен постфикс версии, но краткое назначение скрипта должно быть в имени файла (примечание: нумерация порядка исполнения или версий продукта в имени файла малоэффективна, потому что привносит излишнюю уникальность в быстроменяющемся проекте). Содержимое скриптов должно удовлетворять всем принятым правилам кодирования в конкретной команде: именование переменных, использование глобальных параметров, наличие и объём комментариев, форматирование, использование достаточных команд без избытка кода по прямому назначению. Правила кодирования должны быть однозначно прописаны во внутренней документации, их пополнение и корректировка производится после очередного совместного обсуждения кода (public code review).


Команда, соблюдающая правила, непременно побеждает.

"В чём сила, Брат? В правде!" (С*)

четверг, 14 июня 2018 г.

Копим куки

Очень многие сайты, не исключая самых используемых, не в состоянии корректно обрабатывать куки из списка исключений.

Предварительная настройка:
- в FireFox отключить все куки ("Открыть меню / Настройки / Приватность и защита / Принимать куки с веб-сайтов" = отключено)
- очистить имеющиеся куки ("Открыть меню / Настройки / Приватность и защита / Показать куки" = "Удалить выбранные")
- можно перезапустить браузер, но не обязательно.

Пример 1
- открыть сайт "mail.ru"
- в левом верхнем углу набрать свои (полностью корректные) параметры входа в почту:

- по нажатию на кнопку "Войти" неожиданно появляется опять форма для входа в почту с пустыми данными:

- вводим ещё раз свои корректные (!!!) данные. Хотя, очень непонятное явление - может какой вирус желает перехватить вводимую инфу? или сервис настолько наворочен, что впихнул в одну фичу все пять? или мои данные потерялись где-то? или ещё что...

Актуально: после второй попытки входа абсолютно неверное сообщение об ошибке в имени пользователя или пароле:


Ожидаемый результат: сообщение об ошибке должно говорить о некорректно настроенных или отключенных куках браузера.
Решение проблемы: добавить "https://mail.ru" и "https://account.mail.ru" (обратите внимание на протокол) в разрешённые веб-сайты для сбора куков.

Примеры 2, 3
Аккаунты в "Blogger.COM", "Blogspot.RU", "Google.COM" недоступны без включенных куков:






Актуально: неожиданное поведение в виде зацикленных пустых окон с предложением войти или создать аккаунт.
Ожидаемый результат: сообщение об ошибке или предупреждение о выключенных или неполноценно настроенных куках.

Пример 4
Аккаунт в Facebook становится доступным после добавления "https://www.facebook.com" в список веб-сайтов для сбора куков, но очень желательно перезапустить браузер после изменения настроек, чтоб не получить неожиданное сообщение:


Совет тестировщикам: для качественно проведённой работы проверяйте сайты с полностью очищенными куками и выключенными настройками для сбора куков.
Зачем? Понятный и дружелюбный интерфейс - это прямая дорога к увеличению пользователей, т.е. росту дохода компании.

среда, 13 июня 2018 г.

Документор кода или псевдокод

Осенью 2016 года сотрудникам, рекламирующим и распространяющим продукт ClearSQL, мной было предложено позиционировать его не только для разработчиков, но и для тестировщиков. Но пользу утилит аудиторов кода они оценили только недавно, начав серию статей с Псевдокода (https://www.youtube.com/watch?v=pFCAALkJ9RU).
Именно Псевдокод является самым простым и доступным способом оценки полноты и качества кода. Фактически, это комментарии к коду, понятные любому человеку.
Комментарии псевдокода добавляются в основной код со специальными тегами. За счёт этих тегов можно вычленять только комментарии (обычный текст, который можно брать из текста технического задания от аналитика продукта) или композицию комментариев со строками кода. В ClearSQL есть возможность генерить Flowchart (блок-схему, UML диаграмму) по комментариям псевдокода. Нижеследующие скриншоты сняты из редакторов кода, псевдокода и диаграмм приложения ClearSQL 6.9.
Текст кода с комментариями псевдокода:

Диаграмма flowchart кода:

Текст псевдокода:

Диаграмма flowchart по комментариям псевдокода (UML формат, слева-направо, со строками кода):

Если аналитики балуют программистов составлением тех.задания в виде блок-схем, то сравнение UML диаграммы от аналитика с Flowchart по комментариям псевдокода даст моментально объём тех.задания, не покрытого кодом или не продуманного аналитиком. В нижеследующем примере видно, что программист обработал не только граничные значения (есть/нет звонок), но и промежуточный результат (абонент занят).
Блок-схема аналитика (нарисовано вручную в Paint):

Диаграмма flowchart по комментариям псевдокода со строками кода:


Программистам, ленящимся писать комменты к коду, нет смысла тратить время и способности сочинителя обычных текстов, потому что можно сначала вставить в пустой скрипт текст от аналитика

закомментировать эти строки (можно с тэгами псевдокода)

разбить их на логические куски

и уже к имеющемуся плану скрипта дописывать код
.
По-сути, просто "тупокодить". А сколько при этом экономится общекомандного времени на разработку!

Наличие комментариев в коде имеет ряд преимуществ:
* из-за текучки кадров следующему программисту будет быстрее и проще разобраться с чужим кодом (легаси);
* maintainability index (уровень качества кода) любого кода достигается больше минимума в 85 за счёт 3/10 комментированных строк (но только если это не временно неиспользуемый код, а именно пояснения к коду = полезные комментарии);
* по комментариям к коду не только легче разобраться с его предназначением, но и можно улучшить свои знания языка программирования;
* наличие комментариев в коде ускоряют восстановление истории задачи и добавляют уверенности при смене или потере VCS и BTS, так как нет смысла искать изменения по системе контроля версий или по баг-трекинговой системе;
* сертификация программного обеспечения подразумевает наличие документации, которую легко и быстро можно вычленить из комментариев псевдокода, а не писать с нуля, как это было в моей практике.

В иных средах разработки на других языках программирования тоже есть возможность авто-документирования кода через комментарии с тэгами. Приучайте программистов писать комментарии, и тестировщик без знания языка программирования сможет проверять продукт методом "белого ящика", даже будучи юниором и абсолютно без опыта.



вторник, 12 июня 2018 г.

Icon Dictionary (IDic) = продуктовый учебник и настройщик




Icon Dictionary – уникальный модуль продукта SQLDetective (http://www.conquestsoftwaresolutions.com/page/sqldetective_screen_shots "Miscellaneous | Icon Dictionary Screenshot library: 67 / 69"), позволяющий обучиться пользованию продуктом, устанавливать удобные горячие клавиши и тулбары во всех рабочих окнах, отслеживать объём работ в продукте.


Подсказки к видео (https://www.youtube.com/watch?v=RFgnUsijudI):

* 4 сек "Migrating to SQLDetective: Shortcut Schema" – имя продукта SQLDetective имеет специальный фонт частями и слово неразделимо; значение заголовка ролика говорит о том, что при переходе на продукт SQLDetective с других аналогов Вам не придётся менять свои привычки, потому что достаточно перевыбрать список горячих клавиш, и "новое" приложение будет работать в привычном Вам режиме. Например, компиляция подпрограммы "Ctrl+F" в TOAD имеет иное сочетание горячих клавиш в SQLDetective -"F9", но возврат к привычному делается в один клик;

* 7 сек "For a seamless migration from peer SQL IDE tools to SQLDetective you can use familiar shortcut key schemas." – список "привычных" продуктов ограничен: TOAD, SQL Navigator, PL/SQL Developer, к сожалению, нет схемы горячих клавиш самого популярного бесплатного продукта SQL Developer от Oracle;

* 13 сек "NO unknown key combinations – select the preferable schema type from the list. If necessary, modify the existing shortcuts or define the new ones." – детально смена горячих клавиш описана в статье "The SQLDetective interface - Icon Dictionary - Action Navigator - Shortcut key customization" хелпа приложения. Не пытайтесь вызвать хелп из окна со списком горячих клавиш и активной строкой какого-нибудь действия, так как новая горячая клавиша F1 будет пытаться быть назначенной текущему действию;

* 31 сек "Combinations different from the default, are marked with Yes in the Modified column." – пометка об изменённом сочетании горячих клавиш, отличном от стандартного в зависимости от продуктовой схемы, показывается только для конкретной продуктовой схемы горячих клавиш. Вернуться к стандартной горячей клавише можно в любой продуктовой схеме через действия Reset current Shortcut в конттекстном или главном меню окна;

* 41 сек "Top Features  Detect most and least popular features by counting the number of clicks you made to call them in the interface." – экшены в тулбаре, главном и контекстном меню являются едиными и их выполнение подсчитывается в едином списке. Смена и проверка уникальности горячих клавиш тоже производится по единому списку для уникальности хотя бы в одном независимом окне;

* 46 сек "Top Features  See, the number of times you used Open Object equals 14… " – наименование окна Open Object неполноценно отформатировано (оба слова – название одного окна). В качестве примера выбран объект – хранимая подпрограмма, который открывается в окне Stored Program Editor, для большинства других объектов в SQLDetective автоматически открываются собственные мастера объектов, если этот объект выбран в дереве Object Navigator. Когда же в Object Navigator курсор на папке, то по экшену Open Object появится окно для выбора типа и владельца открываемого объекта;

* 56 сек  "Top Features  … but after you open a DB object once again, the figure automatically changes to 15. By the way, the last used date is also there." - данные о кликах хранятся в зашифрованном виде (пара файликов в %AppData%), доступном только из приложения. История кликов не ведётся, показывается только дата без точного времени (хоть и выставлена в настройках приложения) одного последнего клика. Клики при записи и воспроизведении макроса (http://www.conquestsoftwaresolutions.com/page/sqldetective_screen_shots  "Miscellaneous | Macro Recorder  Screenshot library: 68 / 69") учитываются в числе прочих. Но если окно IDic было открыто на закладке со списком нажатой горячей клавиши, то при активации окна IDic придётся обновить список вручную – открыть любую соседнюю страницу и вернуться, так как нет иной возможности обновить список нажатых горячих клавиш или кнопок тулбара. Нажатие кнопки тулбара и сочетания горячих клавиш подсчитывается как единое действие, различий нет;

* запись сделана на билде, которого нет в общем доступе, поэтому не ищите точного интерфейсного совпадения с имеющимся SQLDetective 4.4.


В режиме обучения (выберите режим из комбобокса Display mode и навигируйте особым курсором по видимым экшенам – кнопки тулбаров, иконки, пункты меню) доступны описания почти всех действий приложения. Отдельная часть Movie Navigator состоит из списка обучающих видео-роликов, записанных много лет назад на версии 3.5, но частично актуальных и в текущей версии SQLDetective.

Не беспокойтесь, история запущенных действий не отправляется автоматически в техподдержку Conquest Software Solutions вместе с логами или настройками приложения. К сожалению, мониторить работу с приложением можно в очень ограниченном виде – только количество и дата последнего клика.




понедельник, 11 июня 2018 г.

Call Tree диаграммы в ClearSQL

Подсказки по работе с Call Tree диаграммами в приложении ClearSQL (https://www.sqldev.tech/clearsql)

1. Для любых скриптов проекта, имеющих в коде вызовы объектов базы данных Oracle, ClearSQL генерит диаграммы Call Tree. Главный объект диаграммы выделен цветом по значению опции "main menu / Options / Code Analyzer Options / Diagram Options / Call Tree / Call Tree Colors / Selected subroutine". Объекты в диаграмме сгруппированы по владельцу и опционально по "родительскому" (подпрограммы пакета или объектного типа). Группировка утяжеляет генерацию диаграмм. Объекты по имени и владельцу попадают в диаграммы уникально для всего проекта. На перегенерацию при анализе скрипта не влияют некоторые локальные опции диаграммы, если включена "main menu Options / Preferences / Project Analysis / Carts, Diagrams and Matrices / Keep diagram local settings"? но их смена применяется при перерисовке диаграммы в самом окне диаграммы по кнопке Redraw.

2. Существует два окна с диаграммами Call Tree в интерфейсе – уровень проекта (закладка All Call Trees) и уровня скрипта (закладка Script: Editor and Analyzer Info / Call Trees). В отчёт эти диаграммы попадают "as is" в зависимости от опций интерфейса и отчёта "main menu / Tools / Project Report Assistant". Обе закладки состоят из двух частей – дерево диаграмм и окно просмотра выбранных в дереве диаграмм. Выбор объектов в дереве диаграмм автоматически подсвечивает скрипты в дереве проекта с основным объектом диаграммы.

3. Примечания к титрам видеоролика (https://www.youtube.com/watch?v=7qsJYZQKVbo):

* 3 сек "Call Trees in ClearSQL" - название продукта неполноценно отформатировано (часть Clear должна быть italic-format = ClearSQL);

* 12 сек "Purpose ClearSQL draws subroutine calls and called-by path of PL/SQL code in call tree diagrams." – уровень вложенности вызовов настраивается в "main menu / Options / Code Analyzer Options / Diagram Options / Call Tree / Call Tree Appearance / Call level", по-умолчанию равен 3 в обе стороны. Подписи обращений к объектам данных показаны по-умолчанию опцией "main menu / Options / Code Analyzer Options / Diagram Options / Call Tree / Call Tree Appearance / Show data flow labels";

* 26 сек "Statements  Data flows show how subroutines get data from data objects (table, view) with SELECT statement, and how they put data back with INSERT or UPDATE statements, delete data with DELETE statements." – суб-команды из выражения MERGE тоже попадают в схему как самостоятельные связки, но никакие команды не попадают в диаграмму из строкового значения какой-либо переменной кода и из EXECUTE IMMEDIATE;

* 40 сек "Clicking call tree blocks locates subroutine in the Code Editor, so you have the source code at hand." – навигация из диаграммы в текст кода работает в одностороннем порядке, т.е. из кода в диаграммы навигации не существует, но из дерева диаграмм автоматически подсвечиваются срипты в дереве проекта;

* 45 сек "For example, clicking the CREATETRN function opens the DNTS1 package, where you can see from where the INSERT INTO transactions table flows." – на закладке All Call Trees для демо проекта откройте дерево диаграмм до ноды "Dataset Objects / TRANSACTIONS", при этом в дереве проекта позиционируется скрипт "Package Body.sql", по клику в диаграмме на блоке "CREATETRN" активный курсор из закладки All Call Trees перейдёт в окно "Script: Editor and Analyzer Info / Code Editor" и подсветит первую строку подпрограммы "CreateTRN", в которой имеется первый из вызовов объекта "TRANSACTIONS". Поскольку один и тот же объект в скрипте может вызываться в нескольких местах, то локатор из Call Tree диаграммы в код находится в стадии доработки и частично реализован в ClearDB Documenter (http://www.conquestsoftwaresolutions.com/page/cleardb_screen_shots  - Docu | PL/SQL code in diagrams — Slide 2/4: Call Trees), или например в доке (http://www.conquestsoftwaresolutions.com:8082/docus/), из пакета "HR.DBG_DEMO.PROC1" вызывается процедура "HR.DBG_DEMO.PROC2" и её упоминание в пакете есть на 47 и 55 строках тела пакета;

* 1 мин 3 сек "Clicking the MAKETRANS procedure will help you identify the SELECT statement FROM this table." – следует читать как " Clicking the MAKETRANS block in diagram navigates you to the SELECT statement for this table in code text.";

* 1 мин 15 сек "Legend The diagram legend won't let you forget what all these colorful arrows & boxes mean." – цвета блоков по типам объектов совпадают с настройками, если диаграмма генерилась с включенной группировкой, иначе – блоки вызываемых и вызывающих объектов покрашены в красный и терракотовый цвета, для которых не существует юзерских настроек;

* 1 мин 24 сек "Flexible GUI  Zoom out a complex diagram net to see the overall picture or magnify its separate parts to see the details closer." – зуммер и лупа доступны не только в Call Tree, но и в Flowchart диаграммах. Осторожно: кнопки "Zoom diagram" и "Magnifier" никак не синхронизированы с встроенным списком в нижнем правом углу процентного просмотра html-вьювера. При регенерации диаграмм зуммер сбрасывается в дефолт – 100%;

* 1 мин 37 сек "Flexible GUI  For better usability, turn on the Highlight Elements feature to see the separate data flows and not to get lost in the maize of lines & blocks. Note: Highlight is available in SVG format only!" – формат диаграмм SVG является дефолтным, но сменить можно в "main menu / Options / Code Analyzer Options / Diagram Options / Output Diagram Format" перед генерацией.





воскресенье, 10 июня 2018 г.

Суть-Содержание

"О чём?" или "Про что?"
(рубрика "Театр и Тестирование")
Два вопроса. Вроде бы одинаковые, но в большинстве случаев кардинально разные.
В период подготовки к конкурсу художественного слова или дню Пушкина они звучат очень часто при обращении к участникам. И, как правило, ответ от дилетантов идёт на вопрос "Про что?", то есть они пересказывают содержание произведения, а не говорят о своём отношении к главной мысли и тем урокам, которые можно подчерпнуть из текста.
Точно также реагируют зрители современного кино, особенно зарубежного. Фильмы превратились по-сути в бессмысленное шоу. Зачастую отзыв о кино-новинке насыщен описанием задействованной компьютерной графики, большой работе гримёра и костюмера, изредка оценивается операторская работа. Но совсем забыта работа сценариста, режиссёра и актёра, от чего в полной мере зависит ответ на вопрос "О чём?".
Возможно истоки проблемы кроются в современном обучении, основанном на тестировании, а не передаче знаний. В день Пушкина и Русского Языка выпускники составляли "как-бы сочинение", а не описывали свои мысли и эмоции от ранее прочтённого, потому что их приучили излагать "по-рыбе". Да, чтобы оценить сочинение в рамках ЕГЭ проще проставить галочки о наличии основных требований, вернее фраз о мнении автора, наличии и месте героя и тому подобного, нежели вчитываться в ход мыслей, возможно, будущего писателя. Полагаю, по этой же причине режиссёры отказываются ставить современные пьесы, потому что в них нет ответа на вопрос "О чём?", а ответы на вопрос "Про что?" слишком навороченные о нереальных событиях.
Эти же два вопроса вполне применимы при оформлении задач в баг-трекинговую систему. На вопрос "О чём?" всегда должно отвечать краткое описание "Summary", а комбинация значений из полей "Component/Module", "Priority/Severity", "Environment", "Issue Type","Affected Version", "Description" расскажет "Про что?" данная задача. Чаще всего однотипные задачи, с одинаковым алгоритмом правки лучше именовать в "Summary" единым текстом, чтобы программисту было сразу ясно куда направлять свои мысли. Такое именование считают неверным только ленивые составители спринта, для которых добавление в фильтр для отбора задач ещё несколько полей - "Component/Module", "Priority/Severity", "Environment", "Issue Type","Affected Version" - проблематично. Поэтому текст "Summary" раздувают более 5-7 слов и впихивают в якобы короткое наименование ответы на все вопросы "что-где-когда?". Вместе с ними за длинное "Summary" ратуют составители Release Notes, которым проще вставить текст наименования задачи вместо того, чтобы описать пользователю доступным языком суть задачи. В большинстве баг-трекинговых систем заполнение поля "Summary" обязательно, и недаром браузеры выводят список ранее введённых значений в это поле. Например, при оценке спринта достаточно выбрать задачи о соблюдении стандартов интерфейса, нежели перечитывать каждую из тысячи задач и осознавать единость правок. Если бы создатели баг-трекинговых систем подразумевали необходимость разнообразия Summary, то кроме обязательности на поле бы навесили ключ уникальности. Почему этого не делается? Да, именно для того, чтобы у вашей команды составился свой список единства задач. Имея универсальные названия, проще выполнять следующее:
- распределять работы между специалистами, например, интерфейсниками и системщиками;
- составлять тест-кейсы, чек-листы обычным копированием из имеющихся подобных, быстрее осуществлять тест-дизайн без необходимости особого обучения или привлечения специалиста;
- планировать время работы над задачей, как программистом, так и тестировщиком;
- унифицировать тексты для Release Notes;
- предоставлять более понятный отчёт руководству.

А когда вам задают вопрос "О чём сие произведение?" вы поясняете его суть и описываете своё мнение, впечатление, осознание или пересказываете сюжет?

суббота, 9 июня 2018 г.

CRUD matrices in Conquest products

Матрицы CRUD в ClearSQL и ClearDB Documenter генерятся на основе кода из хранимых подпрограмм: процедуры, функции, пакеты, объектные типы, триггеры. Из других текстов PL/SQL кода (job, sched.program,..) данные не участвуют при составлении матриц. Также не нужны сами объекты данных (таблицы, вьювера) в проекте для составления матрицы. В проект ClearSQL объекты данных не импортируются, а в доку ClearDB Documenter не нужно выбирать таблицы или вьювера, которые возможно задействованы в коде.

Объекты в матрицу попадают уникально по имени. Если в тексте кода все имена объектов префиксованы именем владельца, то результат уникальности будет более верным.

Матрица CRUD1 генерится из текста PL/SQL кода одной подпрограммы. Поскольку SQLDetective может проводить аудит кода только одной хранимой подпрограммы, то в будущей версии SQLDetective вполне может быть реализована эта фича.

Матрицы CRUD2 генерятся на основе совокупности хранимых подпрограмм. Проект ClearSQL может состоять из папок со скриптами, поэтому для каждой папки будет своя матрица CRUD2, в том числе и для всего проекта. Дока ClearDB Documenter  имеет группировку по схемам и типам объектов, но матрицы CRUD2 генерятся в разрезе схем и одна на всю базу. Но в матрицу будут включены только те объекты, которые упомянуты в коде выбранных для доки объектов. Для полной матрицы всей базы необходимо выбрать все хранимые подпрограммы (процедуры, функции, спецификации и тела пакетов, спецификации и тела объектных типов, триггеры) всех схем в подключенной базе. Реализация CRUD2 матриц в будущей версии SQLDetective маловероятна.

Выходная форма матриц и в интерфейсе, и в репортах-доках - это html-формат. Поиск объекта по имени работает как в обычном браузере. При наличии правил именования объектов внутри команды разработчиков вполне легко отследить избыточность и недостаток обращений к объектам.

Матрицу CRUD не стоит путать с Entity Relationship Diagram, которая генерится в ClearDB Documenter на основе только объектов данных и их ключей связи. ERD не генерятся в ClearSQL, потому что таблицы и вьювера не являются PL/SQL кодом. Генерация ERD в SQLDetective пока не реализована, но увидеть (авто-нарисовать) связи объектов данных можно в Query Builder tool.



пятница, 8 июня 2018 г.

OSD - автоматизация техподдержки десктопного ПО

В мае 2002 года на рынок десктопных продуктов для разработчиков базы данных Oracle вышел коробочный продукт Table Magic российского производства. В течение года его переименовали в DatabaseVoyager и распространяли компакт-дисками по Европе, летали в Америку и Юго-Восточную Азию. Пользователей было не много, общение проводилось посредством электронной почты и ICQ. C увеличением разноязычных пользователей было принято решение о едином языке техподдержки. Отчёты пользователей добавлялись в имевшуюся Bug Tracking System отдельными задачами, с указанием имени юзера и параметров связи с ним (e-mail адрес или номер ICQ в самом тексте задачи). Высокий приоритет таких задач объяснялся именем автора, баги от внутреннего тестирования исправлялись во вторую очередь.
Мировой Интернет развивался и стало возможным оплачивать покупки и распространять ПО без затрат на пересылку, хранить и пересылать большие объёмы данных. Под это дело к 2005 году был создан сайт WWW.SQLDETECTIVE.COM (параллельно в очередной раз переименовали продукт в  SQLDetective) и выбран SWREG как готовый вариант проведения электронных платежей. Количество пользователей начало расти естественным образом. Одного адреса e-mail, указанного в About окне продукта, стало мало.
На сайте появился стандарт – Contact Us, с которого была настроена автопересылка e-mail писем на ящики QA, PM, CEO. Поскольку продукт был достаточного качества, которое было достигнуто 100% занятостью тестировщика пока не расширили обязанности до сотрудника техподдержки, то отдельного сотрудника для ведения техподдержки не нанимали. У одного тестировщика на 4-5 разработчиков хватало продуктовых знаний и способности совмещать весь цикл техподдержки (приём-составление-отправка сообщений, воспроизведение проблем и оценка предложений, оформление задач в BTS).
На сайте также был организован Форум, через который стали поступать отчёты пользователей о багах и предложениях. Нотификации о новых сообщениях в форуме автоматически рассылались на e-mail адреса QA, PM, CEO. Техподдержка всех уровней всё ещё была на плечах одного человека. Конечный вариант ответа утверждался руководством в плане английской грамматики и общей политкорректности. Для сокращения излишней работы шефов было принято решение о составлении шаблонов ответов: структура заголовка и подписи, набор стандартных фраз и ответов на идентичные вопросы.
Исторически сложилось так, что e-mail клиент ящика техподдержки был TheBat. Все письма удалялись с сервера и хранились на одной машине. Использовались полезные свойства клиента: расфасовка писем по папкам, авто-сохранение копии ящика по таймеру, поиск по письмам, блокировка неотвеченных писем для контроля работы техподдержки. Единый ящик копил базу писем пользователей и не засорял сайт (сервер). Ещё один положительный момент TheBat выявился при общении с разноязычными пользователями, когда Outlook стал автоподменять некоторые символы на русско-язычную раскладку (например, двойные кавычки открытие-закрытие, символы больше-меньше в html-формате). Такие символы не отображались или подменялись в ответах пользователям, и смысл текста искажался, что подрывало авторитет компании.
Электронные платежи, увеличенные объёмы серверов, ускорение загрузок сайта позволило распространять инсталлятор десктопного продукта через WEB. Хотя продукт и состоял из ядра и эдонов, но инсталлятор приходилось собирать единым большим файлом. Когда в версию вносились незначительные изменения, то юзеру было накладно качать полный большой инсталлятор. Поэтому апдейты решено было делать отдельными мелкими файлами. Инструкция по установке таких апдейтов была сложная и длинная, поэтому для упрощения жизни конечному пользователю был придуман OSD Updater.
Общение с пользователями через разные средства (direct e-mail, Forum, Contact Us) осложняло работу техподдержки, поэтому был придуман OSD Messenger.
OSD (Online Support Desk) модуль продукта SQLDetective стал выполнять полноценно всю работу техподдержки: переписка с пользователями, распространение апдейтов.
Как обычно конечный пользователь  десктопного продукта общается с разработчиком? Открывает сайт, чаще ещё и логинится, а потом выбирает более удобный вариант: Contact Us, Forum, Download  Updates, Release Notes. Чтоб написать небольшое сообщение без прикреплений обычно используют Contact Us форму. Чтоб сообщить о проблеме или выяснить особенности программы, пишут в Forum. Чтобы скачать обновления или купить продукт, открывают Download и Buy Now, предварительно сверившись по Release Notes об исправленных проблемах и новых возможностях. Все эти неудобства (большое множество путей с неизвестным маршрутом)  устраняются одним модулем в десктопном продукте – OSD.
Преимущества Contact Us есть только для пользователя: не надо регистрироваться на сайте, связь осуществляется быстро, бесплатно, сохраняя конфиденциальность сообщений. Недостатки для пользователя: к таким сообщениям не делают возможности прикрепить файлы (логи, скриншоты), чаще не делают копию сообщения на ящик отправителя, нет подтверждения о получении, недостаточный объём текста можно отправить. У техподдержки тоже в этом случае больше проблем, нежели преимуществ: нет привязки к данным пользователя (тип лицензии, оплаченные сервисы), приоритета и градации сообщения, настроек программы или screenshots.
Преимущества Direct e-mail сообщения для пользователя: не нужна регистрация на сайте, можно любой e-mail использовать, прикреплять картинки, файлы, текст не ограничен размером, бесплатно, индивидуально. Нет гарантии получить конфирмацию, есть опасность пересылки спама и вирусов. Тех.поддержка получает дополнительные файлы с настройками или логами и картинками, но всё также нет привязки к базе зарегистрированных пользователей со списком оплаченных сервисов, тип и важность сообщения определяется самим производителем-фиксатором.
Среди преимуществ Forum для пользователя можно отметить: вопросы и ответы сгруппированы по продуктам и темам, FAQ, модератор отсекает спам, бесплатно. Недостатками являются обязательность регистрации, не всегда есть возможность опубликовать картинки и логи, отсутствие защищенности конфиденциальных данных. Техподдержке такой тип общения помогает определить версию продукта по информации зарегистрированного пользователя, нет необходимости дублировать ответы на одинаковые вопросы. Но также нет полной информации о проблеме ввиду отсутствия конфиденциальности в публикуемых данных.
Зарегистрированный на сайте пользователь может скачать инсталлятор или патч для текущей купленной версии. Но для этого нужно открыть сайт, залогиниться, выбрать нужный файл, как-то его сохранить и выполнить, самостоятельно определив возможность апдейта.
Поняв и оценив все неудобства пользователя компания Conquest создала утилиту для общения конечного пользователя с группой техподдержки и разработчиками. OSD – Online Support Desk.
OSD Messenger, встроенный в десктопный продукт, является фактически e-mail клиентом. На стороне пользователя сообщения сгруппированы по стандартным папкам "Отправленные" и "Принятые", в рамках которых разделены по значимости: General, Suggestion, Support, Other, News. Значимость и приоритет сообщения выбирает сам юзер при создании сообщения, кроме News, присылаемых компанией в одностороннем порядке (своеобразная реклама деятельности компании).
Переписка через OSD хранится в базе, респонденты идентифицируются по ключу лицензии и ПК, с которого ведётся переписка. Пользователи триальных версий тоже имеют уникальные идентификаторы, но переписка не ограничена триальным периодом в отличие от возможности апдейтов. Поэтому у техподдержки и отдела маркетинга всегда есть под рукой информация для анализа. Сообщение содержит следующие параметры: уникальный номер сообщения со сквозной нумерацией входящих и исходящих сообщений; уникальный идентификатор пользователя в зависимости от лицензионного ключа и используемого ПК; идентификатор продукта, название и страна владельца ключа автоматически считываются из лицензии; имя пользователя и e-mail (юзер получит на него нотификацию об отправленном в OSD ответе) вводятся вручную самим юзером при создании первого сообщения и хранятся в настройках приложения на конкретном ПК; тема сообщения вводится вручную для каждого нового сообщения (кроме авто-создаваемых из EurekaLog); тип и приоритет сообщения юзер выбирает из списка для каждого нового сообщения; текст сообщения юзер вводит вручную, для автосформированных из EurekaLog имеется шаблон, для писем с историей предыдущие тексты видны только в режиме просмотра и недоступны для редактирования; пользовательские прикрепления разрешены стандартных типов, кроме исполняемых файлов, размером не более 4Мб как ограничение базы с сообщениями; в числе стандартных прикреплений лог приложения и лог ошибки в формате EurekaLog, скриншот рабочего стола при логировании ошибки с помощью EurekaLog, настройки приложения из реестра и файлов, настройки аудитора кода, параметры операционной системы и клиентов базы Oracle, некоторая инфа о лицензии продукта. Все эти данные позволяют быстро и эффективно, без лишних вопросов юзеру решать описанную проблему сразу на первой линии техподдержки.
Сообщение можно создать в несколько приёмов, для этого имеется папка Drafts. В последних версиях продуктов добавлена возможность создавать черновики сообщений без наличия Интернета, который ранее использовался для присвоения уникального номера сообщению. Теперь он создаётся в момент отправки на сайт.
К сожалению, пока что стандартные прикрепления актуальны на момент просмотра сообщения или на момент отправки.  Параметры системы, настройки приложения и системы могут быть изменены с момента появления ошибки и до момента отправки сообщения, и это может исказить условия проблемы. А также они не сохраняются при сохранении черновика.
Каждое сообщение, отправленное из OSD Messenger, регистрируется в базе и юзеру моментально отправляется ответ с подробностями о принятом сообщении: присвоенный уникальный номер, планируемая дата ответа, объём принятых прикреплений. Тем самым выказывается юзеру уважение о каждом его посте.
При появлении нового сообщения юзера в базе на ящик техподдержки высылается нотификация с важными подробностями, достаточными для рассмотрения проблемы: уникальный номер сообщения; параметры лицензии и юзера для определения доступных возможностей и приоритетов ответа; срок отправки ответа; линки для скачки прикреплений; дубликат заголовков и текста сообщения. Подробности о лицензии (оплаченный сервис техподдержки, срок действия лицензии, купленные эдоны) ранжируют сроки ответа: триальщики и пользователи с оплаченным сервисом должны получить ответ в день получения сообщения, но не позже двух рабочих дней; бета-тестерам ответы можно отправлять на следующий день после получения, но не позже 7 рабочих дней; пользователям с оконченной лицензией и с оплаченной лицензией, но без оплаченного сервиса техподдержки, ответ отправлять спустя 5 дней после получения, но не позже 10 дней. Такие сложности были придуманы как маркетинговый ход для покупки юзерами годового сервиса техподдержки. Подробности об эдонах из лицензии дают понимание о функциональных ограничениях на стороне пользователя.
Наличие нотификаций о сообщениях пользователя исключает утечку персональной инфы за пределы серверов и сети компании. Доступа к корпоративным ящикам и сайту достаточно в локальной сети для поддержания политики безопасности о нераспространении информации. С 2014 года команда разработки активно расширялась, на десяток разработчиков добрали трёх тестировщиков и распределили их по-продуктно. Каждому сотруднику техподдержки помимо личного корпоративного ящика определён был e-mail для ведения техподдержки. Но два ящика на сотрудника принесли только проблемы: команда стала путаться на какой ящик какого характера инфу отправлять; поскольку названия ящиков техподдержки унифицированы (например, tech-support-99), то имена владельцев путались до особого распоряжения об обязательной полной подписи владельца в теле письма и адресной книге.
Половинчато система получения и рассмотрения сообщений реализована на сайте, но поскольку на создание и переделку back-end для внутренних нужд всегда не хватает ресурсов и времени, то e-mail нотификаций вполне достаточно.
С полученной нотификацией техподдержка работает по следующей схеме. Тема нотификации префиксуется коротким именем продукта, а тестировщики распределены по-продуктно. Ответственный тестировщик при получении нотификации проводит расследование: воспроизводит проблему на билде, указанном в сообщении; пытается воспроизвести на последнем опубликованном билде, если он отличается от билда юзера; пытается воспроизвести на текущем разрабатываемом билде; при недостаточности знаний продукта обращается за помощью к продуктовым разработчикам. Любые подозрения об использовании лицензии уточняются с отделом маркетинга путём пересылки текущей нотификации топам с копией PM. Для выяснения таких проблем помогает база всех сообщений в разрезе пользователей. Поскольку сообщения на сайте время от времени архивируются, то удобней пользоваться e-mail клиентом, в котором за год добавляется около тысячи писем, а все прикрепления к письмам скачаны и лежат на быстром жёстком диске. Выявленные проблемы оформляются в BTS. Составляется черновой вариант ответа на английском языке (включаются пересылки прод.лидам в случаях сложных проблем), выделяется в пересылаемой нотификации особыми символами (одинарные фигурные скобки), сразу прописывается имя юзера по особо принятой схеме (первые пять ответов First Name + Last Name, остальные – только First Name), текст форматируется под обычный (форма ответов не располагает опциями html-форматирования, получаемые юзером ответы просматриваются как обычный текст), подпись конкретным именем отвечающего разрешена только для особых давних пользователей. Первый черновик отправляется лингвисту на проверку. Лингвист вносит исправления и добавляет второе выделение фигурными скобками, как признак пройденности вторичной проверки. Проверенный текст перенаправляется PM на утверждение технических и юридических сторон. При благополучном пройдении проверки у PM он разрешает отправку согласно графику (приписывает "OK" в начале пересылаемого письма) и отправляет первоначальному тестировщику, в иных ситуациях (ответ отложить или раньше времени отправить, ответ не соответствует ожиданиям) с соответствующей припиской нотификация возвращается на доделку тестировщику или лингвисту. Одобренный черновик ответа публикует тестировщик в строго отведённое время, чтоб пользователь в разных частях света не был потревожен e-mail нотификацией в его внерабочее время. Если юзер указал e-mail в OSD сообщении, то на него высылается нотификация о наличии ответа. Сам ответ юзер может прочитать только в OSD Messenger. После отправки ответа тестировщику тоже приходит нотификация об отправленном ответе с полным его текстом. Их фильтруют по папкам юзеров в e-mail клиенте.
Для выяснений всех обстоятельств проблемы техподдержке часто приходится беспокоить пользователя дополнительными вопросами. В Conquest было принято правило минимизации количества пересылаемых писем юзеру, которое может показать высокий уровень подготовленности кадров. В помощь для соблюдения этого правила, для сбора статистики отделом маркетинга, для полноты картины проблемы в сообщения OSD добавили авто-прикрепление настроек приложения, параметров системы и логи. Поскольку настройки приложения хранятся в разных местах (реестр, файлы в папках %AppData% и MyDocuments), то пользователю сложно выбрать и найти необходимый объём информации для пересылки в техподдержку. Но пользователь всегда должен иметь возможность просмотреть объём отправляемой информации, так как в ней может оказаться некоторая персональная/корпоративная тайна (пароли, параметры доступа и т.д.). Поэтому в рамках просмотра отправляемого сообщения должна быть возможность исключения настроек приложения и системы из пересылаемого прикрепления. В текущих версиях продуктов можно только увидеть список отправляемых файлов, без возможности просмотра и исправления их содержимого. Реализовать такое не сложно, но Conquest не тратит на это время, потому что каждый раз подписывается обещанием о нераспространении инфы третьим лицам. А отсутствие возможности править отправляемое стандартное прикрепление подрывает доверие пользователя, и во избежание недоразумений юзер совсем исключает стандартные прикрепления. Большая помощь техподдержке и программисту поступает из лога и скриншота EurekaLog. Внешнюю утилиту несложно встроить в десктопное приложение. При сложных багах утилита собирает информацию о приложении и системе (запущенные дополнительно приложения, выполненные команды приложения вплоть до номера строки в конкретном модуле/скрипте), которую можно напрямую отправить по электронной почте или в качестве прикрепления к OSD сообщению. Зачастую такой лог программисту говорит намного больше, чем картинка и описание шагов от юзера. Eureka может и сама составить письмо, но оно получается скупым, без настроек приложения и screenshot-а. А OSD сообщение имеет полноценный заголовок, развёрнутое тело и все прикрепления.
Описанная система техподдержки имеет много недостатков в случае текучки кадров, из-за задержек при работе с почтой, архивы базы сообщений разбросаны по разным машинам, клиент TheBat накладно переносить и распространять на другие машины. К тому же базы OSD, Contact Us и Direct сообщений разрознены. Поэтому была запущена реорганизация работы отдела техподдержки. Первым шагом был перенос архива переписки с пользователями из TheBat в Thunderbird. Процесс растянулся на несколько дней, так как нужно было каждую папку экспортировать отдельно для файлов "msf". В очередной раз пришлось отказаться от Outlook из-за его неудобства экспорта-импорта и последующих проблем излишнего форматирования текстов. В качестве второго шага было принято правило рассылки черновиков с ответами всем членам первого уровня техподдержки для повышения знаний продуктов. Но очень скоро выяснилось, что данное правило спамит сильно и отвлекает тестировщиков от своего продукта. Для исключения недостатков и объединения OSD сообщений с Contact Us в единую базу было предложено отказаться от почтовых пересылок за счёт хранения и обработки всей информации на сайте, но предложение усовершенствовали до более лёгкого в реализации – создавать задачи в Jira автоматически из сообщений пользователей. Если к Jira привлечь топов, то такая система имела бы место жить и эффективно работать. Но Product Manager никак не желал открывать внутреннюю BTS верхнему руководству. Здесь же аукнулась проблема языка межкомандного общения (с топами только по-английски, внутри разработчиков по-русски), которая не всегда позволяет полноценно описать и понять проблему ввиду ограниченности знаний. А пока техподдержка оборудована нотификациями о новых сообщениях, о предстоящем окончании срока отправки ответа, о просроченной отправке ответа.
Для бета-тестеров одно время существовала система публикации вопросов и ответов OSD сообщений, но её прикрыли во избежание обнародования всех продуктовых проблем. Даже в созданных группах соц.сетей модератор запрещает обсуждать какие бы-то ни было продуктовые проблемы и даже предложения.
В Conquest отказались от Forum, так как "OSD Messenger + Contact Us" решают все проблемы в полной мере, на сайте предостаточно описательной инфы продуктов и проводятся вебинары (по запросу).
Вторая немаловажная часть OSD – это Updater. Пользователю десктопного продукта со сложной структурой ядра и плагинов часто сложно определить наличие и доступность апдейтов. Большую проблему обновления десктопных продуктов приносят в ручном режиме. Хотя на сайте и существует блок аккаунта пользователя лицензий, но и в нём бывает сложно определиться – что скачать, куда и как ставить. OSD Updater в десктопном продукте с подключением к интернету выполняет апдейт в автоматическом режиме исходя из данных лицензии и установки: определяется пакет доступных обновлений, скачивается и распаковывается с достаточным количеством перезапусков.
OSD Updater может присылать и применять ключ для апгрейда. Но во всех других случаях (утеря, докупка или прерывание AMS сервиса, увеличение количества лицензий, смена персональных данных) дубликат или новый ключ можно получить только через сайт. Это предложение не запущено в разработку, поскольку ни один из реальных пользователей пока что не запросил подобное.
Для пользователей с очень закрытой системой, то есть без доступа в Интернет, была сделана доработка OSD Updater через файловую систему. В этом случае администратор продукта скачивает апдейт с сайта и выкладывает в общий локальный ресурс, а в приложении выставляется настройка на этот локальный ресурс. Но даже в режиме файловой системы апдейты могут определяться и устанавливаться автоматически при запуске приложения. OSD Updater в desktop приложении работает как и тихие апдейты сегодняшних web-приложений, сайты: стартует с приложением; определяет тип, версию приложения и ключа; определяет место установки конкретной версии; предлагает доступный билд или версию, если оплачен upgrade; проводит переинсталляцию; качает и применяет ключ новой версии (и в многопользовательской версии для нескольких филиалов). Юзеру остаётся только откинуться на кресле и подождать пару минут, не забыв кликать по кнопкам Next и OK.
Для заканчивающихся ключей и AMS (Annual Maintenance Support) придумали нотификатор в трее. Он может работать без Интернета, имеет настройку от спама.
В 2009 году линейка продуктов пополнилась ClearSQL и ClearDB Documenter. Для них OSD было вынесено в самостоятельную библиотеку и внедрено в оба продукта. В 2016 году появился бесплатный docuVIEWER, который тоже планируют пополнить модулем OSD.

четверг, 7 июня 2018 г.

Внутренний монолог тестировщика

(рубрика "Театр и Тестирование")
О внутреннем монологе ("ВМ") в актёрском мастерстве сказано не мало:
"Режиссерские уроки К. С. Станиславского"
"ВНУТРЕННИЙ МОНОЛОГ"
"И. И. Судакова внутренний монолог и «зоны молчания» Внутренний монолог в жизни. Роль и значение"
Этот же приём вполне применим и в мастерстве тестировщика, особенно в период передачи навыков. Техника внутреннего монолога помогает не упустить тонкие моменты программного продукта ("ПП").

Входными параметрами ВМ актёра являются: придуманная (додуманная самим актёром или режиссёром-постановщиком) биография роли, уровень взаимоотношений с остальными действующими лицами, время и место действия.
Входными параметрами для ВМ тестировщика можно считать знания
- об устройстве, на котором работает  ПП;
- системных требований;
- структуры ПП и связей составляющих его модулей;
- условий тех.задания;
- кода ПП для тестов "чёрным ящиком".

Шаги ВМ тестировщика просты и в какой-то мере пересекаются с техникой "Ударный тест". Необходимо вслух комментировать каждое своё действие в зависимости от реакции тестируемого устройства и ПП. Из-за "проговаривания" всех действий мыслительный процесс и последующие действия тестировщика приобретают логичность, ограничиваются необходимостью, отсекаются излишние тесты, формируются дополнительные кейсы. Поскольку мысль быстрее звука, то без ВМ тестировщик может упустить важные непроверенные места. 
Рассмотрим пример.
Тех.задание: проверить получение почты.
Системные параметры: персональный компьютер, операционная система, Intranet, клиент почтовой программы.
ВМ тестировщика начинается с момента включения компьютера комментариями о логичной и своевременной работе запускаемых устройств и программ. Время отклика клавиатуры и монитора напрямую определяет последующую работу в интерфейсе почтового клиента. Некоторые верят в ауру пользователь-компьютер, хотя это чистая физика - передача отрицательной или положительной энергии, Поэтому перед тестом стоит настроить своё внутреннее состояние на нейтральную волну, дабы избежать зависаний ПП, и комментировать только факты.
- Нажата кнопка включения компьютера. Через полсекунды завертелся диск, моргнул сигнал клавиатуры, монитор засветился с трёх-секундной задержкой. Сверю настройки компа и монитора, и если всё в порядке, то увеличу время теста за счёт отклика монитора. Упомянуть об этом в примечаниях к тест-заданию.
- Операционная система загрузилась в стандартном режиме. Автоматически прошло обновление OS. Будем надеяться, что патч операционки не снёс ранее установленный и настроенный почтовый клиент, региональные параметры (язык, дата, время и т.д.). А ведь дата и время могут обнулиться, если села батарейка на материнской плате, так что проблему не стоит сразу приписывать на счёт обновления. Перезапуск компа проверить не помешает, ведь второй раз обновления OS уже не должно быть. 
- Внутренняя сеть подключилась в стандартном режиме без замечаний. Значит стоит ожидать наличие новых писем.
- Почтовый клиент открылся из автозапуска благополучно. Перезапуск приложения не помешает проверить с иными параметрами: проверять наличие новых входящих сообщений, отправлять исходящие, сообщать о задачах текущего дня.
- Нотификация о новых сообщениях появилась мгновенно, но в папке "Входящие" пусто. Возможно письма ушли в "Спам", как это было недавно с обильно присылаемой рекламой. А скорость появления окон говорит об излишних тестах на отклик монитора.

В примере перечислены мысли только для смоук-теста от юниора-тестировщика. Но если показательную тест-сессию проводит профессионал в иных областях, не только в очевидном функционале, а разбирающийся в usability, penetration, то ВМ уйдёт в его область значимости.

Итогом ВМ актёра является проникновенная игра, когда искусство воспринимается как натуральность, а не искусственность.
При передаче навыков в рамках показательных тест-сессий описанная техника является универсальным методом обучения. В повседневной работе тестировщик, применяющий ВМ, не пропускает критичные баги и вовремя акцентирует внимание разработчиков на спорных реализациях.

среда, 23 мая 2018 г.

Успех-2018


Итоги XVIII Всероссийского фестиваля любительских театров "УСПЕХ" в усадьбе А.Н. Островского села Щелыково Костромской области 18-22 мая 2018 года.

Организаторы:
- Министерство культуры Российской Федерации
- Государственный Российский Дом народного творчества имени В.Д Поленова
- Костромской областной Дом народного творчества
- Государственный мемориальный и природный Музей-заповедник А.Н. Островского "Щелыково"
- Санаторий СТД РФ "Щелыково"
- Куц Марина Ивановна - руководитель проекта, зав.отделом театрального искусства и детского художественного творчества Государственного Российского Дома народного творчества имени В.Д. Поленова
- Абдуллина Динара Маратовна - администратор фестиваля, специалист отдела театрального искусства и детского художественного творчества Государственного Российского Дома народного творчества имени В.Д. Поленова
- Просвирова Наталия Леонидовна - администратор фестиваля, зав.отделом народного творчества Костромского областного Дома народного творчества
- Никифорова Екатерина Юрьевна - администратор фестиваля, зав.отделом методической и информационно-аналитической деятельности Костромского областного Дома народного творчества

Участники
№ п/п Коллектив Город Произведение Режиссёр
1 Заслуженный коллектив народного творчества Народный театр "Полином" г. Кострома А.Н. Островский "Бедность не порок" Ирина Люстрова
2 Народный молодёжный театр эстрадных миниатюр "Зеркало" г. Заволжье, Нижегородская область Нил Саймон "Дураки" Татьяна Тюрина
3 Народный коллектив театр "Лица" Кемеровская область, пгт Тяжинский "Чудики" по рассказам В.М. Шукшина Марина Чипелева
4 Народный театр "Левый берег" Ярославская область, г. Тутаев О. Богаев "Марьино поле" Светлана Асафьева
5 Ассоциация Кольчугинских театров Владимирская область, г. Кольчугино А.П. Чехов "Шведская спичка" Александр Рыжов
6 Образцовый молодёжный театр "Начало" г. Хабаровск "Венецианский переполох" по мотивам пьесы К. Гольдони "Слуга двух господ" Марина Ефремова
7 взрослая группа Образцового театрального коллектива "Отражение" Свердловская область, г. Нижний Тагил "Думы" по произведению С. Алексиевич "У войны не женское лицо" Лариса Попова
8 Молодёжный народный театр "Шлагбаум" г. Красноярск Ульрих Хуб "Ковчег отходит ровно в восемь" Людмила Ефимова
9 Думнов-Театр г. Владимир Вяч. Шишков "Спектакль в селе Огрызове" Яков Рубин
10 Народный коллектив театр драмы "Пятое время года" г. Саратов "Ловушка" по мотивам произведений Агаты Кристи Наталья Иванова
11 Народный театр ДК "Юбилейный" Удмуртская Республика, г. Воткинск И.А. Крылов "Урок дочкам" Галина Юкова
12 Народный самодеятельный коллектив Театр Танца г. Ярославль А. Косов "ЮМОРИАНЦЫ" Антон Косов

Мастер-классы:
- сценическое движение, пластика (В.Е. Пивоваров)
- теория драмы, сценическая речь (Т.И. Уфимцева)
- режиссура, актёрское мастерство (Е.В. Анохина)
- режиссура драмы (И.А. Фокин)
- акция "Ночь музеев" (Государственный мемориальный и природный Музей-заповедник А.Н. Островского "Щелыково")
- ежедневные обсуждения просмотренных спектаклей с жюри, режиссёрами, ведущими актёрами и иными заинтересованными участниками фестиваля

Жюри фестиваля:
* Анохина Елена Васильевна - актриса театра и кино, театральный режиссер, педагог кафедры мастерства актера Школы-студии МХАТ
* Пивоваров Владимир Ефремович - актёр театра и кино, каскадёр, заслуженный артист Российской Федерации, член Профессиональной Ассоциации каскадёров России, постановщик поединков и трюков в кино, профессор РАТИ-ГИТИС. Член Международной гильдии режиссёров по пластике
* Уфимцева Татьяна Игоревна - режиссер, актриса театра и кино, драматург, киносценарист, Заслуженная артистка Российской Федерации
* Федоренко Елена Геннадьевна - театровед, заведующая отделом театра и музыки газеты «Культура», кандидат искусствоведения, театральный критик
* председатель жюри, Фокин Игорь Алексеевич - советский и российский актёр театра и кино, актёр и режиссёр Московского театра Ленком, заслуженный артист России

Награды:
Номинация Произведение Награждённый Организация
от ФГБУК "ГРДНТ им. В.Д. Поленова" (директор - Пуртова Тамара Валентиновна) за вклад в развитие любительского театрального творчества России А.П. Чехов "Шведская спичка" Александр Рыжов Ассоциация Кольчугинских театров, Владимирская область, г. Кольчугино
О. Богаев "Марьино поле" Светлана Асафьева Народный театр "Левый берег", Ярославская область, г. Тутаев
"Венецианский переполох" по мотивам пьесы К. Гольдони "Слуга двух господ" Марина Ефремова Образцовый молодёжный театр "Начало", г. Хабаровск
гран-при А.П. Чехов "Шведская спичка" Ассоциация Кольчугинских театров Ассоциация Кольчугинских театров, Владимирская область, г. Кольчугино
лауреат О. Богаев "Марьино поле" Народный театр "Левый берег" Народный театр "Левый берег", Ярославская область, г. Тутаев
"Венецианский переполох" по мотивам пьесы К. Гольдони "Слуга двух господ" Образцовый молодёжный театр "Начало" Образцовый молодёжный театр "Начало", г. Хабаровск
Вяч Шишков "Спектакль в селе Огрызове" Думнов-Театр Думнов-Театр, г. Владимир
А. Косов "ЮМОРИАНЦЫ" Народный самодеятельный коллектив Театр Танца Народный самодеятельный коллектив Театр Танца, г. Ярославль
диплом I степени Нил Саймон "Дураки" Народный молодёжный театр эстрадных миниатюр "Зеркало" Народный молодёжный театр эстрадных миниатюр "Зеркало", г. Заволжье, Нижегородская область
Ульрих Хуб "Ковчег отходит ровно в восемь" Молодёжный народный театр "Шлагбаум" Молодёжный народный театр "Шлагбаум", г. Красноярск
диплом II степени "Чудики" по рассказам В.М. Шукшина Народный коллектив театр "Лица" Народный коллектив театр "Лица", Кемеровская область, пгт Тяжинский
А.Н. Островский "Бедность не порок" Заслуженный коллектив народного творчества Народный театр "Полином" Заслуженный коллектив народного творчества Народный театр "Полином", г. Кострома
спектакль "Думы" по произведению С. Алексиевич "У войны не женское лицо" взрослая группа Образцового театрального коллектива "Отражение" взрослая группа Образцового театрального коллектива "Отражение", Свердловская область, г. Нижний Тагил
диплом III степени И.А. Крылов "Урок дочкам" Народный театр ДК "Юбилейный" Народный театр ДК "Юбилейный", Удмуртская Республика, г. Воткинск
"Ловушка" по мотивам произведений Агаты Кристи Народный коллектив театр драмы "Пятое время года" Народный коллектив театр драмы "Пятое время года", г. Саратов
режиссура О. Богаев "Марьино поле" Светлана Асафьева Народный театр "Левый берег", Ярославская область, г. Тутаев
"Венецианский переполох" по мотивам пьесы К. Гольдони "Слуга двух господ" Марина Ефремова Образцовый молодёжный театр "Начало", г. Хабаровск
яркое решение массовых сцен А.Н. Островский "Бедность не порок" режиссёр - Ирина Люстрова Заслуженный коллектив народного творчества Народный театр "Полином", г. Кострома
художественное оформление Инсценировка по рассказам В.М. Шукшина "Чудики" Народный коллектив театр "Лица", Кемеровская область, пгт Тяжинский
художественное оформление в костюмах "Венецианский переполох" по мотивам пьесы К. Гольдони "Слуга двух господ" Образцовый молодёжный театр "Начало", г. Хабаровск
сценография и костюмы Нил Саймон "Дураки" Татьяна Тюрина Народный молодёжный театр эстрадных миниатюр "Зеркало", г. Заволжье, Нижегородская область
сценография О. Богаев "Марьино поле" Народный театр "Левый берег", Ярославская область, г. Тутаев
актёрский ансамбль О. Богаев "Марьино поле" Народный театр "Левый берег" Народный театр "Левый берег", Ярославская область, г. Тутаев
"Думы" по произведению С. Алексиевич "У войны не женское лицо" взрослая группа Образцового театрального коллектива "Отражение" взрослая группа Образцового театрального коллектива "Отражение", Свердловская область, г. Нижний Тагил
Номинация Роль Произведение Награждённый Организация
лучшее исполнение мужской роли второго плана "Венецианский переполох" по мотивам пьесы К. Гольдони "Слуга двух господ" Дмитрий Сергеев Образцовый молодёжный театр "Начало", г. Хабаровск
лучшее исполнение женской роли второго плана Голубка Ульрих Хуб "Ковчег отходит ровно в восемь" Дарья Кладкина Молодёжный народный театр "Шлагбаум", г. Красноярск
лучшее исполнение эпизодической роли Сидорка И.А. Крылов "Урок дочкам" Егор Седов Народный театр ДК "Юбилейный", Удмуртская Республика, г. Воткинск
исполнение мужской роли Сенька Громов "Чудики" по рассказам В.М. Шукшина Дмитрий Доротенко Народный коллектив театр "Лица", Кемеровская область, пгт Тяжинский
Емельян Глухов "Чудики" по рассказам В.М. Шукшина Народный коллектив театр "Лица", Кемеровская область, пгт Тяжинский
Граф Юзикевич Нил Саймон "Дураки" Евгений Орлов Народный молодёжный театр эстрадных миниатюр "Зеркало", г. Заволжье, Нижегородская область
Леон Степанович Толчинский Нил Саймон "Дураки" Иван Морозов Народный молодёжный театр эстрадных миниатюр "Зеркало", г. Заволжье, Нижегородская область
Труффальдино "Венецианский переполох" по мотивам пьесы К. Гольдони "Слуга двух господ" Андрей Кучинский Образцовый молодёжный театр "Начало", г. Хабаровск
исполнение женской роли Молли Рэлстон "Ловушка" по мотивам произведений Агаты Кристи Мария Зеленцова Народный коллектив театр драмы "Пятое время года", г. Саратов
Клариче "Венецианский переполох" по мотивам пьесы К. Гольдони "Слуга двух господ" Валентина Москалёва Образцовый молодёжный театр "Начало", г. Хабаровск
Смеральдина "Венецианский переполох" по мотивам пьесы К. Гольдони "Слуга двух господ" Анна Бурцева Образцовый молодёжный театр "Начало", г. Хабаровск
Анна Ивановна А.Н. Островский "Бедность не порок" Светлана Дюкс Заслуженный коллектив народного творчества Народный театр "Полином", г. Кострома



суббота, 12 мая 2018 г.

Метроном

Любой команде нужны моменты встряски и расслабления. Эту роль обычно выполняют психологические игры. Но не всякую игру можно применить в распределённой команде.
Игра "Метроном" предназначена для развития единства духа команды, выявления лидеров и отверженных, концентрации внимания, развития умения слушать и слышать окружающих, настраивания внутреннего секундомера.
Участники игры не делятся на команды, не нужен ведущий. Все на равных ступенях, идеальна для agile-команды.
Уровни игры: простой (все видят всех, взглядом можно подать сигнал готовности), сложный (никто никого не видит, закрыть глаза или выключить камеры).
Место проведения: аудитория с возможностью встать на расстоянии более 70см друг от друга (расстояние вытянутой руки и более, чтобы не нарушать интимную зону) или конференц-звонок с видео-связью.
Условия и шаги игры:
- группа играющих замолкает и настраивает равномерность дыхания;
- начало отсчёта стартует через 3-5-7.. секунд после наступления полной тишины;
- каждый следующий игрок говорит число/слово через определённый в начале промежуток 3-5-7.. секунд;
- последовательность произносимых слов может быть разнообразная: простой числовой ряд, только простые числа, делители числа 2 или 3, всем известное стихотворение (каждый по слову или строке), наименования модулей или компонентов разрабатываемого продукта (без повторений);
- игра считается прерванной:
-- если промежуток был нарушен;
-- если два участника произнесли очередное слово(число) одновременно.
- прерванная игра начинается с начала;
- последовательность игроков определяется каждым участником самостоятельно, в результате чего мудрый руководитель может определить или назначить на текущий день себе замену, а отстающим уделить внимание по поддержке коллективом;
- в процессе игры каждый участник обязан сказать "своё" слово/число один раз или несколько, если позволяет время и количество используемых элементов последовательности. При этом во втором и последующих кругах порядок участников не должен повторяться.

Пример игры в распределённой команде.
Маша, Витя, Коля, Юля, Саша, Катя, Толя, Ваня, Мила, Зося созваниваются по конференц-связи.
Договариваются пройти два тура чётных чисел.
Выключают видео-камеры, оставляют звук включенным все (просят соблюдать тишину в своих помещениях).
Скрам-мастер предлагает начать игру, за период принимается промежуток в 3 секунды, все замолкают и внутренне считают секунды (слышно только дыхание или стук сердца).
Число "два" произносит тот, кто считает обязанным начать игру. Этот человек на сегодняшний день самый собранный и ответственный, который может предложить правильные идеи или решение. Допустим, это был Толя.
Через три секунды продолжил последовательность Коля числом "четыре". Всем ясно, что он более тесно настроен на волну Анатолия, либо они друзья.
Предположим, что далее игра равномерно продолжается, и каждый участник называет ровно через три секунды: Мила - 6, Витя - 8, Катя - 10, Зося - 12, Юля - 15 и Маша - 14. Поскольку Юля ошиблась с числом, притом они вместе с Машей одновременно произнесли, то игра прерывается и начинается с начала. Но в этом случае команда не должна ожидать, что Толя опять начнёт отсчёт. Руководителю же стоит обратить внимание на собранность Маши с Юлей, вероятно стоит направить их на курсы повышения квалификации или просто организовать мастер-класс по производственной теме. С не успевшими поучаствовать Ваней и Сашей надо организовать беседу или анкетирование об их положении в коллективе, если до них так и не дошла очередь во всех проигранных турах.

Польза:
- при регулярном проведении игры "Метроном" на ежедневных утренних планёрках команда приобретает способность подстраиваться под общую скорость коллектива;
- в день выпуска продукта все концентрируются для выполнения совместной работы;
- регулярное перечисление модулей и компонентов продукта расширяет знания команды (новички заинтересуются необходимостью и расположением новых для них вещей).

Рекомендации:
- за неделю применения игры на одной последовательности наращивается скорость;
- для усложнения игры промежуток между элементами последовательности стоит увеличивать;
- если на одной последовательности (простой числовой ряд) набран темп, то на следующий раз необходимо брать иную последовательность (чётные или простые числа, всем известные стихи, модули и компоненты);
- если скрам-команда меняет мастера регулярно, то следующего мастера стоит назначать из числа начинающих игру чаще других, поскольку он явно показывает свои лидерские способности;
- для запинающихся и отстающих в игре необходимо проводить обучение в профессиональном направлении, поднимать их авторитет в трудовом коллективе;
- замыкающих игру можно ставить на задания, не имеющие пока логичного выхода и решения.

среда, 9 мая 2018 г.

ПроЛОГОведение

К чему   перемены?
"А я милого узнаю по ..." Картинке! Любой продукт нуждается в представлении, а постоянный в логотипе. Первые конкурсы художественного слова в г.Кольчугино обозначались кругом с лирой иль птичьим крылом. Но с приобретением статусности, приглашая в жюри преподавателей из Академии Театрального Искусства, логотип в своих очертаниях напоминал сцену с волнами кулис:
  2008г.

С приходом технологий театры отказываются от тяжёлых кулис, также и логотип конкурса откинул "занавес":
  2016г.

Проект набирал обороты, команда впитывала опыт профессионалов, анализировала собственные шаги. Логотип должен отображать смысл: театральность и художественное чтение - разные направления, каждый чтец несёт свою мысль. К изменению картинки подключился архитектор:
- сцену, как намёк на театральность, убрали;
- вновь появились крылья в качестве полёта души выступающих, притом с мощным остовом;
- шрифт "СЛОВО" напоминает о корнях лексики;
- "СЛОВО" балансирует как бы на весах, но город поддерживает разные точки зрения (исполнения) новых и давно известных произведений;
- точка над городом как сгусток энергии искусства в самом театральном городе Владимирской области.
  2018г.


Это был пример десятилетнего Российского продукта на волонтёрской основе.
Теперь рассмотрим "совершеннолетний (16-18)" продукт с российскими корнями и европейско-американскими вливаниями. В 2000-2002 годах создавался продукт для внутреннего пользования заводским АСУПом - Table Magic. Потребность в функциях на тот момент была не велика: удобный доступ к данным и сопутствующему коду. Данные в базе Oracle хранятся в таблицах, поэтому и соответствующее имя продукту было дано:
  2000г.

В мае 2002 года компанией RCS решено было предложить продукт сторонним пользователям за плату. Тут нашёлся помощник из Европы с опытом работы в Америке. Он предложил новое название, но в тех же сине-красных тонах:
  2002г.

Продукт развивался, дополнялся утилитами для разработчиков и администраторов баз данных. Через пару лет случилось очередное кардинальное изменение имени и раскраски продукта:
  2004г.

Пройдя сквозь пару кризисов из логотипа ушёл красный цвет и серый хвост:
  2010г.

Компания расширила линейку продуктов, но иконка сайта осталась равной логотипу первого продукта, не смотря на то, что логотип компании появился в далёком 2005 году с открытием сайта. Здесь сказалась непродуманность смены брендов:
5 частых ошибок при процедуре ребрендинга
7 смертельных ошибок ребрендинга

Размерность мониторов увеличивалась с годами, и картинка приобрела мелкие детали, а  подпись "отлетела" (видимо за ненадобностью):
  (на сайте)
  (в продукте с 2017г.)

Вместе с преображением логотипа первого, но не основного по мнению маркетинга, продукта началось изменение дизайна сайта. Попытки облегчить его и приблизить к пользователю обернулись многозадачностью единственного программиста и отсутствием профессионального тестировщика. Переход затянулся на полгода, по прошествии которого сайт "почернел" и переехал к иному провайдеру web-платформ.
Скриншот первой версии (осень 2017 г.):


До сих пор есть места, доступные в первой версии:


Второй вариант дизайна тоже живёт в рамках последней версии:


Таким был сайт до весны 2018г. с верхним блокированным и продуктовым меню:


Текущий вариант верхнего меню:


Текущий вариант нижнего меню:


В ходе ребрендинга цвет логотипа компании посветлел:


Продукты попытались поделить по цвету. Рекламный проспект распределил: красный ClearSQL, зелёный ClearDB Documenter, синий - SQLDetective.


А на сайте раскраска оказалась иной: синий ClearSQL, красный ClearDB Documenter, зелёный SQLDetective.




Менее полугода сайт пестрел разнообразием красок.
В предверии выхода последней версии сайта был создан сайт-спутник по отдельной тематике одного из продуктов - gdprdb.com. Теперь это одна из страниц перенесённого портала. Его дизайн пределил текущую версию: чёрная шапка, а под ней бесфоновый текст. В чём символизм? Скорее всего в торопливости и общерусском "так сойдёт".
Очередное перемещение с заменой домена посерило всё: первое меню стало чёрным с едва заметным серым выделением, второе меню тоже не блокированное тонко-голубое на белом фоне, все картинки в дымке. Но среди всей видимой серости радует одно - появились лица реальных разработчиков, первый шаг выхода из тени. Афиширование российских, а особенно крымской, персон - весьма отчаянный шаг в рамках санкций. А если США их применит к "своей" компании, то останутся госструктуры в числе пользователей?

Опять же убеждаюсь в том, что хорошее дело стоит толкового обдумывания, чтоб не превратить его в мартышкин труд.