понедельник, 15 апреля 2019 г.

Обратная совместимость

Регрессионное тестирование для каждого продукта проводится в своём направлении. В случае обнаружения критичного бага у пользователя должна быть возможность отката до предыдущей версии. Но если в результате такого отката данным будет нанесён урон больший, нежели неудобства новой версии, то считайте такую проблему не просто регрессией, но и фатальной.
Очередной пример вышеописанной регрессии предоставила компания ConquestSS сразу в двух продуктах ClearSQL ver#7.1 и SQLDetective ver#5. Когда в 2015 году для ClearDB персональные данные (пароль к БД) стали шифроваться, то моё замечание о невозможности восстановления паролей через возврат к предыдущей версии восприняли как негативный и нежелательный тест. Разработчик в новой версии добавил кодирование пароля, но не делал конвертацию старых данных. Тогда не было владельцев продукта, готовых обновиться до новой версии. На стороне пользователя потеря паролей не проявилась. Да, соглашусь с мнением, что пароль - это не те данные, которые стоит хранить даже в зашифрованном виде, но у разработчиков ConquestSS и к любым другим настройкам аналогичное отношение. Старые, привычные установки не конвертируются в новую версию, а затираются значениями по-умолчанию без предупреждения. О чём не раз жаловались юзеры. Алгоритм перевода на новые настройки давно известен (сохранить старые, добавить новые параметры, предупредить о новых возможностях и вариантах восстановления прежних), но в среде программистов ConquestSS им напрочь пренебрегают.
Поскольку ни в Online Help, ни в Release Notes ничего не сказано о том, что после апгрейда пропадут данные, то считаю своим долгом тестировщика предупредить текущих пользователей ClearSQL ver#7.0 и SQLDetective ver#4 о необходимости сохранить прямо сейчас ветки реестра "HKEY_CURRENT_USER\Software\ClearSQL\DB Connect" и "HKEY_CURRENT_USER\Software\SQLDetective\Splash\ConnectionHistory" соответственно продуктам или Preferences в файл. Это позволит вам вручную восстановить в предыдущей версии утерянные при апгрейде пароли. Напоминаю, что в ClearSQL ver#7.1 (and higher) и SQLDetective ver#5 пароли к БД, сохранённые в предыдущих версиях, обнуляются при первом же запуске без какой бы то ни было возможности восстановления.
О простоте кодирования паролей в ClearSQL ver#7.0 и SQLDetective ver#4 уже говорилось в статье "Telegram in application with DB connection". Команде разработки потребовалось полтора года после моего напоминания для перенесения алгоритма более серьёзного кодирования паролей из ClearDB ver#4 в ClearSQL ver#7.1 и в SQLDetective ver#5. Так что, перед обновлением до сегодняшних версий не поленитесь и сделайте себе памятку, ведь столь удобная галка "сохранить пароль" может сыграть с вами очень злую шутку - не восстановит значения в новой версии, и даже механическая память рук ничем не поможет.
А всем тестировщикам ПО рекомендую не только проводить тест на обратную совместимость, но и вести профилактическую работу по предотвращению багов. Вроде бы удобство - опция для сохранения и авто-восстановления данных, но не для всех значений она может поддерживать законы безопасности приложения. Ещё одним примером такой юзерской прихоти является отдельная возможность выгрузки в XML файл всех сохранённых на машине коннектов к базе. В своё время мне пришлось потратить немало усилий, чтобы из прикреплений к OSD сообщению удаляли эти записи, потому что они несут персональную информацию, зачастую бесполезную для техподдержки ConquestSS. Но полагаю, что тот же юзер, который предложил сохранять пароли, сам и предложил экспортировать коннекты. А ведь это первый путь к хакерству. Если пользователь меняет комп, то в Online Help есть подробная инструкция по переносу настроек. Насколько часто нужна фича экспорта-импорта всего списка коннектов и кому? Ответ очевиден - только тому, кому временно стал доступен чужой ПК. Да, через сохранение всех настроек (Preferences) в файл тоже быстро можно скопировать все коннекты, но при этом ещё много локальных параметров (ключ лицензии, опции анализатора) придётся корректировать после импорта. Так что, считаю фичу экспорта-импорта коннектов вредной, а не полезной. И рекомендую подобные им новшества пресекать на первоначальном этапе разработки. Тогда не придётся выдумывать "защиту от дурака" в виде излишних шифрований или подтверждений опасных шагов. А владельцы продуктов и особенно администраторы баз должны перестать использовать опцию сохранения паролей, дабы хоть малость усложнить нежелательным элементам доступ к данным. Хотя, подобрать пароль, зная имена схем и баз, можно довольно просто. О чём немало говорили и Pete Finnegan, и Александр Поляков.

вторник, 9 апреля 2019 г.

ТО о CS 8.1.1.224

Отчёт о тестировании новой минорной версии ClearSQL 8.1.1.224 (далее - CS), опубликованной 3 апреля 2019 года, проведён по Release Notes. Поскольку это первый билд, то новшеств должно быть значительно больше исправленных багов и значимость их должна быть выше не только для пользователя, но и для производителя. Объём готовности минора просчитан в баллах и процентах на мой взгляд тестировщика и знатока продукта со дня его основания.

IMPROVEMENTS   1.3+1.5+1.6+2.8+0.5+0.5+2.2+0.7+0.7+1.8+0+0+0.8=14.4  баллов из  2+3+2+3+1+1+4+1+1+2+1+1+1=23 возможных, -1.3-3-1.5=-5,8 снято за баги
Core    0.8+0.5=1.3  из 2 возможных
* Improved the application installation procedure:
- The Conquest application installer now checks for the installation of Oracle Client and other prerequisites for a successful database connection.
- The user is forwarded to the Conquest website to see the full set of database connection prerequisites and install Oracle Client, Instant Oracle Client, or Microsoft Visual C ++ Redistributable Package for Visual Studio
.
Усовершенствована процедура инсталляции приложения:
- Инсталлятор приложений компании Conquest теперь проверяет установленность клиента базы Oracle и иных необходимых параметров для успешного коннекта к базе.
- Юзер перенаправляется на сайт компании Conquest для просмотра полного списка необходимых условий для коннекта к базе и установки стандартного клиента Oracle, быстрого клиента Oracle или пакетов перераспределения "Microsoft Visual C ++"
.
Не смотря на то, что для блока Core вроде бы определён один пункт RNs, но рассматривать будем отдельно каждый из двух подпунктов. Первая функциональность описана вроде бы без дополнительного интерфейса, но поскольку мне известен весь продукт, то дополняя работу тех.писательницы покажу результат наглядно. А интерфейсную реализацию второго подпункта будем искать не только в инсталляторе, но и в иных местах.
Итак, проверим инсталлятор на отслеживание настроек машины для работы с базой. Перед запуском инсталлятора удалим с машины все следы клиента. Для этого можно не фактически удалять клиента через спец.приложения Oracle, а всего лишь закомментировать ветки реестра, убрать из переменной окружения Path пути к базе и клиенту, переименовать папки с клиентом и базой в файловой системе и на всякий случай перезагрузить комп, чтобы все изменения точно вступили в силу, так как не все версии Windows OS моментально применяют смену параметров. Поскольку во втором подпункте упоминается "Microsoft Visual C ++", то постарайтесь и их деинсталлировать. К сожалению, ни конкретные деинсталляторы, поставляемые Conquest вместе со своим продуктом, ни утилита удаления программ, имеющаяся в Windows OS, не способствовали очищению машины от пакетов перераспределения. Это выяснилось в CS через список "Help / System Information". На получившуюся "чистую" машину установим CS и внимательно отследим каждый шаг инсталлятора, поскольку в RNs упомянут именно он. Может разочарую вас, но никакого отчёта юзеру об отсутствии необходимых настроек клиента базы и пакетов перераспределения не прибавилось. Имевшееся давно предупреждение для CS-32bit про установку приложения в папку со скобками осталось неизменным (только смущает номер версии Oracle - 11 вместо 10), а пакеты перераспределения всегда инсталлятор ставит безусловно. К тому же, можете заметить, что кнопки в диалоге именованы в стиле региональной операционной среды. Может показаться, что на самом деле ничего в продукте не сделано, но  для защиты разработчика поглядим в продукте настройки и коннект к базе. Ни на одной из страниц "Options / Preferences" никаких предупреждений об отсутствующих инсталляциях не найдёте. 
Клиенты базы отсутствуют
В "Help / System Information" убеждаемся, что машина чиста от клиентов базы. Здесь же примечаем, что список настроек машины расширен имеющимися пакетами перераспределения, о чём ничего не сказано в RNs. Это значит, что в команду разработки будут попадать расширенные параметры машины пользователя продуктом вместе с письмом в тех.поддержку, но сам пользователь не уведомлён об этих изменениях. Где, спрашивается, консистентность продуктов Conquest с той линией GDPR, о которой они сами так долго и усердно говорили? Это явный баг безопасности. Исследуем новшество далее. 
Сообщения об отсутствии клиентов базы
Открытие окна коннекта к базе немного усовершенствовали (текст стал более понятен юзеру и не дублируется в двух диалогах, подробности проблемы вынесены в дополнительную панель), да ещё изменили интерфейс опций коннекта к базе (об этом чуть позже в отдельном пункте RNs). Пока приметим, что только в настройках окна подключения к базе юзер может увидеть результаты проверок и дополнений, о которых сказано в RNs. Список клиентов в левом верхнем углу пуст, и это правильно, потому что мы их удалили/скрыли, а вместо этого предлагается страница сайта, хотя в хелпе "Quick overview – System requirements" или файле "ReadMe.htm" и при установке вся эта информация дублируется. А вот в правом нижнем углу мне очень странно видеть пустые значения всех четырёх параметров, необходимых для подключения к базе. Можно ведь было хотя бы проставить "Yes/No", а то создаётся впечатление недосказанности при наличии пустот после двоеточия. Формулировка RNs ограничивается инсталлятором, но это в корне не верно, так как на самом деле проверка клиентов должна (и фактически проводится) перед конкретным коннектом к базе. Вероятно поэтому никаких изменений хелпа инсталлятора нет, а статья "Connection to Oracle databases – Connection Settings window" обновлена в соответствии с новшеством. Итого, первый подпункт с учётом недосказанности получает 0.8 балла, а второй подпункт с учётом недоделок 0.5 балла.
CRUD Matrices   0.3+0.5+0.7=1.5  из 3 возможных
* It is now possible to view subprograms from a CRUD1 matrix, locate them in code, and view call trees for each subprogram.
Теперь возможно просмотреть подпрограммы из матрицы CRUD1, позиционировать их в коде и смотреть дерево вызовов для каждой подрограммы.
Матрица CRUD1 формируется для одного скрипта, а CRUD2 - для всего проекта. Поскольку речь идёт о подпрограммах, то для тестов будем в первую очередь рассматривать пакеты и объектные типы с телами, а также самостоятельные функции, процедуры и анонимные блоки с вложенными подпрограммами в декларативной части. Для начала посмотрим матрицу в предыдущем билде для всех типов хранимых программ, а затем в текущем билде поищем отличия функционала CS. Перед выявлением отличий непременно переанализируйте все скрипты. Случайно выяснилось, что отсутствие разделителя командных строк в анонимном блоке предыдущим билдом рассматривалось как неподдерживаемый парсером текст. Ранее клик по объектам первой матрицы открывал дерево вызовов в правой панели, а клик по объектам в заголовке второй матрицы позиционировал курсор в коде. В текущем билде объекты в обеих матрицах обрели структурность, первый клик отображает контекстное меню (показать диаграмму или позиционировать в код), диаграммы вызовов не ограничиваются правой панелью, а выводятся в плавающем окне. То есть изменений на самом деле три, а в RNs попало только одно. Поэтому даю только 0.3 балла.
* Added support for CRUD2 matrices at the column level:
- Columns are now shown as subnodes of dataset objects.
- It’s possible to view matrices for multiple columns
.
Добавлена поддержка матриц CRUD2 до уровня колонок:
- колонки теперь показаны дочерними ветками объектов;
- возможно просмотреть матрицы для нескольких колонок
.
Оба подпункта тесно переплетаются, поэтому рассматривать будем их как единый пункт RNs. По результатам тестирования предыдущего пункта можно предположиь, что колонки объекта данных будут располагаться в матрицах аналогично вложенным подпрограммам хранимых процедур. А вот с возможностью просмотра матрицы по нескольким колонкам придётся пофантазировать до тех пор, пока вы не переанализируете ваши скрипты в предыдущем и текущем билдах. Никакой опции для CRUD2 диаграмм не введено, то есть они будут безусловно всегда формироваться в разрезе колонок. Результат такой вложенности доступен лишь в одном месте - дереве объектов данных на закладке CRUD2. Если CRUD1 формирует по одному скрипту две матрицы, то CRUD2 формирует дерево объектов данных и по  одной матрице для каждого набора данных или колонки. Поскольку колонки стали дочерними нодами в дереве, то матрица для нескольких выбранных в дереве наборов данных или колонок расширяется только одним столбцом для соблюдения иерархии, а не изменяет объект в матрице с линейного на вложенное дерево. Поэтому в интерфейсе образовался логический баг: в дереве наборов данных можно выбрать колонки двух-ирёх разных таблиц, но в матрицу попадут не выбранные колонки, а их родительские таблицы. То есть визуально в дереве выбраны подобъекты, а функционально в матрице выведены результаты только верхнего уровня. Итого, идея была полезной, но её описание и реализация оказались усложнёнными для восприятия и применения, за счёт чего породили проблему и не позволяют скопировать функционал в CRUD1. За такую неэффективную работу разработчиков даю только 0.5 балла.
* The vertical layout of headers in CRUD1 matrices is now also available in Chrome and Firefox.
Вертикальное расположение заголовков в матрицах CRUD1 теперь также доступно в браузерах Chrome и Firefox.
Для тестирования нам понадобится любой скрипт с данными для CRUD1. Для него необходимо перегенерить только CRUD1 в текущем билде после смены настройки "Options / Code Analyzer Options / Diagram Options / CRUD / CRUD1 Header Type". Кстати, сразу можете подметить, что наименования вариантов опции немного подправлены. Результат изменений стоит искать не в заголовке всей закладки, а в подписях столбцов второй матрицы. Чтобы не формировать полного отчёта по проекту, достаточно сохранить текущий результат в htm-файл по соответствующей кнопке на тулбаре закладки. Сделайте два файла с вертикальным и горизонтальным расположением подписей в предыдущем билде и такие же из текущего билда. Затем все четыре файла пооткрывайте во всех доступных браузерах IE, Edge, Firefox, Chrome, Safari, Ya и прочие новомодные, которые CS в состоянии определить. Да, вы можете открывать файл сразу после экспорта, но только в одном браузере, выставленном приложением "Options / Preferences / General / Open HTML with Browser". Результаты моих тестов показали, что вертикальные подписи колонок благополучно отображались в Firefox из прошлого билда, а для Chrome действительно проблема ликвидирована. Но случайно проявилась проблема с шрифтом на языке локальной операционной системы. По совокупности проверок могу дать лишь 0.7 балла.
Analyzer View    0.8+0.8=1.6  из 2 возможных
* Updated the order of tabs in the Project Analyzer and Script Analyzer View.
Обновлён порядок закладок с результатами анализа по проекту и скрипту.
Уровнем проекта считаются пять верхних закладок: Summary, Project Analysis History, All Flowcharts, All Call Trees, CRUD2. 
UI изменения в списках дефолтных закладок
В текущей версии приоритет отдан структурам кода, а связи и вызовы сдвинуты. Странно, что Summary осталась последней и может из-за этого потеряться на масштабируемом экране, но, с другой стороны, к ней быстрее обращается внимание из-за её обычно первоочередного положения, хоть и с правого края.  Результаты анализа скрипта сократились по умолчанию с 16 до 7, а позиции свои сменили аналогично уровню проекта, оставив метрики спереди.  Хелп обновлён лишь частично: скриншот из новой версии, а порядок закладок и добавленный функционал всё ещё описаны по старому. В настройках приложения "Options / Preferences / Main Window / Visibility of Instant Help for Analyzer View Panels" новый порядок закладок учтён, но в пояснениях почему-то нет примечаний про дефолтность видимости закладки. Из-за недочётов могу дать лишь 0.8 балла.
* Added the ability to hide/show tabs in the Project Analyzer and Script Analyzer View:
- Tabs are now listed on the “View > Project Analyzer View Tab/Script Analyzer View Tab” menu and can be enabled/disabled with the checkmarks.
- By default, some of the Script Analyzer View tabs are now hidden
.
Добавлена возможность прятать/показывать закладки с результатами анализа на уровне скрипта и проекта:
- закладки теперь перечислены в главном меню и могут быть включены/выключены через галочки;
- по умолчанию некоторые закладки уровня скрипта скрыты
.
Совместно с предыдущим пунктом RNs удобно проверять и текущий. Порядок ззакладок в меню, настройках и интерфейсе совпадает. Функционирование скрытия и отображения работает из главного меню и контекстного. Но о втором способе не упомянуто. Функционал видимости через контекстное меню доступен только в области заголовка закладки, о чём не просто догадаться. Визуальные элементы сменили интерфейс для функционирования их отключения. Это сигнал к тому, что увеличенные размеры элементов следует перепроверять на масштабируемость. Вероятно поэтому первая закладка в обоих уровнях не скрывается (нет крестика и запись серая в меню). Ранее уже говорилось, что обновлённый интерфейс не описан в хелпах и за это был уменьшен балл. Поскольку дело касается настроек рабочей области, то обязательна проверка сохранения и восстановления выбранных опций при смене проекта, после перезапуска приложения вручную, автоматически (выполнен джоб по расписанию), после промежуточного открытия приложения прошлой версии. Эти кейсы прошли почти успешно, кроме одной закладки с результатами поиска. Оба подпункта защитаю как одно решение и даю 0.8 балла за реализацию.
Database Connection Window   1+1+0.8=2.8   из 3 возможных, -0.5-0.8=-1.3 за баги
* Added the ability to select Oracle Home from the drop-down list in the Database Connection window.
Добавлена возможность выбирать Oracle Home из выпадающего списка на окне коннекта к базе.
Клиенты базы в CS работают через "oci.dll", а по документации Oracle вы можете сами убедиться в соответствиях версий используемых клиентов и подключаемых баз. На своей локальной машине, где работает CS, у вас может быть клиент базы одной версии, а подключаться вам необходимо к разным версиям базы, например, на стадии переноса данных при апгрейде базы. Всвязи с этим пользователю CS иногда необходимо иметь несколько клиентов базы, для которых и предоставляется выбор той самой "oci.dll". Ранее этот выбор делался через дополнительное окно опций коннекта, теперь работа упростилась. Для проверки исполнения достаточно убедиться, что в предыдущей версии информация об Oracle Home показывалась в окне коннекта без возможности смены, а в текущем билде после смены в "Help / System Information" версии совпадают. Поскольку CS поддерживает лишь один коннект к базе, то для смены базы и клиента нет необходимости перезагружать приложение. Наши действия: подключиться к базе1 с клиентом1, посмотреть соответствие "SysInfo / [OCI Information] / [Current Oracle Home]" и "SysInfo / [OCI Information] / [Active Session]" , подключиться к базе2 с клиентом3, посмотреть соответствие "SysInfo / [OCI Information] / [Active Session]" и "SysInfo / [OCI Information]". Стоит отметить ещё одно неописанное удобство - текущая выбранная (или Primary) версия клиента подсвечена жирным шрифтом, а клиент с проблемами - красным. Усовершенствование исполнено полностью и получает балл. Но за давно не исправленный баг отсутствия отображения способа подключения (sysdba, sysoper) в дереве объектов базы и системной информации вынуждает меня снять -0.5 балла с билда. Эта информация критична в случае подмены схемы обычного юзера системными объектами.
* Added the ability to select all/none connections in the Last Connections list.
Добавлена возможность выбирать все или снимать все выборы в списке последних коннектов.
Для чего нужно такое новшество? Если не знакомиься с последующим пунктом RNs, то можно прежположить, что массово можно будет подключаться или менять всем выбранным позициям какой-то параметр. Но это не так. Пройдусь по видимым колонкам. Авто-коннект в CS доступен только для одной сессии, значит для этого параметра функция выбора бесполезна. Имена юзера и базы, дата и способ подключения, версия клиента - параметры фактические и получают значение после успешного коннекта. Последнее поле "Тип базы" - внутренний параметр приложения, который единственно можно массово изменить. Также массовому действию подвластно удаление строк из списка. Перед проверкой удаления сохраните себе ветку реестра "HKEY_CURRENT_USER\Software\ClearSQL\DB Connect\Connection List\Data", потому что эта критичная функция не имеет диалога предупреждения. Интерфейсно функция выбора поддерживает известные горячие клавиши, а не только выполняется через контекстное меню. Новшество получает полный балл, а выявленный регрессионный баг снимает с билда -0.8 балла.
* Added the ability to export and import database connections to and from XML.
Добавлена возможность экспортировать и импортировать коннекты к базе в/из xml-файл(а).
Изменение функционала описано в хелпе "Connection to Oracle databases – Oracle Database Connection window" в достаточном объёме. Для проверки новшества изначально делаем резервную копию ветки реестра "HKEY_CURRENT_USER\Software\ClearSQL\DB Connect\Connection List\Data", а затем экспортируем разные наборы коннектов. Если же у вас в списке только один коннект, то либо создайте в базе нескольких юзеров и выполните через CS подключения ими, либо в файле "tnsnames.ora" сделайте копии вашей же рабочей базы с разными именами через параметр "[db_name] = ..." и также выполните несколько подключений в CS. Разными подключениями одного и того же юзера к одной и той же базе могут быть способы админский, операторский и обычный. Экспортировать минимально надо два файла с разным набором записей, чтобы проверить импорт повторяющихся коннектов. После импорта необходимо проверить сохранность данных перезапуском окна, приложения и фактическим коннектом к базе, особенно если включена галка пароля, поскольку он шифруется. Для чео может понадобиться подобное новшество? Я вижу три варианта: 1) перенос CS на новую машину, но более правильно здесь действовать по шагам из хелпа "Quick overview – Moving ClearSQL from one PC to another"; 2) поделиться наработками с сотрудником можно частично, не нагружая новичка своими старыми обильными настройками; 3) опасный случай хакерства, когда легко и быстро утечёт важная информация. Третий вариант даже не имеет ограничений в виде отсеивания паролей или какого-то шифрования файла с результатами. Тест безопасности новшество не прошло, поэьлму даю за него только 0.8 балла.
Database Connection Options  0.5  из 1 возможного, -3 за баги
* Updated the layout of the Connection Settings window.
Обновлён внешний вид окна опций коннекта к базе.
Не смотря на то, что объявлено лишь о внешних изменениях, проверять в таких случаях необходимо полностью весь функционал модуля для выявления регрессии и новшеств. Начнём с интерфейсных элементов, для чего сделаем скриншоты окна в предыдущей и текущей версиях CS. По сравнённым картинкам выписываем изменённые и новые элементы: комбобокс OraHome переделан в список с параметром валидности; один чек-бокс подтверждения запуска скрипта в базе разделён на два по типу команды; добавлен информационный блок о системных параметрах и инсталляциях, сопутствующих клиенту Oracle утилит. Эти три элемента необходимо проверить по принципу новых, а на все остальные только повторить регресс-тест. Стоит отметить, что функционально первый и третий объекты взаимосвязаны, но визуально их опрометчиво разбросали по противоположным углам экрана. Динамично обновляемая инфа в правом нижнем углу дублируется в хинте для каждой строки левого верхнего списка в области столбца статуса, поэтому не считаю необходимым вообще добавлять целую панель инфы о параметрах. Тем более, что красные знаки "no" не имеют никаких предложений по исправлению проблемы. Ещё одна ошибка дизайнера - это вынос списка OraHome за пределы группы OCI (Oracle Call Interface), поскольку абсолютно нарушена логика и клиенты базы стали рассматриваться как параметры приложения, расположенные ниже. Если у вас есть стандартные  клиенты, то отредактировав путь файловой системы к одному из клиентов в системной переменной Path можете получить красноту первого параметра. Если у вас получится деинсталлировать пакеты "Visual C++", то получите красноту второго параметра. Если в файловой системе переименовать папку с установленным клиентом, то получите красноту третьего параметра. Если версия вашего клиента меньше 10, то получите красноту четвёртого параметра. В процессе исследовательских тестов новшества мне попался интерфейсный баг отсутствия отображения данных о выбранном клиенте после закрытия окна с ошибкой о невалидном клиенте.
Второе, вроде бы интерфейсное, но на самом деле функциональное изменение опрометчиво скопировано из SQLDetective, который сам выполняет команды в базе, а не использует промежуточную утилиту SQL*Plus, как это делает CS. Скрипты в CS никак не делятся на DML и DDL, а исполняются целиком при отправке. Также нет градации команд при синхронизации скриптов проекта CS с их линкованными объектами в базе во время операций Write Back. Фактически, одна старая опция перешла в чекер про DDL и появляется дополнительное предупреждение перед исполнением скрипта в SQL*Plus. Вторая опция про DML является неработающей. А при синхронизации подобных предупреждений как не было, так и не появились. Так что, эти две опции стоило вообще не в окне опций коннекта располагать, а в "Options / Preferences / SQL*Plus", где к ним более логичен и удобен доступ, потому что коннект к базе стороннее приложение SQL*Plus делает не через интерфейс CS, а самостоятельно.
Плохой дизайн новшества приносит билду лишь 0.5 балла, а выявленные баги отнимают -3 балла (по полбалла за каждый промах разработчика).
Code Formatter  0.5  из 1 возможного, -1.5 за баги
* Added a new linefeed “Before the RETURN clause of a function declaration”.
Добавлен новый разделитель пустыми строками выражения Return в объявлении функции.
Форматёр кода имеет несколько опций для вставки пустых строк в код. Они переключаются на странице "Options / Code Analyzer Options / Formatter Options / General Layout / Linefeeds" и " Options / Code Analyzer Options / Comments". Поскольку это новая опция, то её полную проверку следует проводить по чит-листу. Сразу же можем увидеть, что наименование опции в приложении отличается на одно слово с её анонсом, но оно кардинально меняет функциональный смысл: структура любой функции состоит из объявления выходного параметра и фактических команд внутри её тела. Функция без выходных данных превращается в процедуру. Это важное замечание, потому что в хелпе нет ничего про новую опцию. Включенность новой опции не входит в число дефолтных и это странно. Функциональный тест заключается в форматировании скриптов без строк комментариев следующих видов:
- самостоятельная функция,
- пакетная функция
-- в его спецификации
-- и теле,
- функции объектных типов
-- в спецификации
-- и теле,
- вложенная функция
-- в процедуре,
-- анонимном блоке или теле триггера,
-- dml-выражении.
Стоит предупредить, что форматтер CS вставляет пустые строки вокруг комментариев, по-умолчанию настроенные на отдельной странице опций, и между функциональными блоками не только в телах пакетов и объектных типов даже при нулевом значении. Эта вставка не регулируется опциями. Каждый вид скрипта делаем так, чтобы в зоне декларации функции служебное слово было как в одной строке с именем объекта, так и на следующей. К сожалению, только форматирование всех скриптов сделать нельзя, так что выполняйте анализ без формирования диаграмм и матриц для сокращения времени тестов. Количество анализов должно быть больше двух, так как не достаточно их сделать только при выключенной и только при включенной опции. Для проверки случайной зависимости опции от других надо выполнить анализ скрипта без пустых строк в случаях включенности других опций. По результатам моих тестов выяснилось, что на самом деле не вставляется пустая строка в области объявления функции перед служебным словом Return, а только это слово и его параметры переносятся на отдельную строку без табулятора от служебного слова Function. Команда для возврата значения функции в её теле никогда не обрамляется пустой строкой и всегда располагается на самостоятельной строке. Две функции в декларативной части анонимного блока, в телах пакета и объектного типа неожиданно склеиваются в единую строку кода. Служебное слово Return всегда приклеивается без пробела к закрытой перед ним скобке переменных в теле объектного типа. Объём недоделок тянет лишь на 0.5 баллов исполненности и -1.5 балла стоит снять за баги.
Code Insight    0.5+1+0.7+0=2.2  из 4 возможных
* The Code Insight window is now resizable; it is possible to save/restore window size.
Окно подсказчика кода теперь изменяет размер, возможно сохранять и восстанавливать размер окна.
Интерфейсное усовершенствование стоит тестировать на всех заявленных к поддержке операционных системах и при различных масштабах монитора. Поскольку заявлено о сохранении и восстановлении размеров, то это проверяется как при переоткрытии окна, так и после перезапуска приложения. Для работы с помощником кода есть несколько опций на странице "Options / Preferences / Main Window / Editor / Code Insight". Но для изменения размеров окна не подойдёт ни одна из опций, в том числе и восстановление их в дефолтный режим. К сожалению, при отрисовке окна не учитываются размеры ни рабочей области приложения, ни активного экрана, ни всех доступных мониторов. Из-за этого после растягивания окна его следующее появление может сильно вас огорчить абсолютной невидимостью содержимого. Об этой архитектурной проблеме сообщалось мной давно, ещё в 2015 году. Также серьёзную проблему можно получить, сильно уменьшив размеры, вплоть до нулевых, поскольку окно не имеет минимальных размеров. Мелкий интерфейсный глюк можно приметить перед отрисовкой окна, когда в левом верхнем углу промаргивает некоторая рабочая область. Не смотря на то, что окно усовершенствовано по описанному, дать полный бал не за что из-за обилия серьёзных привнесённых проблем.
* Removed the colon “:” between a topic and a value.
Убрано двоеточие между заголовком и значением.
Очень мелкое интерфейсное изменение не несёт никакой ценности, поскольку некоторым пользователям более понятно воспринимать информацию с разделителями на логические части, а другим и без двоеточий всё ясно. Но, тем не менее пункт исполнен и добавляет билду балл.
* Datatypes are now displayed right after the column name.
Типы данных теперь отображаются справа после наименования колонки.
Если имеются ввиду только наборы данных, попадающие в подсказчик при активном коннекте к базе, то типы колонок таблиц отображались и в предыдущей версии CS, но более структурировано для визуального восприятия. Так что, считаю более понятно было бы написать, что "справа от имён параметров теперь отображаются их тип данных". Новшество сделано, но из-за путанного описания (какие-такие колонки? только колонки наборов данных? а как же типы параметров и переменных?) и ухудшения визуализации в виде убирания пробелов даю только 0.7 балла.
* Datatypes of parameters and variables are now displayed in the Code Editor.
Типы параметров и переменных теперь отображаются в редакторе кода.
Если в тексте RNs опечатка и вместо Editor тех.писательница имела ввиду Insight, то можно было бы считать этот пункт дубликатом. Потому что никаких дополнительных отображений в редакторе не добавилось, а в подсказке действительно добавили отображение типов параметров и переменных. В любом случае ни балла дать не могу.
Code Analyzer  0.7  из 1 возможного
* Windows username is now always shown as a part of user comments.
Имя пользователя операционной системы теперь всегда показывается как часть комментариев.
Поскольку речь идёт о комментариях, то более правильно было бы сказать не об анализаторе, а только о форматтере. CS может добавить свои комментарии в скрипт при импорте объекта из базы и файла в проект. Но в такие комментарии ничего не добавляется. Комментарии при форматировании опциональны и включаются по значению опции "Options / Code Analyzer Options / Formatter Options / General Layout / Header / Tagline". Кроме имени пользователя Windows в комментарии попадает и имя компа, о чём умолчала тех.писательница. Вполне возможно, что каким-то юзерам CS это новшество было необходимо, но более уместным в рамках безопасности было бы добавление этого параметра через опцию. Также этот параметр может быть не лишним при импорте в проект из базы и файловой системы. Выявленные примечания снижают стоимость изменения.
Code Review Rules  0.7  из 1 возможного
* The violation of the rule “The alias is missing for a table reference in a multi-source query” is no longer raised if the table name used in the query is shorter than 4 characters.
Правило о пропущенном псевдониме таблицы в много-связанном запросе больше не проверяется для таблиц с именем менее 4 символов.
Поскольку изменение касается только одного правила, то в списке "Options / Code Analyzer Options / Code Review Options" включаем только его (оно в числе стандартных и имеет номер 77). В настройках правила нигде нет указания на нововведённое минимальное количество символов. Функциональные тесты проводим в двух направлениях: граничные значения и разновидности запросов. Тесты границ показали, что правило срабатывает для таблиц с 4-мя включительно и более символов в имени, а для трёх и менее - нет. Для различных структур DML никакой регресс не выявлен. Но в рамках усовершенствования пожалуй стоило подкорректировать и вывод результатов анализа на закладках Code Review: вместо полного дублирования всей строки с перечисленными таблицами и едва заметной подсветки одной из них более удобочитаемым было бы указать числовое значение позиции и лишь одно имя "плохого" объекта данных. Две недоделки уменьшают процент готовности билда.
Search Tool  0.8+1=1.8  из 2 возможных
* A double-click on a search result now locates the corresponding line of code in the Code Editor.
Двойной клик по результатам поиска позиционирует соответствующую строку кода в редакторе.
Примечание первое: в CS можно искать по скрипту в редакторе или по всему проекту. Примечание второе: это изменение функционала не каждый пользователь CS посчитает облегчением, так как может причислить смену активной закладки по случайному клику на окно редактора проблемой. Для избежания негативных репортов от юзеров разработчикам стоило вынести панель с результатами поиска так, чтобы её не перекрывал редактор кода. Да, для очень аккуратных юзеров добавлен пункт в контекстное меню, о чём сказано ниже. По всему протестированному даю 0.8 балла.
* Added the “Locate in Code Editor” command to the Search pop-up menu.
Добавлена команда локализации кода в контекстное меню поиска.
Это продолжение предыдущего пункта RNs и его мы уже протестировали. Добавление интерфейса слишком мелкое, чтобы заострять на нём внимание и применять полный спектр тестов, поэтому авансом даю балл.
Project Report   0 из 1 возможного
* Full support of Unicode.
Полная поддержка юникода.
Весьма амбициозное заявление, потому что его можно осознать двояко: либо все части (страницы, заголовки, содержимое, наименования, ссылки, графика) отчёта благополучно отображаются, в том числе и в интеграциях со сторонними продуктами (различные браузеры), либо все вариации юникода (когда-то продукты Conquest обрабатывали умляуты, но не справлялись с иероглифами) включены в поддержку отчётом. Как понимаете, вариаций юникода может быть бесчисленное множество, поэтому для экономии предлагаю сделать лишь один минимальный тест: сгенерим отчёты по одному и тому же проекту (демо текущей версии) в текущей версии CS и предыдущей на дефолтных настройках, а затем сравним содержимое всех файлов без учёта изменившихся дат и времени. Поскольку мой тест не показал никакой разницы, то не дам ни балла. Если бы тех.писательница уточнила детали правки, то возможно пункт RNs стал бы положительным в процентной готовности билда.
Online Support Desk (OSD)  0  из 1 возможного
* The OSD window and the New Message window are now displayed on the main window taskbar.
Окно тех.поддержки и нового сообщения теперь отображается на панели задач главного окна.
Рабочая область CS не имеет панели задач, поэтому данная формулировка абсолютно не применима к приложению. Если тех.писательница имела ввиду внутренний архитектурный перенос утилиты из самостоятельной библиотеки в основной блок программы, то это было сделано ещё в 7.1 версии. Если имелось ввиду появление дополнительной кнопки утилиты на системной панели задач рядом с кнопкой CS, то эту интерфейсную проблему тоже давно победили. Поскольку ничего не сделано, то и баллов давать не за что.
Installer/Updater  0.8  из 1 возможного
* On uninstalling the Conquest tool, the user is now forwarded to the website to fill out a short form explaining the reasons to quit.
При деинсталляции приложения пользователь перенаправляется на сайт для заполнения короткой формы, объясняющей причины отказа.
По окончании деинсталляции автоматически открывается страница сайта с несколькими вариантами отговорок и возможностью напечатать свою причину отказа от продукта. Спасибо, что предупредили хотя бы в RNs, но необходимо было продублировать и в интерфейсе деинсталлятора последующий шаг перенаправления на сайт, чтобы действия не стали неожиданными для юзера, поскольку в заголовке этой web-страницы не указаны причины и источники её открытия. Напомню, CS - приложение десктопное и браузер использует лишь для отображения результатов анализа скриптов проекта, лицензионного соглашения и файла "ReadMe.html". Также не помешало бы в перенаправлении на сайт передавать автоматически номер версии удалённого продукта (врядли Conquest откажется выпускать последующие версии продукта), тип лицензии (пробная, полная, временная) и длительность использования. Такая информация - полезный источник знаний для бизнес-аналитика. Наличие неудобств фичи не даёт мне права прибавить полный балл.

BUGS FIXED    0.8+1.3+2+0+0+0+0+1+1+0.5=6.6  баллов из 3+2+2+1+1+1+1+1+1+1=14  возможных
Project Tree    0.8+0+0=0.8  из 3 возможных
* Creating new project scripts and/or folders now removes highlighting from the previous selection.
Создание новых проектных скриптов и/или папок теперь убирает подсветку с предыдущего выбора.
Интерфейсное изменение в поведении дерева объектов проекта проверим через функции добавления, имеющиеся в главном и контекстном меню, а также после импорта и синхронизации. Перед исполнением каждого теста подсвечиваем несколько скриптов и несколько папок, например, комбинацией клавишей Ctrl и левой кнопки мыши. После добавления скриптов и папок через меню "Project / New Folder (Script)" все исходные подсветки пропадают, а текущий курсор устанавливается на новой ноде с предложением отредактировать её имя. После добавления скриптов и папок через "Tools / Import" или "Sync / Refresh Selection from Linked Source" все изначальные подсветки остаются неизменны, а после обновления папки ещё и подсвечиваются новые скрипты в ней. Поведение в первом варианте исправлено на более логичное и удобное, а во втором варианте осталось неизменным. Если бы текст содержал полное описание правки, исследованное мной, то пункт получил бы полный балл.
* On trying to perform bulk synchronization of scripts with their database sources, the Project Tree pane is no longer colored in black and the application icon no longer becomes inactive.
При попытке исполнить групповую синхронизацию скриптов с исходниками в базе панель дерева проекта больше не перекрашивается в чёрный цвет, и иконка приложения больше не становится неактивной.
Стоит предположить, что подобный визуальный глюк происходил на больших объёмах данных или на слабом коннекте с базой, когда сам коннект инициируется уже в процессе обновления, то есть автоматически приложением. Для теста создадим пустую папку в проекте, через мастер линковки свяжем её с функциями или процедурами схемы SYS (там всегда достаточно много объектов и на них есть права чтения), отключимся от базы вручную (главное меню "DB Connection / Disconnect") и запустим обновление. К сожалению, либо мне не удалось угадать причину бага, либо настройки моей базы не соответствуют причине бага. Но на предыдущей версии баг не воспроизводится. Поэтому не могу дать ни балла за мнимую правку.
* After clicking “Refresh selected linked source”, scripts now get the “Link validated” status.
После клика обновления линкованного скрипта с исходником он теперь приобретает статус провалидированой связи.
Поскольку речь идёт о дереве проекта и статусе линкованного скрипта, то проверять будем хинт около иконки до имени скрипта в самом дереве и его дубликат как информацию по этому скрипту на закладке "Script Info / Sync History". Скрипты для тестов возьмём обоих типов - из файловой системы и базы. Поскольку после клика для рефреша скрипты получают статус "Up-to-date" или "Updated", то могу заключить, что либо ничего не правилось, либо тех.писательница что-то напутала. Такая фикция работы не прибавляет балл билду.
Code Review Rules    0.5+0.8=1.3  из 2 возможных
* The rule “Unreferenced parameter” is no longer violated when the parameter is referenced only in the RETURN statement.
Правило о неиспользованных параметрах больше не обрабатывается, когда на параметр ссылается только выражение Return.
Для минимальных тестов нам понадобятся три функции с входными и выходными параметрами: первая нигде в теле не использует никакие параметры, вторая использует параметр только в выражении Return, третья использует параметр не в выражении Return. Надеясь на ваши знания о различиях между переменными и параметрами функций примеры кода здесь приводить не буду, а для процедур примеры можете взять из настроек правила. Фикс касается только одного правила, значит в списке "Options / Code Analyzer Options / Code Review Options" достаточно включить только его (оно в числе стандартных и имеет номер 29). Анализ всех трёх скриптов в предыдущем билде вообще не дал результатов обработки по правилу, а текущий билд отработал все три варианта. То есть можно заключить, что правило ранее абсолютно не работало, а не только для выражения Return. Поэтому фикс зарабатывает не полный балл.
* The rule “Runtime concatenations of string literals affect performance” now works correctly.
Правило соединения на ходу символьных строк теперь работает правильно.
Очень не понятно, а как же оно не правильно работало ранее - совсем или только в каких-то исключительных вариациях, поэтому тест проведём минимальный по объёму и максимальный по значимости. Не рекомендую зачитываться примерами из настроек правила, поскольку они для иных проверок. Создадим скрипт, выводящий символы через склеивание подряд двух и более строковых значений ['string line1' || 'string line2'] и аналогичный вывод, но с предварительным присвоением строковых значений переменным [prm1 := 'string line1'; prm2 := 'string line2'; show(prm1 || prm2);]. Предыдущий билд никак не реагировал на код, а текущий предупреждает об излишнем склеивании реальных наборов символьных строк. То есть правило просто напросто стало обрабатываться, а не как-то особо корректно. Использование тех.писательницей запрещённого слова "correctly" без указания на стандарты позволяет мне снизить балл.
Code Formatter    1+1=2  из 2 возможных
* Fixed indentation of the PL/SQL CASE expression.
Исправлены отступы для выражения CASE в PL/SQL.
Текст фикса ограничивает наши тесты только подпрограммами, то есть нет необходимости заглядывать в DML. Настроим количество отступов в приложении на странице "Options / Code Analyzer Options / Formatter Options / General Layout / Indenting". Проанализируем скрипты с форматированием в обоих билдах и сравним расположения служебных слов CASE-WHEN-THEN-ELSE-END. Действительно, форматирование DML работало в прошлом билде, а PL/SQL - нет. Фикс приносит балл.
* RAISE_APPLICATION_ERROR is now treated as an Oracle built-in procedure and is included in the user dictionary in upper case.
Зарарезервированный термин ошибки приложения теперь считается встроенной процедурой базы и включён в пользовательский словарь для перевода в верхний регистр.
Примеры скриптов легко можете найти в демо-проекте, а настройки меняйте на странице " Options / Code Analyzer Options / Formatter Options / Case / Built-ins". Исправление увеличивает готовность билда на полный балл.
Code Analyzer   0 из 1 возможного
* Enabling the “Tagline” option no longer removes line breaks, causes code line duplication, or adds empty lines.
Включение опции комментариев больше не удаляет переводы строк, не приводит к дублированию кода, не добавляет пустые строки.
Опция комментариев переключается на странице "Options / Code Analyzer Options / Formatter Options / General Layout / Header". Как вы могли заметить на многих примерах предыдущих тестов, между комментариями скрипта и всеми тремя описанными коллизиями нет связи общего характера. То есть удаление строк, вставка пустых и дублирование случалось для каких-то специфичных сочетаний строк кода. Это же говорит о том, что у каждого из трёх багов своя причина, не описанная в RNs. Так что не рекомендую тратить время и не давать за такие мнимые фиксы баллов.
Import Wizard  0  из 1 возможного
* The error “No argument for format” no longer occurs on trying to import files from the Project Tree pop-up menu.
Ошибка формата без аргумента больше не случается при попытке импортировать файлы посредством контекстного меню дерева проекта.
В предыдущем билде никак не удаётся получить ошибку при вызове мастера импорта с последующей вставкой файла в дерево. Видимо, кроме моих попыток с различным исходным позиционированием курсора, причиной исправления служило нечто неописанное. Поэтому за мнимость фикса баллов не даю.
Summary Into  0  из 1 возможного
* The Quality Trend panel is no longer empty when the root project node is selected with the checkmark in the Project Tree.
Панель пути качества больше не пустует, когда верхняя папка проекта не выбрана с чекером в дереве проекта.
Во-первых, наименование модуля имеет опечатку: вместо "Into" должно быть "Info". Во-вторых, в одном из предыдущих билдов уже говорилось о пустоте графиков для демо-проекта, а последующие билды поставлялись с полноценным примером. Описанный баг никогда не воспроизводился в предыдущем билде, так что этот фикс можно считать голой припиской к RNs и оставить без балла.
Job Manager   0 из 1 возможного
* Clicking “Run Job Now” no longer makes the initial application instance inactive.
Клик быстрого запуска джоба больше не делает инициализацию примера приложения неактивной.
Правила пользования продуктом подразумевают одновременную работу только двух приложений на одной машине. Для проверки фикса рекомендую записать видео обеих версий CS и затем сравнить смену интерфейсов. Мои варианты мувиков показали идентичность обеих версий, то есть никаких правок не сделано: исходный CS блокируется на время работы запущенного с джобом и разблокируется только по окончании работы джоба и закрытия второго CS, во втором приложении была и есть недоступность работы мастера джоба. Из чего ответственно заявляю об отсутствии какой-либо правки и балл дать не могу.
Analysis History   1 из 1 возможного
* Changing the identifier case no longer causes the Code Metrics history to disappear after re-analyzing the script.
Изменение регистра идентификаторам больше не вызывает исчезновение истории метрик кода после переанализа скрипта.
Тестировать будем панель истории на скриптовой закладке метрик кода с результатами анализа, то есть "Script: Editor and Analyzer Info / Code Metrics / Code Metrics History [Script|Subprogram|Object Name]". А менять опцию на странице "Options / Code Analyzer Options / Formatter Options / Case / Identifiers" после двух-трёх анализов скрипта перед ещё одним. Такие шаги подтвердили фикс.
Synchronization Settings  1  из 1 возможного
* Fixed the width of the filter fields.
Зафиксирована ширина полей фильтра.
Место правки пришлось искать элементарным методом тыка. 
UI настроек синхронизации по версиям
Разница полей нашлась только в настройках приложения. Фикс оказался мизерным: интерфейсные элементы для ввода текста в одну строку увеличили горизонтальный размер. Это хоть и смехотворное изменение, но всё-таки приносит балл. Но коль скоро в RNs попали подобные мелочи для придания визуального объёма тексту, то это признак глубоко упадка группы разработки Conquest 
Main Window   0.5 из 1 возможного
* Autofit now works correctly when the Project Tree is disabled in the active workspace.
Автоподбор ширины теперь работает корректно, когда дерево проекта выключено в активной рабочей области.
Автоподбирать ширину умеет только дерево проекта, для чего включается опция "Options Preferences / Main Window / Project Tree / Autofit Project Tree". Но в данном фиксе речь о всей остальной рабочей области без панели дерева. Видимость дерева меняется двумя способами: правым сплиттером и через главное меню "View / Project Tree". Мои эксперименты показали, что на самом деле в текущем билде именно ширина дерева, а не остального пространства, автоматически подбирается после, а не до скрытия дерева при включенной опции. В предыдущем билде дерево восстанавливало свою ширину при возврате , а не автоматически её подбирало, не смотря на включенность соответствующей опции. То есть в RNs следовало написать "Project Tree width is autofitted on restoring its visibility from hidden mode if the corresponding option is enabled". Тем более здесь не уместен термин корректности без ссылки на стандарты, поскольку описанное поведение очень зависит от пристрастий пользователей: кто-то ожидает восстановления до исходного состояния, а смену ширины только при открытии другого проекта, а кому-то подавай применение опции повсюду и на каждый чих. Спорное изменение поведения приносит столько же спорных баллов. 

Среди багов комплексного тестирования стоит отметить следующие.
1. В главном тулбаре приложения сменились позиции кнопок синхронизации. На привычном месте безобидной функции обновления из источника теперь расположена кнопка отправки скрипта взамен исходного. Разница между направлениями (вверх, вниз) и цветами (голубой, салатовый) стрелочек на кнопках едва различима и это однозначно испугает пользователей, привыкших к кликам в определённом месте.
2. В главном тулбаре приложения поменялись местами кнопки отчётов и автозапусков. Это не сильный интерфейсный глюк, который может нервировать юзеров, привыкших к стабильности.
3. Исполнение джоба включает опцию отображения стартового окна. Джоб создавался и запускался одномоментно из CS без показа стартового окна. А при следующем запуске приложения окно самостоятельно открылось. Это значит, что в момент отработки джоба опции приложения по джобу и открытому продукту перемешались. Хорошо ещё, что отрабатывание джоба не тормозится окном старта.


Итого по билду: получено 14.4+6.6=21  балл из  23+14=37  возможных, что даёт  21/37~57% готовности за минусом -5.8-2.5=-8.3 балла за баги.

понедельник, 1 апреля 2019 г.

Контрасты

Универсальный актёр по щелчку может менять образ и настроение. Любому сотруднику группы разработки ПО важно умение держать себя в руках, особенно тестировщику во время обсуждений нужна принципиальность взглядов для отстаивания баговой стороны дела.
Предлагаю игрой "Контрасты" развивать и укреплять способности:
- умение держать себя в руках во время конфликта;
- отвечать спокойно на грубость;
- быстро менять положительные и отрицательные эмоции;
- адекватно воспринимать критику.
Игра проводится попарно или двумя группами.
Этап 1. Оппоненты встают друг против друга на расстоянии вытянутой руки. Глядя друг другу в глаза говорят 2-3 раза поочерёдно первый - "Милашка", второй - "Лапушка". Делают по шагу назад, расходятся. Повторяют 2-3 раза поочерёдно первый - "Милашка", второй - "Лапушка". Количество шагов ограничено стенами помещения. Энергетика положительных слов должна усиливаться с удалением игроков друг от друга.
Этап 2. Оппоненты встают друг против друга на самом большом расстоянии, у противоположных стен помещения. Глядя друг другу в глаза говорят 2-3 раза поочерёдно первый - "Грязь", второй - "Помои". Делают по шагу навстречу, сходятся. Повторяют 2-3 раза поочерёдно первый - "Грязь", второй - "Помои". Количество шагов ограничено стенами помещения, до минимального расстояния друг против друга в 50-70см (вытянутая рука). Энергетика отрицательных эмоций должна ослабевать с приближением игроков друг к другу.
Этап 3. Оппоненты встают друг против друга на самом большом расстоянии, у противоположных стен помещения. Глядя друг другу в глаза говорят по одному разу поочерёдно первый - "Грязь", второй - "Лапушка". Делают по шагу навстречу, сходятся. Повторяют по одному разу поочерёдно первый - "Грязь", второй - "Лапушка". Количество шагов ограничено стенами помещения, до минимального расстояния друг против друга в 50-70см (вытянутая рука). Энергетика отрицательной и положительной эмоций должна ослабевать с приближением игроков друг к другу.
Этап 4. Оппоненты встают друг против друга на расстоянии вытянутой руки. Глядя друг другу в глаза говорят по одному разу поочерёдно первый - "Милашка", второй - "Помои". Делают по шагу назад, расходятся. Повторяют по одному разу поочерёдно первый - "Милашка", второй - "Помои". Количество шагов ограничено стенами помещения. Энергетика отрицательной и положительной эмоций должна усиливаться с удалением игроков друг от друга.
Этапы 1 и 2 развивают энергетику эмоций, этапы 3 и 4 учат владеть собой и отвечать улыбкой на грубость.
Усложнить игру можно сменой эмоций по хлопку ведущего, рандомно. При этом не стоит менять расстояние между оппонентами.
Негативные слова "Грязь", "Помои" и положительные "Милашка", "Лапушка" можете заменить любыми другими, но ассоциации должны соответствовать эмоциям.
Завершение игры должно быть на позитивной волне для обеих сторон.
Актёры используют подобное упражнение на тренингах. А когда и где играть сотрудникам группы разработки? Времени на исполнение вполне достаточно пока заваривается чай или смешивается капучино. Так что смело ходите парами в буфет и заражайте своим оптимизмом там сотрудников соседних отделов.

пятница, 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 баллов.