вторник, 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 балла за баги.

Комментариев нет:

Отправить комментарий