понедельник, 26 августа 2019 г.

За кем пойдёшь?

При прослушивании доклада "Все, что тимлид должен знать о найме и увольнении" Степана Овчинникова меня затронуло нижеследующее.
"Тимлидами не рождаются, тимлидами становятся". В CSS техническим директором стал первый программист направления, а продуктовые лиды были им назначены после полугода работы некоторых набранных разработчиков, при этом команду тестировщиков оставил обезглавленной. Полагаю, причина была чисто этническая: шеф - привыкший к домашнему "гарему" татарин, а все тестировщицы женского пола. Якобы не желал насаждать иерархию, в команде все должны быть равны. Противоречие на противоречии. В итоге, и сам не знал, как правильно управлять тестированием, и никому другому не давал проявить мастерство.
Становление руководителем из программиста может быть благоприятным процессом, если он в силу своих возможностей дообучиться всё же их использует. Но если это закоренелый "царедворец" или того хуже азиат среди европейцев, то ничего, кроме построения покорной свиты, от него ждать не приходится, особенно демократии.
Особенного внимания заслуживают составляющие управленца: люди + процессы + производство. В этой триаде связующим звеном является "процессы". триггером для которых и является руководитель. При этом объём информированности самого лида и его подопечных регулируется теми самыми процессами. И если команда организована по принципам, описанным в докладе "Полная прозрачность в компании" Михаила Самарина, то шеф сам себе может облегчить заботы.
На собеседования кандидатов шеф CSS звал тимлидов только для того, чтоб они давали техническую оценку тестовой работы. Запрещая задавать вопросы о личностных качествах, PM сам себя обкрадывал и не давал выяснить "у порога" потайные стороны личности. А позже сваливал вину на сторожил за то, что на приёме не разглядели нежелательных элементов. Если же мне удавалось прорвать этот барьер, то мои рекомендации полностью были окуплены.
Ни на одном из собеседований, которые мне довелось подслушать, программистов не спрашивали о мотивах прихода в CSS, поскольку у руководства единый ярлык на всех - желание денег. Но через месяц общения мне раскрывались иные причины: кому-то не хватало коллектива или опыта, другим важно было применить знания на практике. И поскольку это не было в приоритете у начальника, то спрос с программистов постепенно становился не адекватен ожиданиям. В таких случаях мои конкретизирующие задачу разъяснения обеим сторонам рассматривались как "подсиживание руководства". Хотя, по факту - мной выполнялась работа фасилитатора и, в силу неравнодушия к судьбе проекта, приходилось забирать на свои плечи (читай "пятую точку") функции лида. Да, со временем это переросло в "серого кардинала", и я этот факт не скрываю. Но это был вынужденный шаг.
Последующее мотивирование на рабочую волну никак не было замечено в руководстве CSS. Инструменты брались только бесплатные и то, надо было предоставить существенные причины, чтобы их развернули на компах. А уж о покупке единственного (никакие иные не могли работать с самописным интерфейсом) в мире средства автоматизации для тестировщиков разговоры заканчивались отказом более 10 лет. Так тайком и роль завхоза-devops-а лежала на мне: кому дебаггер, кому скринсейвер подкинешь, а с первой тестировщицей на триальной версии урывками писали и запускали автотесты.
Результаты работы не могли мотивировать, потому что ограничивались лишь еженедельными "пузомерками" по количеству закрытых и запланированных задач. Даже на демках никто из разработчиков не мог толково пояснить, за что им можно гордиться, потому что главным было не личное достижение каждого, а только общепродуктовый рост. Очень сильно меня удивила приписка в резюме шефа о его применении мотиваторов. Если это и было, то только к одному его любимчику, с которым он ездил на всякие конференции, а на нас "смертных" всегда не было денег у фин-директора. На развитие членов команды PM-у всегда было наплевать, поэтому самостоятельно приходилось проходить курсы и слёты профессионалов за собственные средства в отгульные дни-часы.
К сожалению, Степан пропустил пункт построения команды или сплочения коллектива и сразу перешёл к сохранению людей. Но наблюдение и своевременная корректировка процессов вполне могла бы помочь вам, если вы начинающий тимлид. А вот конкретный пример про короткое тесное общение весьма показателен. Шеф CSS подменял его ежедневным стендапом, где вся команда была на виду. Но это иной уровень, хоть и регулярный, и результат такого официоза играл не в его пользу. Многие вещи мне приходилось допояснять в приватных чатах. Опять же, выполнять роль руководителя для сдерживания коллективности.
Вторым шагом по сохранению людей Степан считает повышение планки.  Он прав. Но мои вопросы к расслабившейся тестировщице были восприняты в штыки, а шеф усугубил конфликт вместо поиска причин. Он сам никак не наблюдал за нами, поэтому ему было наплевать на наши темпы. В итоге, долг задач стал копиться и дошло до того, что РМ в один день сам без разбора убрал (то закрывал скопом, то удалял без разбору) из работы значительное количество задач. Правда потом их пришлось восстанавливать (опять же) мне, поскольку это "не царское дело". А, казалось бы, обрати он внимание, что скорость снизилась, дай ей передышку или новое что, скорее всего и не было бы последующих проблем (конфликт отношений, долг багов, дополнительная занятость по восстановлению невыполненного).
Ещё одним мотиватором заявлен профессиональный рост. Среди тестировщиков это никак не поощрялось, а наоборот пресекалось. Мои цитаты и ссылки на статьи, доклады были запрещены шефом, который посчитал это отвлечением от работы. Его слова: "Не надо здесь устраивать избу-читальню. Мы занимаемся работой.". Поэтому пришлось сделать закрытый канал в чате, только для узкого круга тестировщиков, где давались своевременные подсказки. А в среде разработчиков образование сначала пытались нарастить через индивидуальное code review (тимлиды и шеф заслушивали по отдельности каждого программиста, отчитывающегося за месячный код). Мне приходилось быть невольным слушателем таких "бесед". И когда лиды стали повторяться с советами для каждого, то наконец-то прислушались к моей идее объединять всех программистов в один час, где не только "чистили" код, но и обменивались глубиной познаний кодирования. Из пугающего "вызова на ковёр" проверка кода превратилась в познавательный диалог.
Поскольку, как уже упоминалось, шеф никогда не вёл беседы тет-а-тет, то мало о каких личных делах он был в курсе. В итоге, увольнял некоторых по причине "не оправдал ожидания". А матрицу компетенций попросил составить лишь однажды (без общекомандных оценок), когда CEO надумал расширять линейку продуктов. Тяга к знаниям никак не поощрялась, может поэтому все сборы команды ограничивались лишь распитием спиртного и разговорами на общие темы (табу было на рабочие и политические темы). Да, команду удалёнщиков сложно собрать, но раз в полгода это случалось. Два раза в месяц бывали ретроспективы, но и они ограничивались демагогией "как жить дальше".
Очень правильно Степан затронул проблему "неадекват". Подпишусь под всеми его шагами по выявлению и устранению подобного.
Отличное высказывание: "Принимая человека на работу сразу знай, за что его уволишь." Так и мы за любой товар платим - он стоит этой цены на рассчитываемый мной срок службы. Но вот слова шефа CSS, вернувшегося после временного кризиса компании, меня ошарашили: "Я научился увольнять. Мне это не сложно теперь." Он полгода поруководил проектом на стороне, новыми ему людьми, хвастал, что успел обновить почти всю команду. И этот ужас от высказанного продолжал наращивать негатив при каждом последующем увольнении у нас. Текучка в CSS после кризиса подпрыгнула в несколько раз (за первые десять лет выросли до 8 членов, но перед кризисом уволили шестерых; а за три года после кризиса состав обновлялся 4 раза, и после меня через год команду разогнали до исходных двух с половиной проггеров). А по поводу рассуждений Степана о правиле "на работе мы работаем" у меня когнитивный диссонанс с поведением шефа CSS и его любимчиком. Дело в том, что шефа по непонятной мне причине раздражало, что я постоянно остаюсь в офисе и доделываю ежедневку свою (оформить найденные баги всегда мешают неожиданные обсуждения). А вот многочасовые словоблудства любимчика о гаджетах, никоим образом не относящихся к предмету нашей разработки, он никогда не прерывал, а наоборот всецело поддерживал. Аналогичное непонимание всей команды вызывали увольнения трёх разработчиков, когда даже на наш вопрос: "Что такое они сделали не так, чтоб нам не повторить чужие ошибки" шеф отнекивался, и лишь твердил, как попугай: "Он не справился с возложенными на него надеждами. Я так решил. Вопрос закрыт.". От подобного "избавления от слабых" команда не становилась сильнее. Естественно, процесс расставания с этими выгнанными был мгновенным, и вопреки советам Степана логины аннулировались вечером перед утренним объявлением. В случае же со мной офисным пришлось терпеть мою жажду приносить пользу ещё пару недель - КЗоТ про сокращение обошли доп.соглашением. Местных бездельников, судачащих о домашних делах, коробила моя усидчивость при изучении проф.литературы и они выпроводили меня досиживать срок по сокращению штата дома. Полагаю, что истинной причиной стала моя докладная фин.директору о тех бесчинствах шефа, которыми он не давал команде работать в спокойной обстановке, о необходимости повышения его знаний и умений в области управления людьми. Как бы ни было прискорбно, но по всем видам руководителя из доклада "Buzzword Driven Management" Сергея Атрощенко у меня до сих пор перед глазами факты (чайка, хамелеон, кукушка и так далее) поведения вышеописанного шефа CSS.
А за каким лидом движетесь вы? Куда он вас приведёт?




воскресенье, 25 августа 2019 г.

Токсичный тестер

Кислотность, как качество тестировщика
Эпитет "токсичный" применяется к человеку не так давно, поэтому не всем ещё понятно его значение. И зачастую им подменяют ранее известные "упорный", "пристрастный", а то и утрируют смысл "заботливости". На сколько мне известно, применять определение кислотности начали молодые люди применительно к своим родителям или знакомым, которые постоянно пытались оградить неразумных от ошибочных шагов. Детям казалось, что им навязывают поведение скромных, ограничивают бесшабашность. Конечно же постоянная опека им надоела и взрослых стали называть "кислотными", отравляющими подросткам жизнь. Также, не желая разбираться в истоках проблемы, которая на самом деле крылась в самих "якобы не-кислотных", более сообразительных приятелей относили к изгоям. А ведь эти, названные "кислотными", на самом деле идут более верным путём.
В качестве примера могу предложить отрывок из шоу "Уральских пельменей", когда в баре собрались друзья вечером пятницы. А герой Мясникова им уже заказал и столик, и питьё с закуской. Благодаря тому же wi-fi-ю в момент разрешил споры, на что приятели и обиделись. Соглашусь, друзья собираются вечером в пятницу пообщаться. Но ведь Мясников предупредил ссоры своими зачитываниями неопровержимых фактов. Почему же его относят к "кислотным"? Да потому, что у них изначально не было тяги к спокойствию. Как же пятница может закончиться без мордобоя?! Более привычный финал для пахавших всю неделю умом мужиков. Мясников не дал случиться проблеме, уберёг от разногласий, а его отвергают. В ком корень зла? Угу, в тех, кто не желает думать, кто "а-ля на стиле" с нацепленной улыбкой.
Это довольно показательная миниатюра для понимания "войны" между командой разработки и тестировщиками. Мы тоже, как Мясников, знаем и предупреждаем от неверных шагов. А нас в конце концов обзывают "кислотными". Так что не расстраивайтесь, а гордитесь таким званием. По моему мнению, это более красочно описывает наши профессиональные качества. Если в вас недостаточно кислотности, то важные баги могут просочиться в публикуемый билд. Хотите добиться чистоты продукта, наращивайте в себе упорство и уверенность в знаниях. Пусть наших вопросов жуть, но в этом и состоит наша круть!  

пятница, 23 августа 2019 г.

Перегрузки

После прочтения статьи "Как спроектировать нагрузочный тест" Кристины Джеквони (Kristin Jackvony) в переводе Ольги Алифановой возникли нижеследующие дополнения.
* Для тестирования нагрузки базы в первую очередь обращаюсь к Explain Plan.
* Далее смотрим на наличие полезных индексов. Очень познавательный рассказ про индексирование есть в "Вся правда об индексах в PostgreSQL" от Олега Бартунова и Александра Короткова.
* Не менее важно использование кэширования. А в области данных вам в помощь станут CRUD матрицы.
* Если можете проверять белый ящик, то обращайте внимание на отсутствие излишних перерисовок интерфейса (Flowchart и Call Tree диаграммы покажут зацикленность и бесполезные повторы).

Foreign or local

Прочтение статьи "Тестирование локализации" Кристины Джеквони (Kristin Jackvony) в переводе Ольги Алифановой всколыхнуло во мне нижеследующие мысли.
* Благодарность автору за список, по которому можно автоматически строить тестирование приложения перед передачей пользователям из разных стран.
* Из личного опыта и по рекомендации программиста: если размер формы не критичен, то самое удобное расположение элементов - в один столбец, а не колоноками. Это позволяет не заморачиваться о длине подписей, что может быть критично на разных языках при масштабировании элементов интерфейса (например, ширина кнопки) по длине текста языка локализации.
** Особого внимания заслуживает свойство wrapped (перенос на следующую строку) у каждой подписи.
* Иметь все переменные в одном юните со всеми используемыми переводами - удобство для техписателя при проверке грамматики. Или же для всех подписей в продукте использовать внутреннюю базу (xml, sqlite), где хранить как основной язык приложения, так и все переводы. Такая структура приложения упрощает программирование и поддержку.
*Для лёгкого включения в тестирование локализации путешествуйте по разным странам, узнавайте их уклад и пристрастия напрямую, воспитывайте в себе толерантность. Понимание жизни других помогает в тест-дизайне локализации.

четверг, 1 августа 2019 г.

ТО о SD 5.1.1.160

Очередной build#160 продукта SQLDetective (SD) 5.1.1 выложен 18 июля 2019г. Пройдёмся по Release Notes (RNs).

IMPROVEMENTS  (85+0+80)/3=55%   минус (2,6+1+0,2)=3,8 баллов

Code Explorer (0,9+0,8+0,9+0,8)/4 = 85% готовности, минус (1+0,3+0,3+0,5+0,5)/5=2,6 пунктов за баги
• By default, the Code Explorer panel is now always open in the SQL Editor and Stored Program Editor.
По-умолчанию панель Code Explorer теперь всегда открыта в редакторах SQL Editor и Stored Program Editor.
В надежде на лучшее будем полагать, что наличие раскрытой панели Code Explorer является дефолтным только для первого открытия редакторов, так как в SQL Editor она не всегда нужна, например, DML запросы в этом дереве показаны лишь одной нодой, поэтому ничем не упрощают работу программисту. Постараемся в тестах не путать понятия "открыт" и "развёрнут", поскольку первое управляется кнопкой на тулбаре или опцией в контекстном меню, а второе - сплиттером открытого дерева.
По результатам общего теста (смотри ниже) для всех новшеств блока Code Explorer текущий пункт получает 0,9 балла, потому что кнопка тулбара показывает верно состояние дерева только в SQL Editor.
• It is now possible to toggle the visibility of the Code Explorer panel for each module separately.
Теперь возможно переключать видимость панели Code Explorer  для каждого модуля раздельно.
Напомню, что панель Code Explorer предназначена для визуализации PL/SQL кода, поэтому её наличие ожидаемо в следующих модулях и окнах: Stored Program Editor / main editor, SQL Editor / code editor, Trigger Wizard / Trigger Body / code editor, Job Wizard / General / What Execute, Sched.Job Wizard / Program / Inline Program / PL/SQL Block / code editor, Sched.Program Wizard / General / PL/SQL Block. Причём в Stored Program Editor и Trigger Wizard дерево существовало давно, а в SQL Editor добавили в SD 5.0, но из Trigger Wizard дерево как бы пропало в SD 5.1, поскольку апдейт не включает новую настройку (чуть позже опишу баг).
В целом новшество реализовано, но описание не конкретизировало модули, поэтому даю 0,8 балла.
• The “Code Explorer” page was removed from Preferences.
Страница "Code Explorer" удалена из настроек приложения.
Странно, что этот пункт не в отдельном блоке Removes и не в блоке компонента Preferences.
Проверка этого новшества заключается в трёх тестах: 1) функциональный - визуально проверить отсутствие страницы в окне Preferences; 2) недоделки (функционально-регрессионный) - в окне поиска Preferences не должны появляться убранные элементы; 3) регрессионный - восстановление (загрузка из файла) настроек приложения из предыдущей версии не меняет функционал. Функционально-юзабилити тест на замещение необходимо было бы проводить при отсутствии следующего пункта RNs.
Тест новшества положителен, но за неточности техписателя даю 0,9 балла.
• Added the “Toggle Code Explorer” command to the SQL Editor, Stored Program Editor, and Trigger Wizard pop-up menus.
Контекстное меню редакторов в окнах SQL Editor, Stored Program Editor и Trigger Wizard дополнено пунктом "Toggle Code Explorer".
Техписателю стоило уточнить, что пункт добавлен в блок Tools, а также функционал продублирован в IDic.
Тест новшества положителен, но за неточности техписателя даю 0,8 балла.

Для проверки минимальной функциональности открываем каждое из окон в режиме "чистой установки" (удаляем все настройки приложения из файловой системы и реестра), затем переоткрываем окна с включенным и отключенным предварительно деревом в этой же сессии приложения, третий шаг - открытие модулей с перезапуском приложения.  Для теста нужна матрица:
Для просмотра кликните по элементу
Если вы заметили, то этой матрицей мы одновременно проверяем все вышеописанные новшества. Проверки состояния пункта Tools/Togle Code Explorer в контекстном меню, состояния кнопки переключения дерева на тулбаре, состояния дерева expanded-split также можно сделать параллельно, но для полной детализации стоит расширить матрицу соответствующими строками.
Примечания. Первое открытие приложения "на чистую" всегда сопровождается автоматическим открытием SQL Editor, поэтому влияние модулей друг на друга проверяем полностью, а не опираемся на первый кейс. Поскольку SD позволительно запустить множество раз на одной машине, а некоторые настройки приложения временно работают из оперативки, то не лишним будет тест в трёх параллельных сессиях приложения (не подключение к базе, а отдельные инстансы интерфейса).
Тесты дали в большинстве положительные результаты. Выявленные баги:
1. Опцию переключения дерева кода в Trigger Wizard перенесли в иное место хранения (внутрипрограммные заморочки), но не выполнили перенос значения опции при апдейте приложения. В результате - регрессионный баг функционала - старые пользователи "потеряли" дерево кода в Trigger Wizard. Почему не включили для новых пользователей? Первая гипотеза - забыли, вторая - посчитали излишним, третья - посчитали интерфейс и без того перегруженным. Минус 1 балл.
2. В редакторах PL/SQL кода таких окон как Job Wizard, Sched.Job Wizard, Sched.Program Wizard нет дерева кода. Если бы описание новшества было конкретизировано по модулям, то это не считалось бы багом, а предложением. Минус 0,3 балла.
3. Не упомянуты в RNs изменения экшена и его кнопки в рамках IDic. Баг малой критичности из области документирования. Минус 0,3 балла.
4. Состояние открытости дерева в Stored Program Editor и Trigger Wizard не совпадает с состоянием кнопки переключения на тулбаре. Примечание: этот же экшен корректно отображается в контекстном меню. Интерфейсный баг не высокой критичности. Минус 0,5 балла.
5. В мастере триггера выявлен баг, связанный с размерами окна. При переоткрытии окна не восстанавливается высота. К тому же, предлагаемая высота чуть больше рабочего пространства, что вынуждает приложение добавлять вертикальный скроллер. Минус 0,5 балла.

Text Editor -100% антивыполненности
• When there is no text occurrence of the searched text in the code, the user is no longer prompted to start searching from the top.
Юзеру больше не предлагают начать поиск с начала, если в тексте закончились места с искомым.
Во-первых, в SD существует два типа редакторов текста: SynEdit, встроенный в модули для редактирования кода, и стандартный редактор текста, используемый самостоятельным окном для показа, например, значений символьных полей. Во-вторых, в обоих поиск запускается по стандартному экшену (Ctrl+F, кнопка на тулбаре, пункт в контекстном меню) и должен итерационно продолжаться по тоже стандартному экшену (F3, кнопка на тулбаре, пункт в контекстном меню).
Тест на продолжение и окончание поиска показал, что в SynEdit функционал поиска остался неизменно удобным: продолжение поиска работает и, при достижении конца/начала текста, предлагает новую итерацию. А вот в простом редакторе текста (окно с результатами Schema Extractor или дополнительное окно для просмотра/редактирования varchar-поля) не то что выполнение следующей итерации с начала/конца текста перестало быть возможным, а даже обычное продолжение по F3 (нет кнопки Find Next на тулбаре и пункта в контекстном меню).
Мало того, что описание новшества не соответствует реализации, так ещё это можно назвать анти-юзабилити. Поэтому минус 1 балл.
В рамках комплексного тестирования выявлено западание окна с результатами множественных замен в тексте.
Для просмотра кликните по элементу
Online Support Desk (=OSD) 80% готовности
• Added the ability to reply to OSD messages from the “OSD Preview” window.
Добавлена возможность отвечать на OSD сообщение из режима предварительного просмотра.
Вспомним, что экшен Reply давно появился в списках сообщений. Но почему-то хотя бы в рамках новшества не убрали лишние пункты из меню для отправленных и удалённых, поскольку для черновиков пункта Reply нет в контекстном меню.
В режиме просмотра кнопка Reply активна для сообщений типа Received, но странно, что она не гаснет и для просматриваемого нового ответа. Да, для обычных новых сообщений кнопка в неактивном режиме, но ведь ответ - это тоже новое сообщение. Значит программист на каком-то этапе не допереключил флаг с Received на New, поскольку ещё раз ответ уже не генерится.
С учётом недоделок даю 0,8 балла.
В рамках комплексного тестирования вылезли следующие юзабилити-баги:
1. Минимальная высота окна такова, что все кнопки управления спрятаны. Для их нажатия приходится скроллить основной экран, что прячет информацию из заголовка сообщения. Моё предложение про необходимость сворачивать блоки существует (если шеф его не удалил) в базе багов очень давно, года с 2015-2016.
2. В форме нового сообщения-ответа (Reply) поле Text имеет два окна: не редактируемая пустая строка и основное окно. Эта пустая строка - лишний элемент, обычно показываемый для авто-формируемых сообщений из EurekaLog. Если её скрыть, то кнопки управления будут хотя бы наполовину видны.
Для просмотра кликните по элементу

BUGS FIXED  (100+0+75+90+50+100)/6=69,16%  минус (1+0,3+1+0,3)=2,6 балла

Code Explorer два бага исправлены на 100%, но за регрессию минус 1 балл
• Toggling the visibility of the Code Explorer panel in the Stored Program Editor no longer affects the SQL Editor and Trigger Wizard.
Переключение видимости панели дерева кода в Stored Program Editor больше не влияет на SQL Editor и Trigger Wizard.
Поясню. Раньше (до SD#5) Code Explorer был только в Stored Program Editor и Trigger Wizard, его видимость определялась по своим настройкам в каждом окне, но для Stored Program Editor был дубликат опции в настройках приложения. Когда в предыдущей версии Code Explorer добавили в SQL Editor, то его видимостью (а заодно и фильтрацией) заведовала общая опция с Stored Program Editor. Теперь, поскольку у каждого модуля есть самостоятельная опция переключения видимости, изменение её значения для одного окна не влияет на остальные два. Тест уже был проведён в рамках вышеописанных новшеств для Code Explorer - это тоже принцип комплексного тестирования, когда одним тестом закрываются и новшества, и баги по одному модулю. Ставлю 1 балл.
• The Code Explorer tree is no longer empty on first opening of the script.
Дерево Code Explorer больше не пустое при первом открытии скрипта.
Этот баг был актуален только для SQL Editor, поскольку для чистой закладки редактора дерево кода даже не подписывалось и воспринималось как лишнее окно. Баг исправлен и заслуживает 1 балл.
Но тест был бы не полным, если бы мы ограничились лишь одним модулем и не проверили пустые окна Stored Program Editor и Trigger Wizard. Открытие пустого окна и новой закладки в Stored Program Editor никакой регрессии не привнесло. А вот открыть новый Trigger Wizard с пустым редактором кода не было возможным в предыдущей версии (шаблон тела триггера вставляется автоматически). Попытки же создать новый триггер без предварительного выбора таблицы/вьювера оказались невозможными. То есть внесён баг регрессии: невозможно открыть мастер триггера для создания нового объекта из главного меню приложения и контекстного меню навигатора объектов без заведомо выбранного родительского объекта. Минус 1 балл.

Schema Compiler не более 0,5 балла
• An access violation error no longer occurs after compilation is completed.
Ошибка доступа больше не случается по окончании компиляции.
В качестве теста выполняем компиляцию схемы в предыдущем билде и текущем. Поскольку у меня не получилось отловить AV ни на особой схеме, ни на нескольких, ни на спец.режиме компиляции в предыдущих билдах, то заключаю, что это не исправление бага, а приписка. И поэтому ставлю 0,5 балла за возможное неполное описание техписателем.

Schema Extractor 90% из-за неполного описания
• The object list in the Schema Extractor is no longer empty.
Список объектов в экстракторе схем больше никогда не пустует.
Поясню: список объектов в Schema Extractor можно увидеть только если включена опция "Schema Extractor / Options / Preview list of objects before extract".  Поскольку она по-умолчанию включена, то для теста экспортируем любую схему в предыдущем билде и текущем. Из чего выяснилось, что раньше выгружались только триггеры, хоть и были выбраны все типы объектов. Так что баг исправлен на 0,9 баллов. Но меня смущает тот факт, что не исправляется не менее важная проблема - скорость, особенно для юзера без DBA привилегий. Schema Extractor работает в полтора раза медленнее Compare Schemas, а обычный юзер в два раза медленнее админского. Также был подмечен баг прятания модульного окна со списком объектов за основное окно приложения, если во время выгрузки переключаться на другие приложения.

Main Window 75% из-за регрессии
• When the “Show active session window only” option is enabled, objects of inactive sessions are no longer shown in the taskbar pop-up menu.
Объекты неактивных сессий больше не показываются в контекстном меню линейки задач при включенной опции "Show active session window only".
Поясню: опция "Show active session window only" переключается в главном меню "View / Active Session" или по кнопке главного тулбара в правом нижнем углу, а контекстным меню для описанного случая считается список не уместившихся кнопок на строке задач. Для теста, кроме включенной опции "Show active session window only" желательно включить опцию "Preferences / General / Task Bar / Dislay captions" и нет смысла включать опцию "Preferences / General / Task Bar / Combine buttons". При такой комбинации настроек надо сделать несколько подключений к базе (одинаковые или разные схемы), в которых открыть много мастеров объекта (любого типа, но проверить и пересечение типов, и наименований). Окна с фичей мультисессии (Stored Program Editor, Schema Extractor и другие) для теста не показательны, но могут дать баги при внутреннем переключении сессий, если это не было проверено при внедрении фич по визуальному разделению сессий и масштабированию панели задач.
В рамках воспроизведения бага на предыдущей версии выяснилось, что панель задач может вообще быть пустой для второго подключения базы. Так что фикс получился более широким, а техписатель коротким описанием принизил масштаб и важность исправления.
По результатам тестов можно отрапортовать о следующих багах:
1. Выполнение Close All для панели задач не учитывает режим показа кнопок только активной сессии. Для меня была неожиданностью пустота taskbar во второй сессии после выполнения Close All в рамках первой при включенной опции "Show active session window only".
2. В подписях кнопок (или хотя бы в хинтах) и пунктов выпадающего списка панели задач не хватает информации о сессии (connection string, color), особенно для окон с поддержкой мультисессионности. Понимаю, что это сложно реализовать для SmartDataset и Stored Program Editor, работающих одновременно с разными сессиями без фильтрации по ним. Но когда в нескольких SQL Editor ведётся работа по отдельным сессиям, то именно подобная подпись смогла бы улучшить интерфейс. На самом деле отсутствие хинтов - это баг регрессии, особенно если выключить опцию "Preferences / General / Task Bar / Dislay captions".
3. Анимация значков не работает в выпадающем списке панели задач. График двигается для модуля DB Monitor и давно ожидается для PL/SQL Profiler на кнопках taskbar. Но когда они в списке невидимых, то иконка модуля только статична.
4. Мультисессионные окна никак не реагируют на переключение между активными сессиями при включенной опции "Show active session window only".
5. Множественное открытие окон SQL Editor и Stored Program Editor для нескольких подключенных сессий в режиме включенной опции "Show active session window only" прячет окно Preferences на моменте его открытия.

Object Wizards 0%
• The “Compress data” check box no longer appears unavailable (grayed out) in the Index Wizard, Materialized View Wizard, Materialized View Log Wizard, Tablespace Wizard.
Чек-бокс "Compress data" больше не рисуется в недоступном режиме в мастерах объектов Индекса, Материализованного Представления, Лога материализованного представления, Табличного Пространства.
Во-первых, ни в одном из мастеров нет опции под названием "Compress data". Во-вторых, аналогично её нет и при выгрузке DDL (как-то промелькнула мысль, что техписательница опечаталась с модулями). В-третьих, в мастере сегмента есть опция компрессии, но это давно комбобокс, а не чек-бокс. В-четвёртых, комбобокс недоступен для изменений при значении Unavailable для компрессии объекта в рамках базы. Из чего заключаю, что этот фикс либо приписка из числа давно неактуальных багов, либо техписательница абсолютно неверно описала фикс. Не могу поставить даже полбалла.

User Wizard 100%
• The “Account Lock” check box no longer appears unavailable (grayed out).
Чек-бокс "Account Lock" больше не рисуется в недоступном режиме.
Стоит отметить, что вместе с опцией "Account lock", возможно в рамках текущего фикса, поправлена и соседняя "Password expire". Так что плюс в карму программиста, но минус в карму техписателя. А фиксу даю 1 балл.


Итого готовность билда: (85+0+80)/3=55% импрувами и (100+0+75+90+50+100)/6=69,16%  багами даёт 62% общей готовности.