пятница, 29 марта 2019 г.

Вспомнить всё

Для тестировщика и актёра очень важным профессиональным качеством является хорошая память. Пьесы пишутся словами, которые необходимо в точности передать для реализации задумки автора. Тесты состоят из чётких шагов, которые необходимо в точности воспроизвести для подтверждения качества продукта или локализации бага.
Перечислю несколько упражнений, которыми пользуюсь для развития и укрепления памяти буквально ежедневно. Им меня научили в театральной студии в 1980-х годах семейство Гольдштейн и Эбергард.
1. Путь из дома на работу и обратно обычно скучен своим однообразием. Для пользы дела актёры, привыкшие к этому с первого курса любого театрального ВУЗа, подглядывают за прохожими и соседними пассажирами, "срисовывая" с них образы: внешний вид, походка, жесты, речевые характеристики. А затем в этюдах по сценодвижению или гриму воспроизводят "встреченные" образы. Так развивается кратковременная память. Для разминки длительной памяти после работы, дома вспоминают всех "встречных" утренних и вечерних, соблюдая порядок увиденного. Упростить упражнение можно поменяв театральные образы (цветовое сочетание одежды и аксессуаров, растительность и макияж на лице, особенности двигательной системы) на номера или цвета, марки автомобилей. Количество "встреченных" для запоминания необходимо увеличивать день ото дня. Не пытайтесь в первый же раз воспроизвести десяток, последовательность должна быть простейшей арифметической с инкрементом 1. Это упражнение большей частью развивает зрительную память, но можно задействовать и мышечную, если на любой поверхности (окно, сиденье, сумка, собственное бедро или предплечье) мнимо "прочертить" пальцем (ногтём) запоминаемую информацию (номер авто, наименование цвета или марки, и т.д.). Если вы добираетесь в офис на своём автомобиле, то можно проговаривать запоминаемую инфу, при этом для каждого последующего элемента стоит использовать разную интонацию: щёпот, крик, нараспев, командным голосом, от альта до баса, нечеловеческим или разногендерным, и прочие типы звуков. Частично можно применять названия бочонков лото: 0 - бублик, 1 - кол или лом, 2 - гусь или лебедь, 33 - Илья Муромец, 4 - топорик, и так далее. Это поможет быстрее вспомнить.
Эти же техники запоминания приемлемы в работе тестировщика в период локализации бага. Читайте "Внутренний монолог тестировщика".
2. При оформлении проблемы в BTS (Bug Tracking System) чаще требуется ассоциативная (или анкерная) память, когда каждый последующий момент проясняется за счёт предыдущего. Простейшее упражнение на ассоциативную память выполняется на основе предыдущего, но перечислять запомненное необходимо в обратном порядке. При этом пытайтесь цеплять воспоминания одно за другое за счёт окружающих, промежуточных событий или факторов. Например, на выходе из дома вы увидели синий хэчбэк (дома тепло (синий - цвет спокойствия) и есть чулан-коморка-антресоль), на перекрёстке - жёлтый автобус (ожидание и внимание светофора, скопление передвигающихся), а при входе в здание офиса - чёрный седан (классика цвета и формы для рабочего настроения).  То, что дано в примере в скобках, вы должны сами "приписать", нафантазировать в дополнение к встреченному объекту.
Более сложное упражнение-игра для развития ассоциативной памяти - цепочка слов. Ведущий называет любой предмет (существительное) или действие (глагол), а участники за минуту (или десяток секунд) мысленно должны собрать максимальное количество слов, "далёких" от исходного. По истечение периода каждый называет последнее слово и общее их количество. Побеждает тот, у кого длиннее цепочка или логика увела дальше. Если группа игроков тесно общаются, то можно перечислить все звенья (слова) цепочки и анкеры (связующая логика соседних слов). Например, цепочка из 8 слов с  анкерами в скобках: дверь - стекло (офисная дверь стеклянная) - свет (стекло пропускает свет) - люстра (искусственное освещение) - электричество (лампа сама по себе не загорается) - жила (ток течёт по проводам) - мясо (на обед попалась жилистая котлета) - штанга (бицепс тренируется в качалке).
Актёры театра быстрее запоминают текст, если разведены все мезансцены. Тем самым местоположения или передвижения выполняют роль анкеров. А мышечная память (жесты, походка) не только украшают роль, но и способствуют логичности реплик, когда слова сами вытекают из действий.
Высококвалифицированный инженер QA любой тест превращает в комплексный, потому что на каждом шагу видит направление для детального тестирования. Но на таких "перекрёстках" важно не увлекаться, а действовать МОПСом, то есть расставить анкеры - складировать скриншоты или тезисы для последующих исследовательских или нагрузочных шагов.
3. Кроме зрительной памяти, существует слуховая и мышечная, развитость которых важна как для актёра, так и для тестировщика. Их очевидность для работы на сцене не вижу смысла описывать. А вот QA, чую, не замечает необходимость совершенствовать таких помощников. Во время обсуждений (планирование спринта или демо фич) часто именно тестировщиков просят запомнить, записать некоторые детали, а потом дооформить задачи с их учётом. И если ваших текущих знаний по теме недостаточно, то точность примечаний во многом зависит от дословно запомненных фраз и интонаций, поскольку для пояснений во время обсуждения может быть недостаточно времени или же вы постесняетесь задать "глупые" вопросы и тем самым проявить свою невежественность в профессиональных вопросах. Бывало, что дословное воспроизведение фразы, высказанной одним из разработчиков, спасало проект от лишней работы и фатальных шагов даже по прошествии нескольких лет.
Мышечная же память хорошо помогает, когда вспоминаете порядок совершённых действий (положение пальцев рук на клавиатуре и путь взглядов по монитору) до момента срабатывания ошибки. Например, мышцы глаз автоматически отправляют взгляд в привычный угол экрана, если пора закрыть отработавшее окно.
Тренировку слуха и лицевых мышц можно совмещать - беззвучно (только языком и челюстями, но при сомкнутых губах) повторять всё, что слышите. При хорошей восприимчивости на слух (этому нас ещё в детском саду научили, когда разучивали стихи и песни к утреннику) вы всегда сможете воспроизвести фразу, сказанную сотрудником, при том с "родной" интонацией. Этим же приёмом пользуется режиссёр во время постановки, давая актёру произнести реплики с различным эмоциональным окрасом. Поэтому в интонациях актёров любительских театров легко заметить "похожесть" всех героев на режиссёра.
Как ранее говорилось, многие актёры быстрее запоминают текст, если он "привязан" к действиям. Тело как-бы само перемещается в нужную точку сцены, а мозг тем временем воспроизводит связанные с движением слова. Для совершенствования навыков мозга и мышц существует множество упражнений, простейшим из которых является чтение стихов во время зарядки или пешей прогулки, когда одновременно контролируются и мышцы, и мыслительный процесс. QA же может перечислять модули, экшены своего продукта в алфавитном или ином значимом порядке. Рекомендую не пренебрегать компьютерными играми, особенно когда счёт идёт на время и с множеством параллельных ходов, которые необходимо игроку удерживать в мыслях. Например, пасьянсы и бродилки, картинки-сравнивалки "Найди 5-10 отличий" с закрытием одной из них от одновременного просмотра. Они разовьют не только "короткую" память, но и внимательность, которая столь важна для тестировщика, актёра, да и любого человека.

понедельник, 18 марта 2019 г.

ТО о SD 5.0.1.124

13 марта 2019 года вышел первый билд (build 124) новой версии SQLDetective 5.0.1 (далее - SD). Согласно списку новшеств и исправленных багов, перечисленных в Release Notes (далее - RNs), проверим продукт на готовность. Оценку каждого пункта буду производить в баллах, тем самым получится процентное количество целостности билда.

NEW FEATURES   0.5+0.8=1.3 из 2 возможных баллов
NEW: Technical Debt. A new code metric to calculated an assumed cost of fixing structural imperfections in code.
Новинка: Технический долг. Новая метрика кода для расчёта стоимости исправлений структурно-несовершенного кода.
Полгода назад (12 ноября 2018 года) был выпущен ClearSQL 8.0.1.121, впервые просчитывающий показатель технического долга PL/SQL кода. Формула и параметры расчёта описаны во встроенной справке для страницы "Tools / Code Audit / Code Analyzer Options / Code Metrics Options / Technical Debt", но, как видите сами, тех.писательница поленилась упомянуть это в RNs. В справке сразу бросаются в глаза двойные символы процента. Нигде не сказано, на какие исследования ссылается вывод об избранной формуле для расчёта технического долга. Также нет возможности корректировать формулу, даже изменяемые в опциях параметры не отображают своего фактического значения в формуле, что даёт повод подозревать применимость лишь дефолтных значений. В противовес, все иные метрики, изменяемые на странице выше "Tools / Code Audit / Code Analyzer Options / Code Metrics Options", моментально отображаются во встроенной справке и имеют ссылки на официальные документы и исследования. Выявленные недоработки позволяют мне дать лишь 0.5 балла за новшество.
NEW: Monthly subscription. SQLDetective is now available as a monthly subscription.
Новинка: Месячная подписка. SD теперь доступен по месячной подписке.
В исходном варианте смысл новшества понятен лишь самому производителю. А для пользователя следовало дать пояснения, что теперь триальный период ограничивается лишь пятью днями, лицензию же можно приобрести в двух вариациях - как и прежде полноценно постоянную, либо помесячную с некоторыми ограничениями. Хотя хелп и повествует, что месячная (кстати, очень дешёвая) лицензия полноценна по функционалу, но не могу (нет в наличие соответствующего ключа лицензии) утверждать, что в противовес ClearSQL в SD позволено анализировать безмерное число строк кода. Так что, с большой вероятностью заверяю пользователя, что в хелпе новый формат лицензирования описан лишь с рекламной точки зрения, а не с технической. Поэтому даю лишь 0.8 балла.

IMPROVEMENTS  2+1+1.5+2.2+0.7+1.3+1.3+1.7+0.5+1.7+1+1=15.9 из 4+1+3+4+1+2+2+2+1+2+1+1=24 возможных баллов, за баги -0.5-0.3-0.4-0.5-0.3=-2
Core   0.3+0.7+1+0=2 из 4 возможных баллов
Redesigned the startup window. It is now possible to choose a license type and apply a license key from the startup window.
Реструктурировано окно запуска. Теперь возможно выбрать тип лицензирования и применить ключ лицензии из окна старта.
Фактически, в предыдущих версиях SD окна старта как-бы и не существовало. Самый первый запуск продукта предварялся видео-роликом о возможностях SD, но, видимо из-за устаревания (писались видео для версии 3.4 и не обновлялись много лет) от них совсем отказались. Любой последующий запуск SD обычно  начинался со списка подключений к базе. Так что, окно старта стоило афишировать как новинку, а не усовершенствование.
Одно окно с выбором лицензии является лишь однажды, 
другое не имеет приметного функционала, 
третье вообще изобилует UI траблами и никак не замещает старт-панель
Исследуя далее это новшество можно запутаться в трёх окнах: триальный пользователь при первом запуске может выбрать тип лицензии в окне №1, но последующие запуски приложения с применённой лицензией начинаются окном №2 уже без возможности выбрать иной ключ. Причём в триальном варианте опция "View / Preferences / General / Show startup window" переключения появления окна старта не доступна для правки. Цветовая подборка шрифтов и фона на вышеуказанных окнах такова, что важная информация и функциональные элементы абсолютно не приметны. Такие критичные интерфейсные неудобства тестировщик обязан был проверить до выпуска. Окном старта №3 можно считать и список последних коннектов, которое странным образом меняет шрифт в режиме "View / Preferences / General / Session / Enable XE Client compatibility mode" и теряет читабельность, потому что никакое из первых двух окон в этом случае вообще не появляется. Пункт RNs только путает юзера, а не поясняет новшество. Текст и сопутствующие баги тянут лишь на 0.3 балла.
The last active window is now automatically restored at the next application launch.
Последнее активное окно теперь автоматически восстанавливается при следующем запуске приложения.
Следует напомнить, что список рабочих окон и опции по их управлению доступны на странице "General / Workspace" в установках приложения. Текущее новшество должно способствовать облегчению юзерской навигации. Чтобы проверить интерфейс, придётся знать группы окон: встроенные и внешние (например, Session Navigator и Repository Installer), модальные (например, Formatter Options), первослойные (например, Fast Copier, Code Assistant), утилитные (большинство встроены в основной интерфейс, но некоторые не привязаны к рабочей области), объектные (мастера объектов базы и сходные редакторы). Для каждой группы следует брать в тест не менее трёх окон, так как пара может дать искажённый результат (случайность или сортировка по алфавиту). Тесты необходимо проводить в двух вариациях: внутри группы и в пересечениях различных групп. Можно, конечно, ограничиться самыми популярными (Object Navigator, SQL Editor, Stored Program Editor, Object Wizard, DB Examiner, Oracle Documentation Browser), но это будет лишь единственный тест, почти смоук. Очень сильно на эти тесты влияют опции на странице "General / Workspace", при некоторых сочетаниях которых окна вообще не открываются, либо всегда активируются (как это случается с Code Assistant и Oracle Documentation Browser), хоть их и закрывали в предыдущем сеансе. Если при открытии какого-то окна случается ошибка, то оно станет рабочим вместо ожидаемого, либо подвесит работу всего приложения. Этот баг относится к Oracle Documentation Browser (все скрипты документации рушатся на загрузке). Сомнительность новшества оцениваю в 0.7 балла.
Added the ability to open Release Notes from the Help menu.
Добавлена возможность открывать пояснения к выпуску из главного меню подсказок.
В предыдущих версиях окно "What's New?" с текстом RNs открывалось лишь пользователям с лицензионным ключом, а единожды закрытое более не появлялось. Теперь и триальщик может прочитать текст обновления без открытия его на сайте. Хорошее дело получает балл.
Structure bounds are now used in all code editors throughout the application.
Структурные границы теперь используются во всех редакторах кода в разрезе приложения.
Что имеется ввиду под термином структурных границ? Скорее всего - Code Folding - это линии и скобки, кнопки разворачивания и сворачивания блоков кода. Но может и что иное имелось ввиду, например, раскраска и подсветка служебных слов. Такая неясная формулировка отбирает 0.2 балла.  Список модулей, отображающих код, весьма огромен, можно на вскидку сказать, что это 80% всех окон. Но, возможно, тех.писательница недопечатала текст RNs и опустила термин "PL/SQL code", поэтому можно подозревать, что и всякий DDL, DML текст теперь структурирован. Код отображается в SD через интерфейсные компоненты: SynEdit, TextEdit, MemoEdit. В свою бытность тестировщиком ConquestSS мне приходилось упрашивать кого-то из программистов выбрать поиском по всем юнитам определённые интерфейсные компоненты для тщательной проверки всего продукта, как это опрометчиво сказано в тексте RNs. Но сегодня я могу лишь интуитивно наткнуться на модули, которые остались забыты программистом. Одним из вариантов является модуль View Differences, в обоих редакторах которого раскраска слов соответствует разнице левого и правого текстов, а скобок кода отродясь не было и нет. Так что новшество с подобным описанием никак не тянет на балл.
Call Trees   1 из 1 возможного
It is now possible to exclude Oracle system objects from Call Tree diagrams. The new option “Include system objects” was added to “Code Analyzer Options / Diagram Options / Call Tree.” Disabled by default.
Теперь можно исключить системные объекты базы из диаграммы дерева вызовов. Новая опция для добавления системных объектов добавлена на соответствующую страницу настроек. По-умолчанию выключена.
Новшество следует проверять по чит-листу для опций. В качестве заключительного теста функционала следует сгенерить диаграммы для кода, вызывающего объекты из схем SYS, SYSTEM (но в хелпе ошибочно перечислены схемы встроенных примеров HR и SCOTT, поэтому и в этот список могут войти объекты иных схем, поставляемых установщиком базы). Поскольку чаще всего эти объекты доступны через публичные синонимы, то их обычно используют без префикса схемы. То есть ваш код должен быть двух типов - с прямым указанием на системную схему и вызов объектов без владельца. Например:
--начало кода
sys.dbms_output.put_line('с указанием системного владельца');
--продолжение кода
dbms_output.put_line('без системного владельца');
--окончание кода

Примечание. Новая опция расположена в блоке "Call Tree Appearance", а результат генерации сильно зависит от опций в блоке "Grouping" на странице настроек диаграмм "Code Analyzer Options".
Не буду снимать баллы за недочёты хелпа, поскольку понятие системных объектов можно расширить до полной поставки базы. Дам новшеству балл.
SQL Editor  0.5+1+0=1.5 из 3 возможных
The executed statement is now shown in the hint of a title of the SQL Editor’s dataset.
Выполненное выражение теперь показывается в хинте заголовка грида данных.
После создания скрипта заголовок всего модуля расширялся началом текста выражения к исполнению. Заголовок модуля может быть растянут на всю ширину рабочей области приложения и поэтому получается более подробным, нежели новоявленный хинт закладки с выбранными данными. Более информативным считаю текстовый редактор, вызываемый с полным текстом, в том числе и с выставленными сортировкой и фильтрацией, по кнопке "Show query for the current dataset". При наличии же системы синхронизации между закладками данных и редакторов считаю введение хинта, при том слишком укороченного, бесполезным обновлением интерфейса. Поэтому даю лишь 0.5 балла.
If a statement execution raises an error, the Error tab heading is colored in red. The number of errors is also shown in the tab’s title.
Если исполнение выражения заканчивается ошибкой, то заголовок закладки ошибок окрашивается в красный. Количество ошибок также отображается в заголовке закладки.
Довольно полезное новшество, особенно на фоне столь запутанной работы "умного" режима закладок с результатами исполнений. Количество ошибок в одном скрипте тоже показывает фактическое значение. Было бы совсем замечательно, если бы "умный" режим стал более логичным и интуитивно-понятным, но пока новшество получает балл.
Increased the hint showing a SQL statement on the Data Output tab.
Увеличен хинт, показывающий выражение на закладке и данных.
Этот пункт RNs является дубликатом первого в группе модуля SQL Editor. Поэтому не получает балл и снижает процент готовности всего билда.
Code Insight  0.7+1+0.8-0.3=2.2 из 4 возможных
The Code Insight window is now resizable; it is possible to save/restore window size.
Окно подсказок кода теперь меняет размеры, есть возможность сохранять и восстанавливать размер.
Новшество весьма полезно, так как в последних версиях базы имена объектов стали почти безразмерно увеличиваться. Но это удобство не было протестировано на граничные значения. Если в предыдущий раз растянуть ширину или высоту окна, то при последующем вызове подсказки значимая часть может спрятаться за пределы рабочей области приложения и даже монитора. Не стоило разрешать увеличивать размеры до пределов текущего монитора или рабочей области SD. Вполне хватило бы в иных случаях скроллеров. Так что новинка получает только 0.7 балла.
Removed the colon “:” between a topic and a value.
Убран разделитель между заголовком и значением.
Мелкое интерфейсное изменение сделано, но не заслуживает такого внимания. Тем не менее, билд обогащается баллом.
Datatypes are now displayed right after the column name.
Типы данных теперь отображаются справа от заголовка колонки.
Не совсем понятная формулировка новшества. На самом деле имена параметров и переменных обогатились полезной информацией об их типе данных. Нововведение приносит 0.8 балла билду из-за путанного описания изменений.
Datatypes of parameters and variables are now displayed in the Stored Program Editor.
Типы параметров и переменных теперь отображаются в Редакторе Хранимых Программ.
На самом деле этот пункт RNs является дубликатом предыдущего. К тому же информация об ограничении одним модулем является ложью, так как типы параметров и переменных теперь доступны в подсказчике кода, появляющемся также и в Мастере Триггера. Поэтому вместо лишнего балла за пункт сниму -0.3 балла.
Bulk Confirmation  0.7 из 1 возможного
Optimized execution of group actions:
* Renamed to “Bulk Confirmation.”
* Removed the second confirmation window for non-critical operations.
* The preview window is no longer shown for such operations as Open, Browse, Open in Stored Program Editor, Describe, Analyzer Data Dependency
.
Оптимизировано исполнение групповых действий:
-переименовано окно в групповое подтверждение
- убрано окно повторного подтверждения для некритичных операций
- окно предварительного просмотра больше не показывается для таких операций, как Открыть, Просмотреть, Открыть в SPE, Описание, Анализ Зависимых Данных
.
К сожалению, в статьях хелпа для Навигатора Объектов не сказано ни слова о переименовании. Поэтому поясню, что групповые операции доступны лишь из дерева Навигатора Объектов. Поскольку первоначально все экшены проходили одинаковый путь до конкретного исполнения, то со временем пользователей стали раздражать излишние предупреждения перед простыми действиями, никак не влияющими на базу. Второй и третий подпункты в RNs следовало объединить. А список некритичных действий стоило уточнить. Разработчики этого новшества не учли тот факт, что открытие хранимых подпрограмм в редакторе или мастере объекта может предваряться их перекомпиляцией, которая причисляется к критичным действиям. Также неосмотрительно убрано подтверждение смены активности объектов. Напомню о съедании памяти при открытии множества окон, хорошо что хоть этот процесс можно остановить. Но всё-равно, малопродуманное новшество получает лишь 0.7 балла.
Database Connection Window  0.6+0.7=1.3 из 2 возможных, -0.5 за баг
Added the ability to select all/none connections in the Last Connections list.
Добавлена возможность выбирать все или снимать выбор со всех коннектов в списке последних подключений.
В предыдущей версии SD выбранные коннекты можно было лишь удалить группой. В текущей версии добавилась только возможность экспорта, поэтому такое новшество является полезным. Но на фоне того, что пункт меню для удаления из списка переименован из "Delete Selection" в просто "Delete", выделение всех записей становится опасным. а для массовой смены прочих настроек (автоконнект, тип подключения, Oracle Home, Connect As) групповое выделение бесполезно. Поэтому пункт RNs получает лишь 0.6 балла.
Added the ability to export and import database connections to and from XML.
Добавлена возможность экспорта и импорта списка коннектов к базе в/из XML.
То ли для этого новшества, то ли до программистов дошло моё возмущение о сильном простом шифровании паролей к базе, запоминаемых в настройках SD, но в пятой версии SD кардинально сменилось шифрование сохраняемых паролей к базе. При чём без совместимости с предыдущими версиями продукта. Важно! Если вы храните пароли коннектов и намереваетесь работать одновременно в SD#5 и SD#4, то перед первым запуском SD#5 выполните сохранение настроек приложения Preferences в SD#4 по кнопке Save в файл или экспортните ветку приложения из реестра операционной системы. Иначе вы утеряете возможность автоматического подключения в SD#4 без набивания заново паролей. Подобное предупреждение должно было быть в RNs, но ConquestSS не заботится о своих пользователях. Для полной проверки функционала экспорта и импорта необходимо наличие различных операционных систем и баз данных, позволяющих все виды подключений. Поскольку не имею всего перечисленного, то поверю на слово разработчикам и признаю фикс готовым. Но переименованный пункт контекстного меню и потеря паролей для предыдущих версий не позволяют дать полноценный балл. А за отсутствие предупреждения о потере паролей сниму -0.5 балла.
Object Navigator Filter  0.8+0.5=1.3 из 2 возможных баллов, -0.3 за баг
Added all 59 object types to the filter.
Добавлены все 59 типов объектов для фильтрации.
Правильнее было бы написать, что все 65 папок и значимых подпапок дерева Объектного Навигатора теперь доступны для фильтрации. Проверки показали, что установка фильтра на папку коллекций всё ещё дублирует фильтр и на прочие объектные типы. А после попытки обнулить все фильтры и выставить изменённый так и случается необработанное исключение "You cannot access field data beyond Eof". Хорошо, что хоть прочие подпапки (расписания, правила) фильтруются без подобных проблем. С учётом недоработки новшество получает 0.8 балла, а всё ещё не исправленный баг отнимает -0.3 балла.
Fixed the layout of the Filter Builder.
Исправлен внешний вид построителя фильтров.
Интерфейс окна для выбора и установки фильтра изменился лишь по высоте, поскольку список папок увеличился. Но это микроскопическое изменение никак не тянет на полноценное новшество, а лишь растягивает текст RNs до мнимого объёма, соответствующего новой версии продукта. Поэтому даю лишь 0.5 балла.
Database Examiner  1+0.7=1.7 из 2 возможных, -0.4 за баг
Filters at “Database Examiner / Sessions” and Session Navigator are synchronized now.
Фильтры сессий в DB Examiner и Навигаторе сессий теперь синхронизированы.
Два самостоятельных модуля администратора базы отображают почти идентичную информацию, но с разным уровнем управления ею. Вполне логично, что списки сессий в обоих модулях теперь можно одинаково фильтровать. Но списки ограничиваются лишь встроенными фильтрами, то есть ваши вручную созданные фильтры не копируются из модуля в модуль. Тестирование выявило неописанный функционал: применённые фильтры не перекрываются в разных модулях, то есть в обоих списках вы можете активировать разные фильтры, и они восстановятся при следующем открытии окна. Даю полноценный балл.
Renamed “Open Session Navigator” to “Find in Session Navigator.”
Переименовано открытие навигатора сессий в поиск по навигатору сессий.
К сожалению, тех.писательница забыла упомянуть, что это переименование касается кнопки на тулбаре и пункта контекстного меню только на странице сессий утилиты DB Examiner. Но функционал не оправдывает нового наименования, потому что при отсутствии искомой сессии в навигаторе сессий нет предупреждения о том, что позиционирована первая попавшаяся сессия. Для примера можете выставить разные фильтры в обоих модулях (активные и неактивные сессии) и попробуйте выполнить поиск. Ещё одним сомнительным удобством считаю открытие каждый раз нового окна Session Navigator для поиска сессии. В рамках комплексного тестирования выявилась значительная разница в списке полей, доступных в обоих модулях. Причём в навигаторе сессий пропущенные поля не отображаются и в дополнительных закладках снизу. Да и названия всех колонок в DB Examiner более подробны, нежели в прямом по функционалу Session Navigator. С учётом недоработок новшество получает 0.7 балла, а выявленная проблема с полями отнимает у билда -0.4 балла.
Database Monitor  0.5 из 1 возможного, -0.5 за баг
Added a new graph “Blocked and Blocking Sessions” to the Activity group.
Добавлен новый график заблокированных и блокирующих сессий в группу активностей.
Стоит заметить, что добавлен не один, а два графика про блокеры в эту группу. Второй график показывает время ожидания для записей и состоит из шести параметров. Общая проверка интерфейса заключается в оценке подписей графика, осей и легенды на доступность к прочтению и пониманию. К слову сказать, график ожиданий имеет слишком длинные подписи, поэтому полноценного его просматривать можно лишь в полноэкранном режиме. То есть юзер вынужден испытывать неудобства. Для тестирования работоспособности обоих графиков потребуется три сессии: блокирующая, блокируемая и отслеживающая. Для блокировки записей существует команда "LOCK TABLE" и незавершённые транзакции команд "INSERT", "UPDATE", "DELETE", "MERGE" и "SELECT ... FOR UPDATE". В первой сессии выполните одну из перечисленных команд, во второй - обратитесь к этим же данным, в третьей откройте монитор базы и наблюдайте за графиками. В полноценную проверку функционала следует включить и отправку нотификаций при достижении критических значений, а тесты интерфейса расширить до перебора параметров из настроек конкретного графика. Обе кнопки имеются в правом верхнем углу панелей каждого из графиков. Следующий шаг тестирования - анализ накопленной информации - просмотр истории наблюдений. Но тут появился критичный баг невозможности загрузки данных. Из всего вышеперечисленного могу дать за новшество 0.5 балла и отнять -0.5 балла за внесённый баг.
Online Support Desk (OSD)  0.7+1=1.7 из 2 возможных
The OSD window and the New Message window are now displayed on the main window taskbar.
Главное окно модуля и окно редактирования сообщения теперь отображаются на таскбаре приложения.
Тех.писательница сделала грубую опечатку, назвав рабочую область приложения его панелью задач. На самом деле бывшая внешняя библиотека "OSD.DLL" вошла в разряд корня программы "Core", её уже нет в списке файлов рабочей папки. А окна модуля располагаются внутри рабочей области. Но это не улучшило его работоспособность, а наоборот усугубило доступ юзера к функциональным объектам. Минимальная высота окна для редактирования сообщения OSD настолько велика, что прикрепления и кнопки управления сообщением чаще оказываются вне пределов рабочей области. Для их активации юзер вынужден постоянно скроллировать экран. Из-за внесённых неудобств и опечатки новшество получает лишь 0.7 балла.
Added ".docx" to the extensions list of OSD attachments.
Расширение файлов последних версий MS Word добавлено в список для прикреплений OSD сообщений.
Для проверки новшества создаём новое сообщение или открываем существующее из числа черновиков и в блоке "User attached files" кликаем по соответствующей кнопке для открытия диалога выбора файлов. В раскрывающемся списке фильтров по расширению файлов находим вариант документов. Поскольку диалог является интерфейсным объектом операционной системы, то его внешний вид и работоспособность проверять нет необходимости. Также нет необходимости перепроверять возможность отправки и получения файлов с расширением ".docx", поскольку давно уже разрешено сервером ConquestSS получение любых прикреплений. Даже, могу сказать по секрету, снято ограничение на размер в 4Мб. Единственное замечание - странным мне кажется отнесение расширения "txt" к числу скриптов, а не документов, и в числе документов не хватает расширения "rtf", которое тоже является весьма популярным среди Windows юзеров. Но не смотря на эти замечания дам благодушно целый балл.
Extract DDL  1 из 1 возможного
Renamed the option “Storage Clause” to “Physical Attributes Clause.”
Переименована опция параметров хранения в физические атрибуты.
Для проверки изменения понадобятся странички опций в нескольких местах: "Preferences / General / Extract DDL / Buit-in Engine", "Compare DBs-Schemas-Objects / Object Type Comparison Options / Table, Index, Cluster, Constraint, Materialized View", "Fast Copier / DDL Options / Buit-in Engine", "Schema Extractor / DDL Options / Buit-in Engine", главное меню "Object / Extract DDL / Buit-in Engine" при включенной опции "Preferences / General / Extract DDL / Common Options / Show preferences before extract". В мастерах объектов эти данные настраиваются по кнопке "Segment", а в документации Oracle это выражение осталось наименовано по-прежнему. Но подозреваю, что разработчики добавили в это понятие некоторые другие параметры объектов, характеризующие их физическое положение и состояние. К сожалению, тех.писательница не удосужилась пояснить причины такого переименования, но, так и быть, дам за изменение полный балл.
Relocate/Move Objects 1 из 1 возможного, -0.3 за баг
Renamed “Modify segment attributes” to “Include segment attributes.”
Переименована модификация атрибутов сегмента во включение их при перемещении.
Перемещение объектов в рамках SD доступно в нескольких контекстных меню: объекты как ноды в дереве Object Navigator, объекты как строки в таблицах "Storage Manager / Objects" и "Storage Manager / Objects Summary / Type Details". Для совершения операции существует модальное окно, заголовок которого состоит из имени подключения, полного типа и имени перемещаемого объекта, и только где-то в конце едва вмещающееся название операции. Поскольку окно модуля модальное, то его кнопки на таскбаре приложения не появляется, а значит нет возможности убедиться, что операция будет произведена с истинно желаемым объектом: ни хинта с полным наименованием, ни дополнительных полей в окне с полным именем объекта, которое обрезается в заголовке окна из-за длинного имени подключенной сессии. Поскольку окно модальное, то и изменить его ширину нет возможности. Это серьёзные интерфейсные проблемы, за которые стоит снять -0.3 балла. Более полезным было бы не незначительное переименование одного чек-бокса, а приведение всего окна в надлежащий вид, полноценно доступный юзеру. Но хоть и мелкое изменение, а вынуждает меня дать за него балл. Такого рода приписки к RNs позволяют судить о билде, как о "продукте мартышкиного труда" - лишь бы была видимость трудозанятости.

BUGS FIXED  0+0+2+0+0.3+0+0+0.7+1+0.8+0=4.8  из 3+1+3+5+2+1+1+1+1+1+1=20 возможных баллов, -1-2-0.3=-3.3  за баги
SQL Editor  0+0+0=0 из 3 возможных, -1 за баг
An access violation error no longer occurs on trying to execute an invalid SQL statement.
Ошибка доступа больше не случается при попытке выполнить инвалидное выражение.
В предыдущей версии у меня никак не получилось воспроизвести описанный баг, поэтому у тех.писательницы "красные уши" из-за недостоверного или неполноценного текста RNs. Напротив, в текущем билде окно процесса от исполнения любого выражения остаётся на переднем плане даже по окончании выполнения скрипта, а закрытие SQL Editor приводит к необработанной ошибке. Балла за пустую правку дать не могу, и сниму балл за новый мега-критичный баг, из-за которого теряются все правки в редакторе.
Executing the SELECT statement that retrieves a column of the TIMESTAMP WITH TIME ZONE data type no longer raises the error “ORA-01805: possible error in date/time operation” when timezone files on the client and server do not match (regions are not synchronized).
Выполнение выборки данных из колонки с зоной времени больше не вызывает ошибку о возможной ошибке в операторе даты/времени, если файлы зон времени или регионы не синхронизированы на клиенте и сервере.
К сожалению, никакие манипуляции с перенастройкой формата и перевыбором зон времени на клиенте (OS, Preferences / General, DB Examiner / NLS Parameters) не способствовали воспроизведению описанной ошибки. Поэтому фикс считаю  припиской и не даю за него ни балла.
The error “List index out of bounds” is no longer raised on clicking “Save As.”
Ошибка выхода индекса за рамки больше не случается при клике на сохранение с новым именем.
В прошлом билде ничего подобного не случается, диалог для сохранения скрипта в файл под новым именем отрабатывал благополучно. Это значит, что тех.писательница не учла каких-то специфических условий, либо никакого фикса не производилось. За пустоту баллы не даются.
Object Navigator  0 из 1 возможного
An access violation error no longer occurs on trying to select a different node in the tree after saving an object in the default scene.
Ошибка доступа больше не случается при попытке выбрать иную ноду в дереве после сохранения объекта в декорации по-умолчанию.
Декорацию по-умолчанию в навигаторе объектов нет необходимости сохранять, так как это делается автоматически. Из чего заключаю, что баг описан неточно. Да и невозможно воспроизвести его в предыдущей версии. Потому фикс не получает ни балла.
Extract DDL  1+0+1=2 из 3 возможных
DDL extracted for an external table no longer has an unnecessary RESULT_CACHE attribute.
В выгружаемом коде на создание внешней таблицы больше нет лишнего атрибута о результате кэша.
Очень давний баг наконец-то исправлен. Для проверки фикса создайте в мастере таблиц соответствующий объект и получите его DDL. По имеющемуся тексту в прошлом билде будет ошибочное создание объекта, а в текущем - благополучное. Фикс повышает готовность билда на балл.
Fixed the LOGGING attribute in DDL extracted for a partitioned table with no explicitly defined LOGGING.
Исправлен атрибут логгирования в выгружаемом скрипте на создание таблицы с разделителями и не явно объявленном логгировании.
Из-за недостаточности знаний базы данных Oracle тех.пиательницей текст фикса звучит весьма странно. Абсолютно не понятно о каком таком не явном объявлении логгирования говорится. Но даже выгрузив скрипты на создание таблиц с разделителями мне не удалось выявить хоть какую-то разницу между билдами. Поэтому пункт RNs не получает ни балла.
The error “ORA-01031: insufficient privileges” no longer occurs on trying to extract Scheduler Destination object DDL from a database 12.2.
Ошибка недостаточности прав больше не случается при попытке выгрузить структуру объекта о предназначении расписания из базы версии 12.2.
Стоит пояснить, что предназначения расписаний могут быть схемными и системными объектами. О каком уровне объекта идёт речь - из текста бага не понятно, поэтому проверять необходимо объект в своей схеме, в чужой схеме и системный. Поскольку в моём распоряжении отсутствует база указанной версии, то доверюсь программисту и дам авансом балл.
Export and Import Wizard  0+0+0+0+0=0 из 5 возможных, -1-1=-2 за баги
Fixed the minimum size of the wizard to make sure all UI elements fit in correctly.
Зафиксирован минимальный размер мастера так, чтобы все интерфейсные элементы вмещались корректно.
Во-первых, уточню заголовок группы - речь идёт о мастерах экспорта и импорта данных из таблиц, вьюверов. Во-вторых, термин "correctly" будем считать применимым лишь к размеру шрифта в приложении по-умолчанию. Для проверки исправления откроем оба мастера не из SmartDataset, чтобы первым шагом была страница выбора объектов. Придадим окнам минимальные размеры и пройдёмся по всем шагам для всех типов выгрузки и загрузки данных, внимательно приглядываясь к расположениям и размерам элементов. А для освоения комплексного тестирования предлагаю предварительно ознакомиться с последующими пунктами RNs по этому же модулю и проверять их параллельно. Тем самым вы сэкономите собственное время и научитесь широкой внимательности. Стоит ещё напомнить, что в группе разработки ConquestSS было принято правило расположения интерфейсных элементов таким образом, чтобы между соседними было пространство, кратное двум пикселям. Поскольку мы проверяем только интерфейс, то на последнем шаге нет никакой необходимости кликать кнопку старта импорта/экспорта, то есть данные базы не должны пострадать от наших действий. По результатам своих тестов могу отчитаться:
1) элементы группы Table Options на 6 шаге экспорта INSERT и MERGE слиплись;
2) комбобокс для выбора разделителя текста наезжает на свою подпись на 6 шаге экспорта по типам Delimited и Fixed Field Spacing;
3) окно с примером формата даты и времени на шестом шаге экспорта всех типов прилепилось к правой границе блока;
4) на втором шаге импорта из Excel, XML, Delimited выявлены три проблемы: в группе опций парсера обрезана подпись комбобокса, в группе форматов числовых значений обрезан редактор символа валют, в блоке логических величин подпись второго комбобокса прилипла к первому комбобоксу;
5) на втором шаге импорта из Access в блоке My Access Data правая таблица колонок имеет не стандартную окраску (заголовки столбцов белые с черным шрифтом на голубоватой подложке, а данные в текущей строке излишне подсвечиваются бледно-голубой подложкой);
6) хоть у меня и была оговорка, что на последнем шаге не нужно запускать процесс, но для тестирования импорта лучше иметь свежие файлы, поэтому не поленитесь и экспортните файлы всех типов. Это позволит вам отловить проблему семафора в режиме внутреннего экспорта и последующей попытки импорта из этого файла. А dat-файлы, сформированные в прошлых версиях SD, не подойдут для импорта по несовпадению их внутренних версий.
Такой отчёт позволяет мне ни давать балл за исправление. Да ещё и снять балл за UI и функциональные проблемы.
The column list is no longer empty on trying to export tables to MS Access.
Список колонок теперь никогда не пустой при экспорте таблиц в Access-формат.
Для тестирования открываем мастер экспорта данных, выбираем тип Access для первой попавшейся таблицы с хоть какими-то данными, доходим до шага со списком полей. В прошлом билде список и без того не пустой, а это значит, что данный пункт RNs - пустышка, за которую не могу дать ни балла. А если бы тех.писательница постаралась и добавила существенных подробностей, то можно было бы рассчитывать на более высокую оценку билда.
The error “Incorrect date format character ‘.’” no longer occurs on trying to import data from Excel.
Ошибка неверного формата даты больше не случается при попытке импорта данных из Excel-формата.
В предыдущем билде не наблюдалась проблема с форматом дат при импорте из Excel. Поэтому пункт RNs не получает ни балла.
В рамках комплексного тестирования выяснилось, что мастер экспорта в Excel не формирует файл в той папке, что выбрана в мастере, а лишь во временной и с иным наименованием. За что билд теряет балл.
Removed the “Invalid date format” option from the last step of the Import Wizard.
Убрана опция неверного формата дат с последнего шага мастера импорта.
Последний шаг импорта данных состоит из двух списков связанных объектов, требующих переключения их активности на время импорта. Для опции о неверном формате дат на этом шаге никогда не было места. Форматы даты, времени и прочие разделители давно выставляются на следующем шаге сразу после выбора типа экспорта. Но ни там, ни где бы то ни было ещё опции с подобным наименованием никогда и не было. Если бы речь шла об опции о пропуске данных, не импортируемых по ошибке базы, то она необходима и оставлена на прежнем месте. Так что, пункт RNs никак не может пополнить копилку баллов билда.
Removed the “Date Format” group of settings from the second step of the Import Wizard.
Убрана группа настроек формата дат со второго шага мастера импорта.
На самом деле группы настроек форматов дат и времени, а также разделителей для некоторых типов импорта не убраны, а лишь закрыты на редактирование. Такое изменение для меня весьма обескураживающе, так как импорт из Excel часто сталкивается с разницей форматов дат. Текст RNs не соответствует действительности и полезности, а значит не приносит билду ни балла.
Fast Copier  0.3+0=0.3 из 2 возможных
Extract DDL options are now correctly saved and restored when opened from the Fast Copier.
Опции выгрузки  DDL теперь корректно сохраняются и восстанавливаются при открытии из быстрого копировщика объектов.
Если речь идёт о корректности сохранения и восстановления опций, то оно должно быть одинаковым при переоткрытии модуля и приложения. Но тесты показали, что восстановление опций всегда равно их самостоятельному состоянию по-умолчанию после переоткрытия модуля или приложения. После перезапуска SD настройки должны принимать значения из Preferences, но этого не происходит. Переоткрытие модуля в одной и той же сессии приложения должно восстанавливать либо ранее выставленные, либо значения из Preferences. Но ни того, ни другого не происходит. Единственное положение, сохраняющее настройки, проявляется лишь при переоткрытии модального окна настроек без перезапуска модуля Fast Copier. Такое поведение нельзя считать корректным, поэтому фикс получает лишь 0.3 балла.
Modifying extract DDL options from the Fast Copier no longer affects global settings.
Изменение опций выгрузки DDL в быстром копировщике больше не меняет глобальные установки.
Полагаю, что тех.писательница опечаталась предлогом from вместо by или in. Но это мелочь, за которую не снижу балл билда. Поясню только, что глобальными считаются установки из разряда Preferences. В предыдущем билде настройки выгрузки DDL в Preferences и Fast Copier существовали каждые сами по-себе, вне зависимости друг от друга. Точно также они остались и в текущем билде. Поэтому пункт RNs считаю пустышкой и не даю ни балла.
ContentSelector  0 из 1 возможного
TYPE objects are now opened in the Stored Program Editor.
Объектные типы теперь открываются в редакторе хранимых программ.
Объектные типы делятся на два вида: подразумевающие наличие атрибутов, методов и тел и простые коллекции. Объектные типы первого типа как и прежде открываются в редакторе хранимых программ. Коллекции тоже, как один из вариантов объектных типов, открываются в своём мастере объектов, как и в прежнем билде, вне зависимости откуда её пытаются открыть - из дерева или содержимого Объектного Навигатора. За такую фиктивную работу группы разработки SD билд недополучает балл.
Compare Databases  0 из 1 возможного
Fixed the comparison results of two IOT Tables with the enabled “Table / Index” and disabled “Constraints / Include” options.
Исправлены результаты сравнения двух IOT-таблиц с включенными индексами и выключенными констрейнтами.
В документации базы Oracle найдите пример индексно-организованной таблицы и создайте её примеры для тестов. Далее, сравниваем индексно-организованные таблицы в Compare Objects с включенными в сравнение табличными индексами и исключёнными констрейнтами из сравнения. Следующий шаг тестирования - найти отличия в скриптах миграции или синхронизации, получаемых тестируемым модулем, из двух версий продукта. К сожалению, никаких изменений в скриптах не выявлено. Это значит, либо описание бага убогое, либо никакой правки со стороны программиста не было. В таком случае фикс не добавляет билду балл.
Data Dependency Analyzer  0.7 из 1 возможного
Enabling the “Show all master data” now correctly refreshes the list of detail datasets.
Включение показа всех верхних данных теперь корректно обновляет список детальных данных.
Для тестирования нам понадобятся таблицы с данными, связанные между собой через Foreign Key. Поскольку данные не будем изменять, то можете воспользоваться любыми таблицами или вьюверами (например, из схем примеров HR, SCOTT или иных). Нужный нам переключатель состоит из двух кнопок на тулбаре рабочего окна: одна включает режим показа всех данных мастер-таблицы, а вторая - только связанных данных мастер-таблицы. Но фактически их работа сводится к фильтрации мастер-таблицы по текущей записи. То есть в режиме линкованных в гриде мастер-таблицы остаётся лишь одна текущая строка, а по её связи остаются данные в гриде деталей (нижний грид) и списке связанных объектов (дерево слева). На мой взгляд пользователя базы данных Oracle в режиме только связанных данных верхний грид мастер-таблицы должен отфильтровать все данные, а не только одну текущую запись, имеющие ссылки в выбранной через дерево таблице деталей. При переключении же режима в показ всех записей мастер-таблицы в верхнем гриде должен (и снимается) всякий фильтр, текущей становится первая строка, а в гриде деталей показываются реально-зависимые данные. Единственным заметным изменением является не сбиваемый на первый в списке выбор зависимого объекта в дереве. Но если бы переход в режим только связанных деталей работал по более логичному пути, описанному мной выше, то и не пришлось бы делать это излишнее исправление. За подобный "костыль" могу дать лишь 0.7 балла.
Bulk Confirmation  1 из 1 возможного
Object type names are now shown in the "Bulk Confirmation" window on executing object type methods.
Имена объектных типов теперь отображаются в окне на подтверждение совместных действий при исполнении методов объектных типов.
Такое исправление функционала более подходит к разряду новшеств, а не багов. Оно было предложено мной в одном из предыдущих отчётов, когда аналогичное моё новшество было сделано для пакетных подпрограмм. Напомню, что групповое исполнение доступно из Навигатора Объектов. Для проверки развернём в дереве навигатора объектов такой объектный тип, у которого есть несколько методов, например, "SYS.DBURITYPE". Разворачиваем в дереве его подпапку "Methods" и отмечаем через Ctrl+Click несколько методов. В контекстном меню выбираем пункт Execute (это безопасно, поскольку нам для теста не надо выполнять методы, а серьёзные операции в SD запускаются после подтверждения). Откроется диалог "Bulk Confirmation", в столбце "Object Name" которого сможем лицезреть исправление. Но более полным этот фикс стал бы после добавления в этот список параметров подпрограмм для более чёткого представления функций переполнения. Так, например, во взятом наугад нами объектном типе "SYS.DBURITYPE" существует очень много методов GETCLOB и GETBLOB с различным набором переменных. Даю балл за исправление.
Datasets/Datagrids  0.8 из 1 возможного, -0.3 за баг
Autofit no longer breaks after export.
Автоподгонка больше не сбивается после экспорта.
В гридах данных существует несколько вариантов автоподгонки ширины полей: по заголовку или данным. Экспорт данных производится через специальный мастер выгрузки данных. Но по окончании экспорта с разделителями (простейший тип) и даже после закрытия мастера экспорта и переноса активного курсора обратно в грид в прошлой версии SD не подмечено никаких изменений в ширине полей также, как и в текущем билде. Единственный тип экспорта, который сбивал автоподгонку ширины полей в прошлой версии, случайно обнаружен - это Excel. Но в нём самом обнаружена сопутствующая проблема: лог экспорта сообщает о меньшем количестве экспортированных строк, вероятно дважды отнимается первая строка с заголовками. Поскольку описание бага не было конкретизировано типом экспорта, то пункт RNs получает лишь 0.8 балла. Странно, что тестировщик при приёмке фикса не выявил проблему подсчёта строк. За это отниму -0.3 балла.
Session Navigator  0 из 1 возможного
Fixed data sorting in the “Waits” grid.
Зафиксирована сортировка данных на закладке ожиданий.
Двоякое понятие "фиксирования" придётся проверять в двух направлениях: либо в прошлом были проблемы интерфейсного характера и теперь значки и данные не сбиваются со своих позиций, либо функционирование сортировки противоречило общепринятым стандартам и внутренним продуктовым правилам. К сожалению, в предыдущей версии SD мне не удалось выявить никаких проблем с сортировкой, поэтому данный пункт RNs можно считать припиской, и он не получает ни балла.

Итого по билду SQLDetective 5.0.1.124:  1.3+15.9+4.8=22 балла из  2+24+20=46 возможных дают   22/46=48% готовности билда и баги отнимают -2-3.3=-5.3 баллов.