Показаны сообщения с ярлыком SQLDetective. Показать все сообщения
Показаны сообщения с ярлыком SQLDetective. Показать все сообщения

пятница, 25 сентября 2020 г.

ТО о SD 5.1.1.361

Отчёт о тестировании SQLDetective 5.1.1.361, опубликованном 23 сентября 2020 года, основан на Release Notes. Предыдущий билд был полгода назад, текущий не сменил даже номер релиза, поэтому значительных новшеств ждать от него не стоит, а только исправления накопившихся багов. Количество пунктов RNs говорит о том, что продукт не пользуется особой популярностью, что доказывает финансовый отчёт о компании ООО "Конквест Девелопмент Рус", сменившей свою локацию с США на Россию. Оценка проведена, как и прежде, в баллах и процентах готовности билда к передаче пользователю.

IMPROVEMENTS 1+0.8+0.5+0.9+0.9+0.3+0.5=4.9 баллов из 2+1+1+1+1+1+1=8 возможных, за баги -2
Object Navigator 0.7+0.3=1 из 2 возможных, за баги -2
Connected sessions in the Object Navigator are now colored according to the selected database type.
Подключенные сессии в Навигаторе Объектов теперь подкрашены в соответствии с выбранным типом базы.
Отсутствие единственного слова (tree) в тексте RNs превращают его в проблему для пользователя. Подсветка схем - это продуктовая фича, настраиваемая в опциях подключения к базе (Session / New Session.. / Options / Database Type / Name). Цвет этой подложки давно используется в комбобоксе главного тулбара приложения и в строке состояния Навигатора Объектов в режиме отображения всего содержимого окна. Теперь же эта подложка идентична для верхней ноды дерева объектов. Дерево Навигатора Объектов позволяет наличие нескольких подключений, но ветка лишь одного может быть развёрнута и считается текущей рабочей. Если курсор размещён на верхней ноде подключения, то подсветка теряет свой выбранный цвет, что нивелирует фичу до нуля. Более полезным было бы подсветить всё развёрнутое дерево в выбранный цвет. Исходя из этих замечаний могу дать новшеству лишь 0.7 балла.
If a database connection password expires soon or has already expired, both cases are now indicated in the "Change password" window.
Если пароль подключения к базе заканчивает свой срок или уже перестал быть действительным, то оба случая отображаются в окне для смены пароля.
Мне, как знатоку продукта с первых дней его создания, очень странно читать изменения функции коннекта к базе в блоке модуля Навигатора Объектов, поскольку эта самостоятельная фича доступна в первую очередь через главное меню, из окна коннектов и в редакторе SQL Editor. Эта оплошность тех.писательницы, составлявшей RNs, будет учтена при подсчёте баллов. Для проверки новшества рекомендую создать тестового юзера базы с правами на подключение:
CREATE USER test_user IDENTIFIED BY &pwd
/
GRANT CONNECT TO test_user
/
GRANT RESOURCE TO test_user
/
Это вполне быстро и просто можно сделать не в SQL Editor, а в Мастере Объекта (Object / Create Object.. / Non-Schema Objects / User), где и переключать режим окончания действия пароля (ALTER USER test_user PASSWORD EXPIRE), а также сам пароль (ALTER USER test_user IDENTIFIED BY &new_pwd), поскольку функция назначения нового пароля через вышеозначенную форму давно не работает. Но при этом список коннектов в SQL Editor, даже не открывавшемся перед сменой пароля и попытками подключения, пополняется с каждой попыткой назначения пароля через обновлённую форму. Кстати, этот список никак не увеличивает нумерацию коннектов, что усиливает серьёзность обнаруженного бага. Если юзера будете создавать на основе профиля с предопределённым лимитом времени действия пароля, то постарайтесь ограничиться своим триальным периодом SD (а не стандартом Oracle в 180 дней), чтобы не испортить триальный ключ переключением дат на локальном компе. Окно назначения нового пароля через основную форму подключения к базе изменилось незначительно: только в строке состояния маленький красный прямоугольник растянут в подпись. 
Диалоги подтверждения нового пароля
В остальном форма ничем не стала удобнее: не добавлено ни имя пользователя, которому присваивается новый пароль, ни имя базы, в которой этот юзер существует, ни даты, с которой пароль перестал действовать. Окно назначения нового пароля через коннект в SQL Editor имеет кардинально иной интерфейс и абсолютно не изменилось по сравнению с предыдущим билдом. В общей сложности новшество могу оценить лишь в 0.3 балла, а за выявленный старый баг сниму два балла.
Find Objects 0.8 из 1 возможного
Removed Public schemas from the system schema list, so the Public schemas now remain visible when the "Hide system schemas" check box is enabled.
Убраны общие схемы из списка системных схем, теперь общие схемы остаются видны, когда галка скрытия системных схем включена.
В первую очередь хотелось бы уточнить термин "общие схемы", которые не являются системными. Полагаю, что это наборы объектов из числа примеров (HR, SCOTT, APEX_...) и ещё некоторые другие без "SYS" в имени, но имеющиеся в стандартной нулевой установке базы. В дереве Навигатора Объектов в ветке схем можно найти ноду Public, в которой всегда только два типа объектов - синонимы и связи к сторонним базам, но одноимённый юзер никогда не бывает в ветке Users. Для проверки новшества откроем "Tools / Find Objects / Schemas" в прошлом и текущем билдах, включим опцию прятания системных схем и сравним списки. Оказывается, что изменение всего лишь оставляет в списке схем само значение схемы Public, то есть не причисляет к схемным общие синонимы и связи к базам. Это значит, что тех.писательница ошибочно использовала множественное число в тексте RNs, тем самым показав своё невежество в знании базы Oracle. Опечатка снижает балл.
Compare Schemas 0.5 из 1 возможного
Optimized the memory usage for schema comparison with a large number of objects in each.
Оптимизировано использование памяти при сравнении схем с большим количеством объектов в каждой.
Данное новшество следует проверять в рамках нагрузочного тестирования, для которого необходимо иметь соответствующие тестовые данные (схемы с большим количеством объектов всех типов - от тысячи и выше), операционные системы различных версий (от Win7 и выше) и сочетания оперативной памяти (до 3Гб для 32-битной и 2-16Гб для 64-битной ОС). Если вы обладаете такими различными наборами, то смело проводите тесты производительности и замеряйте используемое пространство оперативной памяти на всех этапах сравнения схем, которые по условиям новшества могут размещаться на едином сервере данных и даже в одной и той же базе и табличном пространстве. Поскольку у меня нет ничего для тестов, то даю полбалла, поверив на слово программисту.
Profile Wizard 0.9 из 1 возможного
Introduced the support for INACTIVE_ACCOUNT_TIME in the Profile Wizard and DDL.
Введена поддержка параметра неактивного времени аккаунта в Мастере Профиля и его DDL.
В последних версиях базы Oracle для профиля пользователя появился параметр пароля о времени его неактивности. Для тестирования вам необходимо иметь базу соответствующей версии и юзера в ней с правами на создание и редактирование профилей пользователя. Интерфейсный компонент ищите на странице "Password parameters" мастера профиля (Object / Create Object.. / Non-Schema Objects / Profile). Перед тестированием подробно изучите статьи по созданию и редактированию профилей пользователя в документации Oracle, из которых выясните ограничения на параметр по версиям баз, правам доступа и значениям. Интерфейс новой опции проверяйте по чит-листу. Согласно внутренним правилам ConquestSS, параметры объекта должны быть доступны для редактирования в соответствии с версией базы, то есть этот новый параметр вы можете видеть пустым и неактивным элементом на форме в ранних версиях базы и полноценно редактировать в последних с достаточным набором грантов. Экспорт DDL и пересоздание объекта по выгруженному коду (не только через мастер объекта) является обязательным функциональным тестом поддержки нового объекта или его части в SD. Не забудьте, что структуру объекта можно посмотреть в множестве мест: мастер объекта, навигатор объектов, сравнение баз, некоторые утилиты администратора базы (Fast Copier не поддерживает профиль, DB Examiner перечисляет параметры, экспорт схем только со схемными объектами работает). К сожалению, тех.писательница не уточнила версию базы, поэтому и мне для тестов не удалось получить необходимую. Полную проверку новшества проделать не удалось, а значит и пункт RNs не получает полный балл.
Synonym Wizard 0.9 из 1 возможного
The object name is now automatically specified in the Synonym Wizard if the synonym is created from the Synonyms’ sub-folder.
Имя объекта теперь автоматически определяется в мастере синонима, если он создаётся из подпапки синонимов.
Скорее всего имеется ввиду подпапка синонимов у объекта в дереве Навигатора Объектов, а не подпапка всех синонимов выбранной схемы. Для создания синонима существует множество способов в SD:
- через главное меню "Object / Create Object.. / Schema Objects / Synonym" мастер синонима откроется с пустыми значениями родительского объекта и нового синонима в текущей схеме. При этом нет никакой разницы, какая нода активной схемы подсвечена курсором в Навигаторе Объектов;
- через контекстное меню "Create Synonym" объекта в дереве Навигатора Объектов мастер нового синонима заполнит владельца синонима схемой Public, а имя родительского объекта и его владельца заполнятся текущими значениями;
- если в дереве Навигатора Объектов курсор стоит на ноде синонимов объекта, как его подпапке, то мастер нового синонима можно открыть либо по главному меню "Object / Create", либо из контекстного меню "Create". При этом новый мастер отработает одинаково: владелец синонима - Public, владелец родительского объекта - активная схема, имя родительского объекта в прошлом билде пустое, в новом - текущий объект.
Исходя из вышеописанных вариантов могу заключить, что это не улучшение, а исправление недоделки, которую заметили ещё четыре года назад, но только сейчас поправили. Путанное описание и сомнительное размещение в списке RNs не позволяет моей совести дать полный балл.
Export and Import Wizards 0.3 из 1 возможного
Improved the layout of the UI elements in the Export and Import Wizards.
Изменён внешний вид интерфейсных элементов в мастерах экспорта и импорта.
Стоит пояснить, что имеются ввиду мастера работы с данными, а не объектами базы. Несколько раз давно в моих отчётах были замечания по некоторым страницам этих форм. Так что, если это не кардинальные изменения, то пункт RNs должен быть в группе исправленных багов. Проверять придётся оба мастера и на всех шагах, то есть сравнению будут подвержены 2(мастера)*7(шагов)*9(типов)=126 скриншотов из каждого билда. Если для тестирования мастера экспорта достаточно лишь иметь в любой базе данных любую таблицу или вьювер с данными, то для тестирования мастера импорта данных придётся создать файлы с соответствующими тестовыми данными. Поэтому рекомендую начать с мастера экспорта и создать файлы всех типов для последующих тестов мастера импорта, в котором нет особой необходимости выполнять сам импорт на последнем шаге. Когда в ConquestSS внутренняя WiKi создавалась в Confluence, то первоначально она наполнилась моими наработками в виде чит-листов. А после проведения акции LFT внутренние стандарты для интерфейсных компонентов приобрели более жёсткие лимиты, утверждённые руководством. Среди таких параметров - минимальный и максимальный размеры рабочих окон, которые не должны позволять юзеру свободно работать со всеми элементами. Точные размеры вписаны были из расчёта минимальных технических характеристик популярных мониторов. Например, минимальная высота окна не должна быть больше 768 пикселей, а расстояние между элементами 4-6 пикселей. Мои тесты показали, что к обоим окнам применены параметры по расположению элементов, то есть учтены интервалы пустот. Но с минимальным размером в обоих окнах проблемы. Окно экспорта имеет слишком большую высоту даже на шагах с максимальным количеством элементов, из-за чего функциональные кнопки для перемещения по шагам прячутся за пределами рабочей области программы. А окно импорта данных наоборот не получило новую минимальную высоту, из-за чего некоторые элементы получаются обрезаны и даже не появляется ползунок вертикальной прокрутки. Оба эти бага считаются критичными для новшества об интерфейсе. Поэтому пункт RNs зарабатывает лишь 0.3 балла.
Tray Notifications 0.5 из 1 возможного
Users are now reminded about the upcoming subscription renewal.
Пользователи теперь оповещаются о приближающемся обновлении подписки.
Следует пояснить, что речь идёт о лицензии продукта. Много лет назад CEO придумал вариант аренды продуктов ConquestSS на месяц, квартал или полгода. Но после одного года поддержки такого типа лицензирования финансисты исключили этот способ выманивания денег из пользователей. Программисты же функционал в продукте и на сервере не удалили, а лишь заремарили. Поэтому маркетолог, выудивший у меня идею возврата к лицензиям аренды, упростил её до месячной подписки и довольно быстро внедрил, как свою, даже не сказав мне за это "спасибо". Поскольку система предупреждений для триалов, AMS и пакетных лицензий была написана после закрытия аренды, то это новшество программист копи-пастил в систему подписки. Полагаю, что предупреждение должно появляться один раз за неделю до окончания и каждый раз за 3-5 дней до срока очередной оплаты, но при этом не спамить юзера многопользовательской лицензии. В CS и CDB против спама была введена опция в Preferences, но в SD её так и не дописали. Для тестирования новшества необходимо купить подписку, а также запускать SD с компа, имеющего доступ к Интернету. В надежде, что программист скопировал код в достаточной мере, считаю новшество сделанным, но поскольку не имею возможности его проверить, а также за счёт пространного текста от тех.писательницы даю лишь полбалла.

BUGS FIXED 0.6+2.8+0+0+0.8+0-1+0.9+0+0+0+0.7+0.8+0.9+1+1+1=9.5 баллов из 1+5+1+1+1+1+2+1+1+1+1+1+2+1+1+1+1=23 возможных , -1-2-1-0.5=-4.5 за баги
Core 0.6 из 1 возможного, -1 за баг
When the corresponding options are enabled for the current database type, the user is now prompted to confirm the execution of the following statements:
- GRANT, ADMINISTER KEY MANAGEMENT in the SQL Editor.
- PURGE in the Object Navigator.
- GRANT, REVOKE in the Object Privileges module.

Когда соответствующие опции включены для текущего типа базы данных, юзер теперь оповещается о подтверждении выполнения следующих команд:
- грантование и администрирование ключей в SQL Editor;
- очистка в Навигаторе Объектов;
- выдача и отнимание грантов в модуле объектных привилегий.

Этот баг, как явная недоделка фичи о конфирмации DDL команд, давно был в моих отчётах о тестировании, но лишь сейчас у программиста дошли до него руки. К сожалению, тех.писательница никак не намекнула, о каких опциях идёт речь. Поясню. Нигде в настройках приложения их вы не найдёте, потому что они спрятаны в опциях подключения к базе (Session / New Session.. / Options / Database Type / Confirm execution required for the following statements: DML, DDL). Какие из перечисленных команд в Oracle считаются DML или DDL, смотрите в моей таблице. Также вам стоит знать, что выставленные опции касаются только выбранного типа коннекта по градации приложения. Здесь всё ещё не исправлен баг о смене опций для уже подключенного коннекта, например, подключиться к базе каким-нибудь типом без включенных опций на подтверждение исполнения DML и DDL, сразу же откройте окно подключений к базе ещё раз и в его опциях включите их с сохранением настроек, но без повторного подключения к базе, а в имеющейся сессии разверните ноду таблиц в Навигаторе Объектов. DML не сможет выполниться и папка окажется пустой.
Перед тестированием фикса вам стоит внимательно изучить статьи документации Oracle о вышеперечисленных командах, чтобы у тестового пользователя было достаточно прав в базе на их исполнение. Для тестирования SQL Editor возьмите тексты примеров из этой документации и подправьте имена юзеров и объектов на свои, либо экспортните в редактор команды из модуля объектных привилегий. Здесь можно отметить баг о нераспознавании некоторых служебных слов в редакторе кода, то есть они не подсвечиваются должным образом. Также стоит вам знать, что команда про администрирование ключей появилась в последних версиях базы Oracle. Для тестирования в Навигаторе Объектов используйте главное меню "Object / Drop" или контекстное меню "Drop" некоторых объектов, для которых актуальна команда Purge, например, ненужные таблицы с ненужными данными, и самостоятельную команду Purge контекстного меню для объектов из корзины (папка "Recycle Bin"). Здесь вы обнаружите, что очищение корзины, как опция при удалении объекта, не считается в SD отдельной DDL командой и исполняется без подтверждения, что является недоделкой. Для тестирования модуля привилегий позаботьтесь о достаточности прав самого подключенного юзера на выдачу и отнимание грантов. Здесь будьте внимательны к галке о выключении опции. Во-первых, она всегда включена, что автоматически отключает все последующие конфирмации. Во-вторых, в наименовании опции значится, что её изменение можно сделать в Preferences, что является ложью, так как опция подтверждения устанавливается лишь в окне подключения к базе.
Итого, если баг разделить на три части по модулям, то из-за выявленных недоделок и сопутствующих багов могу дать лишь 0.6 балла и ещё сниму балл за баг при выставлении опций.
SQL Editor 1+1+0+0.8+0=2.8 из 5 возможных, -2 за баги
Formatting of scripts copied from the SQL Editor is now preserved when pasted in editors that support RTF format.
Форматирование скриптов, скопированных из SQL Editor, теперь сохраняется при вставке в редакторы, поддерживающие RTF формат.
К сожалению, тех.писательница не уточнила, из какого конкретно окна редактора надо копировать текст с особым форматированием. Дело в том, что весь модуль SQL Editor состоит из нескольких видов редакторов: кода, результатов исполнения, структура скрипта, история команд, подсказчик команд. Если же имелся ввиду только основной редактор кода, то аналогичную правку бага стоит проверить в Stored Program Editor и мастерах объектов, состоящих из интерфейсного компонента SynEdit. Исходный текст возьмите всех различных вариаций, настраиваемых в "View / Preferences / Code Editors / Color". В качестве приёмника вставки можно использовать общедоступные WordPad или MS Word редакторы. По результатам моих тестов могу дать балл, но с примечанием о неприменимости фикса к окнам с результатами исполнения скриптов.
Считаю уместным здесь пожаловаться на давнюю проблему текстов RNs для всех продуктов ConquestSS, которые не стоит в оригинале копировать из PDF и вставлять сразу в WordPad, поскольку последующее его дописывание на русском языке во многих местах при сохранении как-то неожиданно меняет кодирование на кракозябры. В качестве выхода из положения мне приходится форматированный текст из PDF копировать в Notepad, который снимает с текста всякие кривые фонты, и только потом из Notepad копировать чистый текст и вставлять его в удобный текстовый редактор, где приходится уже вручную форматировать, применяя красивые фонты. Полагаю, что причиной является безалаберное отношение оформителя текста к своим обязанностям по поддержанию единого стиля форматирования. За такую проблему можно с каждого билда снимать по баллу. А ещё при инсталляции и вообще в системных требованиях давно пора увеличить достаточное свободное пространство с 200Мб до 300-400Мб. 
If a session is disconnected while running a long query, the error message "Session [session_name] is busy" now shows a relevant session name.
Если сессия разъединена во время исполнения длинного запроса, сообщение об ошибке теперь показывает соответствующее имя сессии.
Для проведения теста вам понадобятся два-три коннекта к разным базам или разными юзерами, или одинаковыми, но проверьте нумерацию коннектов. Откройте SQL Editor, в котором запустите запрос на длинное исполнение в одной из сессий. Обычно я делаю в SQL Output полную выборку из системного вьювера со всеми объектами и объединяю её с аналогичной несколько раз. Пока он исполняется, попробуйте отключить обе сессии сразу или одну с исполняемым запросом, либо закройте всё приложение. Существует ещё один способ отключения сессии - через её убивание (либо вручную командой Kill, либо в Session Navigator). В прошлом билде баг был заметен на двух одинаковых подключениях с различной нумерацией.
Select statements starting with parenthesis are now correctly executed in the "Data Output" tab.
Выражения выборки, начинающиеся с кавычек, теперь корректно выполняются в закладку данных.
К сожалению, в документации Oracle нет описания каких-то выборок, начинающихся с кавычек. Поэтому и о правильности их исполнения речи быть не может. Пункт RNs никак не могу учесть, в чём состоит полная вина тех.писательницы.
Modifying the vertical toolbar of the SQL Execution History by adding and/or removing icons in the Icon Dictionary now works correctly.
Изменение вертикального тулбара истории исполнений добавлением и/или удалением иконок в словаре иконок теперь работает корректно.
В нескольких прошлых билдах была замечена проблема интерфейса из-за пропавших всех иконок с тулбара истории исполнений. Теперь настройка восстановилась. Но странная величина тулбара по отношению к панелям и нижняя стрелка для какого-то сохранения оставляет юзера в непонимании. Поэтому фикс не получает полный балл. Также стоит обратить ваше внимание на использование термина correctly без отсылки к правилам.
В рамках этого фикса стоит отметить, что настройки главного тулбара различны в предыдущем и текущем билдах. Но этот факт не учтён в RNs, как усовершенствование. Из-за чего у юзера могут возникнуть позже проблемы при переносе настроек приложения с одного компа на другой (забудет скопировать какой-нибудь файл).
Executing the same statement several times no longer opens multiple pages in the Data Output tab.
Исполнение одного и того же выражения несколько раз больше не открывает несколько страниц в закладке с данными.
Для связи редактора и закладки с выходными данными существует несколько настроек на страницах установок приложения "View / Preferences / Code Editors / SQL Editor / Editor and Tab Handling", "View / Preferences / Code Editors / SQL Editor / Data Output" . Также на вывод данных влияет опция "Smart output" в самом редакторе. Одинаковый запрос может быть в разных закладках редактора, либо дублироваться в едином скрипте. Поэтому в сочетании опций и действий юзера всегда найдётся несуразица. В чём была конкретика текущего фикса - отгадать сложно, поэтому считаю его припиской и балла не дам.
Stored Program Editor 0 из 1 возможного
Undoing all changes in a stored object reverts the object’s state back to non-modified.
Возврат всех изменений в хранимом объекте возвращает статус объекта к немодифицированному.
Отдельной команды "возврат всех изменений" в редакторе не существует, так что будем иметь ввиду конечное применение общепринятой горячей клавиши "Ctrl+Z". Состояние объекта графически отображается в статусной строке разноцветными прямоугольниками. Тест состоит из следующих шагов: открыть любой код или файл в редакторе, добавить или удалить один символ текста, нажать горячую клавишу или кнопку на тулбаре для отката изменений до гашения стрелки "Возврат изменений", закрыть редактор. Если бы фикс был сделан, то никакого предложения о сохранении или компиляции модифицированного кода не предлагалось. Но диалог появляется, а также голубой индикатор правки горит, поэтому заключаю, что никакого фикса не сделано. То есть и балл билду не светит.
SQL Editor / Stored Program Editor 0 из 1 возможного
The code editor no longer flickers on moving the caret when a long script is open and the option "Cursor beyond EOL" is disabled.
Редактор кода больше не мерцает при движении курсора, когда длинный скрипт открыт и опция о конце строки и курсоре выключена.
Опция о курсоре и конце строки настраивается на странице "View / Preferences / Code Editors / General". Для теста нам понадобится код с длинными строками, не только больше правой границы "View / Preferences / Code Editors / Display / Margin and Gutter / Width", но и прячущаяся за правым краем окна редактора. Также длина скрипта должна определяться и количеством строк, уходящими глубоко за нижнюю границу редактора. В качестве движения курсора будем использовать кнопки стрелок, клики мышью и вставку пустых строк. Полагаю, что раньше было излишнее перерисовывание окна редактора, заметить которое можно при определённом техническом оснащении монитора и его видеокарты. Мои тесты не показали никакой разницы в работе курсора редакторов, поэтому не могу дать балл за фикс.
Object Navigator 0.8 из 1 возможного
Clicking "Create" from the Object Tree now correctly opens the relevant object wizard for triggers, clusters, and collections.
Клик по команде создания из Навигатора объектов теперь корректно открывает соответствующий мастер объекта для триггеров, кластеров и коллекций.
На самом деле команда создания объекта может быть вызвана не только из контекстного меню для нод дерева Объектного Навигатора, но и через главное меню "Object / Create ..". Этот баг несколько раз отмечался в моих отчётах тем, что перечисленные объекты невозможно было создать через мастер, но в дереве навигатора объектов при этом создавались пустые ноды соответствующих типов. Кроме этого, мастер коллекций был упразднён и код переведён в Stored Program Editor. Теперь же для новых объектов в дереве навигатора не формируется пустая нода, как это работает для староинтерфейсного мастера таблиц, всё ещё не отвязанного от дерева объектов. И перечисленные объекты открываются в своих мастерах. Эти мои примечания поясняют вам значение термина correctly. Поскольку этого не сделала тех.писательница, то полный балл за фикс дать не могу.
Dataset Manager 0 из 1 возможного
Filters created for a table no longer appear in the filter list of another table with a similar table name.
Созданные для таблицы фильтры больше не появляются в списке фильтров для другой похожей одноимённой таблицы.
Скорее всего здесь имелись ввиду одноимённые таблицы разных баз и схем, поэтому для теста нам понадобятся коннекты к разноимённым базам (это можно сделать через tns-файл, назвав по разному одну базу дважды) и одноимённые таблицы с одинаковым и различным наборами полей в разноимённых схемах. В качестве менеджера данных подойдёт список фильтров в SmartDataset или "Object Navigator / ContentSelector". К сожалению, в предыдущем билде мне не удалось выявить проблемы путанием фильтров и имён таблиц, поэтому считаю фикс припиской и не даю ни балла.
Code Insight -1+0=-1 из 2 возможных
The Code Insight window is now shown correctly from the first time when the "Include 'Code Assistant' data" option is enabled.
Окно подсказчика кода теперь показывается корректно с первого раза, когда включена опция добавления данных ассистента кодирования.
Напомню, что ассистент кодировщика - это самостоятельный модуль, который доступен из главного меню "View / Code Assistant" и предлагает упростить работу через вставку целых блоков стандартного кода, а помощник кодировщика - это сочетание структуры кода в редакторе с отображением списка соответствующих введённым символам наименований объектов, параметров или переменных. Опция включения данных ассистента в помощник кодирования настраивается в "View / Preferences / Code Editors / Code Insight". В чём заключается корректность правки придётся выяснять юзеру самому, поскольку тех.писательница не указала исходные правила. По сравнению с предыдущим билдом этот фикс могу считать только ухудшением, поскольку после набора двух символов SD зависает одинаково долго, а после этого курсор теряется и ввод последующих символов невозможен. Поэтому пункт RNs отнимает балл у билда.
Code suggestions shown in the Code Insight window are no longer corrupted and scrolling the window no longer causes an access violation error.
Предложения кода в окне помощника больше не портятся и прокрутка окна больше не вызывает ошибок доступа.
При тестировании предыдущего фикса мной не было замечено никаких проблем в текстах подсказок и при прокрутке. Поэтому пункт RNs, как приписка, не заслуживает балл.
Query by Example 0.9 из 1 возможного
The "Ignore case" option now works correctly for the CLOB columns.
Опция игнорирования регистра теперь корректно работает для CLOB колонок.
Для теста нам понадобится таблица с данными в CLOB поле, заполненном разнорегистровыми текстами. Нажав красный вопросик в левом верхнем углу грида или кнопку New в "Dataset Manager" или F7 в гриде, откроем редактор фильтра и введём значения для обозначенного поля. Смысл термина корректности заключается в том, что опция просто на просто теперь действительно применяется. Но, возможно, тех.писательница имела ввиду и что-то иное не описанное, поэтому не дам полного балла.
Code Analyzer 0 из 1 возможного
The rule "Specify full column list" now shows correct code analysis results.
Правило означения полного списка колонок теперь показывает правильные результаты анализа кода.
По-видимому, речь идёт о срабатывании правила кодирования "Specify a full column list (as opposed to using '*') in each DML statement and cursor", поэтому для теста будем использовать выражения выборки данных с использованием звёздочки вместо перечисления полей. Корректность отображения, опять же, не описана тех.писательницей, поэтому предположим, что либо правило совсем не срабатывало, либо номер строки не совпадал, либо в каком-то частном случае кода анализатор не распознавал звёздочку. Поскольку ничего конкретного нет в описании фикса, то протестируем простейший вариант - срабатывание правила для выражения "select * from my_table;". В предыдущем и текущем билдах не выявлено никаких различий в работе правила, поэтому не даю фиксу балл.
Rename Object 0 из 1 возможного
An index name that does not match its table name is no longer included in the script when the table is renamed.
Имя индекса, которое не совпадает с именем таблицы, больше не входит в скрипт, когда переименовывается таблица.
В одном из предыдущих билдов было добавлено автоматическое переименование индексов, совпадающих с именем таблицы. Никаких изменений в текущем билде нет, поэтому этот пункт RNs является пустышкой.
Find and Replace 0 из 1 возможного
When searching for a selected text occurrence, the search scope is no longer changed to "Selected text".
При обнаружении искомого текста найденное выражение больше не меняется на выделенное.
Описание фикса довольно мудрёное, поэтому остаётся только догадываться, что речь идёт о подсветке найденного выражения. Для теста настроим или запомним цветовые подложки "View / Preferences / Code Editors / Color / Elements / Selection / Color" и "View / Preferences / Code Editors / Color / Elements / Search match / Color". В любом редакторе приложения откроем какой-нибудь текст. Выполним одинарный поиск (Ctrl+F), повторный (F3) и в выделенном фрагменте одинарный, повторный. Во всех четырёх вариантах подмечаем раскраску. Никакой разницы с прошлым билдом не выявлено, поэтому можно заключить, что либо тех.писательница не описала конкретный частный случай, либо программист сделал нечто иное, либо ничего не исправлялось. Поэтому билд недополучает балл.
Object Wizards 0.7 из 1 возможного, -1 за баги
Fixed the highlighting of the nodes in the object tree.
Зафиксирована подсветка нод в дереве объектов.
Во-первых, в каждом мастере объекта нет дерева объектов, а есть только дерево страниц. Это опечатка тех.писательницы серьёзно может сбить с толку юзера. Во-вторых, не понятно, о каких конкретно мастерах, то есть типах объектов, идёт речь. Дело в том, что некоторые объекты до сих пор управляются через старые интерфейсы, например, таблицы. Но и новые мастера, не смотря на свою видимую схожесть, на самом деле не являются единым сквозным по всему приложению компонентом. Поэтому любые фиксы в одном мастере необходимо перепроверять во всех интерфейсах каждого типа объекта. Но есть и третий вариант, если компонент дерева переписан из Delphi-стандарта под ConquestSS нужды. В таком случае стоило баг разместить не в только группе мастеров объектов, а в глобальном модуле GUI. Тогда и проверять пришлось бы вдоль интерфейса всего приложения. Ещё одно упущение тех.писательницы в том, что не описан вариант кликанья или выделения нод в дереве, клавиатурой или мышью. В одном из моих прошлых отчётов был описан баг почернения подложки до цвета шрифта при повторном клике правой клавишей мыши в дереве новоинтерфейсных мастеров. В прошлом билде подложка нод дерева страниц староинтерфейсного мастера была серой, а в текущем - голубая. Потемнения подложки в староинтерфейсных мастерах не было и нет по клику правой кнопки мыши, а в новоинтерфейсных потемнение не происходит. Это даёт мне право прибавить лишь 0.7 балла.
В процессе тестирования выявились ещё пара багов. В староинтерфейсных мастерах по правой кнопке мыши в дереве страниц открывается контекстное меню с пунктами кнопки настроек мастера, а в новоинтерфейсных этой фичи нет. 
Пустая колонка и перекрытые наименования

На страницах индексов и триггеров мастера таблиц есть первая колонка без наименования. При первом открытии этих страниц без значений весь грид выглядит весьма нелепо: первая колонка не подписана, все остальные с обрезанными именами и перекрывающими их стрелками серверной сортировки. Это противоречит правилам видимости и понятности важной информации. Эти два бага не столь критичны, поэтому с билда сниму за них один балл.
Export Wizard 0.8+0=0.8 из 2 возможных, -0.5 за баг
The Export Wizard’s window is now restored correctly after restarting the application without the database connection.
Окно мастера экспорта теперь корректно восстанавливается после перезагрузки приложения без коннекта к базе.
Во-первых, стоит пояснить, что речь идёт о мастере экспорта данных, а не, например, схемы. Во-вторых, этот модуль имеет возможность смены коннекта, поэтому должен поддерживать автоопределение активной сессии при открытии окна и отключении коннекта. В-третьих, рабочая область SD должна быть настроена так, чтобы окно мастера автоматически открывалось при запуске приложения. Это устанавливается на странице "View / Preferences / General / Workspace" несколькими опциями. В прошлом билде автооткрытие окна без подключения к базе сопровождалось ошибкой доступа, в текущем же проблемы нет, то есть баг можно считать исправленным. Но полный балл ставить нельзя, так как тех.писательница забыла про конкретику.
В рамках теста всплыла недоделка главного меню и тулбара, которые не позволяют открыть эти сессионно-независимые окна при отсутствии коннекта к базе. Напомню, что сессионная независимость мастеров экспорта и импорта данных была введена не так давно, а вот их экшены до сих пор остаются неактивными. Это примечание снимает полбалла с билда.
If the "Change Owner To" option is empty when exporting a script, the original object owner is specified in the output file.
Если опция смены владельца пустая когда выгружается скрипт, то исходный владелец объекта подставляется в выходной файл.
Для тестирования фикса проведём по два экспорта из прежнего и текущего билдов. Один с включенной галкой о приписке владельца и другой с выключенной. Можно ещё варианты проверить, когда в редакторе имени владельца пробел или точка, которые по правилам наименования владельцев в рамках документации Oracle считаются пустыми наименованиями, но для SD их считаю частными случаями и предлагаю вам самостоятельно на таких примерах поискать баги модуля. Мои тесты ограничивались insert-скриптами, а имя владельца редактировалось лишь в режиме включения владельца в скрипт. При отключении галки оба билда не меняли содержимое редактора. Да и файлы экспорта ничем не отличаются. Так что ответственно заявляю, что фикса нет. То есть и балла нет.
Constraint / Table Wizard 0.9 из 1 возможного
When the check box "Exclude users with no objects from the Schema list" is selected, users with no objects are no longer shown in the list of constraints.
Когда чек-бокс для исключения юзеров без объектов из списка схем выбран, юзеры без объектов больше не показываются в списке констрейнтов.
Сначала попытаемся понять, в каком модуле сделан фикс. В мастерах таблиц и вьюверов есть страница с констрейнтами, а для ключей существует в SD самостоятельный мастер создания и их настройки. Тех.писательница этого не уточнила, поэтому придётся проверять оба места. Также не сказано, что опция о списке схем и юзеров настраивается в "View / Preferences / General / Session". Итак, тех.писательница не права в том, что в описании фикса упустила констрейнты вьюверов и возможность выбора объектов иных схем лишь для внешних ключей. Для теста переключаем опцию в настройках приложения и создаём внешний ключ для таблицы или вьювера. Предварительно в базе создадим пользователя без объектов, чтобы отследить отработку фильтра по значению вышеозначенной опции. Фикс сделан, но полного балла не дам из-за неполноты описания.
Table Wizard 1 из 1 возможного
The confirmation message is now shown on trying to truncate a partition from the wizard.
Сообщение подтверждения теперь показывается при попытке очистить партицию из мастера.
В одном из прошлых отчётов мной было подмечено, что диалог подтверждения о выполнении "опасной" операции не распространяется абсолютно на все места. Полагаю, что это именно тот фикс, вернее, его часть. Для тестирования необходимо переключать опцию "Session / New Session.. / Options / Database Type / Confirm execution required for the following statements: DML, DDL" и в таблице с партициями, но ненужными данными, исполнять очищение. Предупреждение появляется в текущем билде и приносит балл.
Job / View / Materialized View Wizards 1 из 1 возможного
Pressing the tab key no longer removes the cursor from the SQL statement editor.
Нажимание кнопки табуляции больше не убирает курсор из редактора sql выражения.
На некоторых страницах перечисленных мастеров есть редакторы для формирования и правки анонимного pl/sql блока или выражения выборки данных. Подобные окна есть и в иных мастерах объектов, например, шедулеров или триггеров. Поскольку окно редактора кода является частью интерфейса, по элементам которого обычно переходят кликом клавиши табуляции, а в редакторе текста табулятор должен вводить служебный символ, то описанный баг говорит о наличии коллизии экшенов. Текущий билд её исправил.
Online Support Desk 1 из 1 возможного
The "Reply to message" toolbar button is no longer active when an empty folder is selected.
Кнопка на тулбаре для ответа на сообщение больше не активируется, когда выбрана пустая папка.
Похоже, что это баг из моих отчётов после добавления фичи о формировании ответа на OSD сообщение из списка. Тогда это была регрессия. Теперь она поправлена.

Итого по билду: 4.9+9.5=14,4 баллов из 8+23=31 возможных дают 14.4/31=46% готовности к передаче билда пользователю, но за минусом -2-4.5=-6.5 баллов за баги.

воскресенье, 9 августа 2020 г.

DB IDE

26 апреля 2002 года на общем собрании Кольчугинского филиала компании "Real System for Corp." (RSC) было объявлено о самостоятельном направлении в развитии продукта "Table Magic", который начал своё существование ещё на базе отдела АСУП при заводе "Электрокабель" (ЭКЗ), а затем в 2000 году вместе с "родителем" исходники перекочевали в маленькую компанию разработчиков. В мае 2002 года на московской конференции продуктом, состоящим из "умного грида данных" и редактора хранимых подпрограмм, заинтересовался австрийский бизнесмен, поэтому в июле команду укрепили вторым программистом. Поскольку на тот момент мне приходилось тестировать смежный продукт этой же компании, то мои знания "Table Magic" сначала помогли "подчистить" презентацию и впоследствии привели на место тестировщика. Европейский аналитик порекомендовал множество идей, в том числе переименование в "DatabaseVoyager" (DV) и формирование американской компании "Conquest Software Solutions" (ConquestSS). К началу моей деятельности в августе 2003 года навигатор объектов насчитывал около полутора десятка типов объектов, которые и надо было мне тестировать. Каждый из объектов, добавляемый в список поддерживаемых, имел свой мастер по обработке и некоторые функции в отдельных модулях DV. Постоянно прибавляясь к 2017 году их накопилось более шести десятков. И только спустя пятнадцать лет у владельца продукта единожды возник вопрос о том, как проводится тестирование к тому времени уже давно переименованного продукта SQLDetective (SD).
Как вы понимаете, изначально никакого процесса тестирования в RSC не существовало, поэтому мне пришлось искать варианты самостоятельно. К тому же, руководитель проекта ставил программистов на несколько ступеней выше меня и не позволял вытягивать знания из них, а вместо этого отсылал все мои вопросы к самостоятельному изучению документации базы данных Oracle, собственно говоря для которой и создавался интерфейсный продукт, конкурирующий с TOAD от Quest Software. Итак, знания о новом объекте существенно отличались у программиста и тестировщика, а все задачи на разработку и тестирование были весьма краткие: "добавить поддержку объекта NN". В понимании программиста это зачастую ограничивалось созданием мастера объекта, поскольку он опирался лишь на статьи по его созданию (CREATE), редактированию (ALTER) и удалению (DROP). Но взгляд тестировщика на термин "поддержка объекта в продукте" более широк и рассматривает все операции (GRANT, REVOKE, ANALYZE, PURGE, ...) над объектом, доступные в базе данных. Эти мои обширные знания вынуждали формировать лишь на этапе тестирования, а не в процессе планирования, множество заданий на доработку.

Итак, первым шагом в тестировании нового поддерживаемого объекта было изучение документации. На это в моём плане по тестированию отводился целый день, поскольку в SD поддерживалось несколько версий базы. Сначала для последней версии базы распечатывались статьи по созданию (CREATE), редактированию (ALTER) и удалению (DROP) объекта. Затем тексты сравнивались с каждой предыдущей версией и в распечатке делались пометки о новшествах и утилизациях опций. Документация по объектам Oracle довольно хорошо структурирована, поэтому легко вычленялись необходимые статьи, в которых достаточно было сравнить лишь схемы DDL. Со временем в помощь разработчикам и тестировщикам в SD появился модуль "Oracle Documentation Browser", в котором можно было проиндексировать сразу все пять (на тот момент - 7.3, 8.0, 8.1, 9.0, 9.2, а позже к ним добавлялись 10.1, 10.2, 11.1, 11.2, 12) версий базы. Поиск в этом модуле позволил расширять тестирование статьями про иную (GRANT, REVOKE, ANALYZE, PURGE, ...) обработку объектов и связи, зависимости с другими объектами (точки восстановления с архивами, логи м/в и группы м/в, таблицы и их индексы, триггеры, констрейнты). Но некоторые (POLICY, MV GROUP, RESOURCE PLAN, ...) объекты БД Oracle регулируются не самостоятельными командами, а системными (DBMS_RLS, DBMS_REFRESH, DBMS_RESOURCE_MANAGER, ...) пакетами. Для их тестирования достаточно одной статьи, в которой пакетными процедурами и функциями описаны все действия над объектом, что немного упрощало дело. К концу первого дня у меня получался распечатанный план тестирования в разрезе версий БД и по операциям над объектом, по объёму которых можно было определить необходимое время на все последующие проверки. Так, на "большие" объекты (таблицы, шедулеры) минимально требовалось от пяти дней, а на самые "маленькие" (последовательности, операторы) - до двух дней.
Второй шаг - основное тестирование функциональности - проверяет корректность создания, редактирования и удаления объекта средствами нового интерфейса. Все эти операции в минимальном объёме выполняются на каждой из поддерживаемых версий БД. Следующим проходом по версиям базы тестируются различия схем DDL. И самое сложное, оставленное на закуску, заключается в детальной проверке всех опций DDL, которые в большинстве случаев достаточно посмотреть на последней версии базы.
На третьем шаге тестирования поддержки нового объекта в SD проверяется возможность выдачи и отъёма привилегий на объект через мастер привилегий, если таковые предусмотрены документацией Oracle. Здесь же рассматривается принадлежность объекта юзерской схеме или его системное положение. Не стоит забывать и про версионность базы данных.
Четвёртый шаг рассматривает взаимосвязи объектов через их мастера и панели выгрузки DDL. Например, мастер триггера вызывается из мастера таблицы, а индексный кластер можно создать в базе только после создания индекса. Тестирование SD расширяется модулями Schema Extractor, Compare DB и другими, где как-то фигурирует DDL нового объекта. Очень серьёзно здесь стоит приглядываться к различиям в версиях БД.
Заключительным пятым шагом проверяются всевозможные операции над новым объектом в различных утилитах SD. Например, релокацией партиций занимается "Storage Manager", перекомпиляция хранимой подпрограммы автоматически происходит при её открытии в "Stored Program Editor", для анализа вьювера существуют самостоятельные интерфейсы в рамках одного объекта или целой схемы. Как уже ранее говорилось, именно этот шаг даёт максимальный прирост задач программисту на доработку.

Тесты доступности, удобства, производительности и безопасности лучше проводить не самостоятельным шагом, а в рамках каждого из описанных. Набив руку на первом десятке объектов, у меня сформировалось устойчивое понимание, что только комплексное тестирование может сократить время на проверки, предусмотренные шагами со второго по пятый. К сожалению, владелец продукта никогда не жаловал процесс тестирования, поэтому ни при waterfall, ни при agile не был приверженцем декомпозиции задач и детального планирования, даже совмещая роль скрам-мастера. Менеджер продукта и первый программист откосили в своё время от армии, поэтому и не стремились к порядку, не умеют и до сих пор чётко следовать правилам и сдерживать данные обещания, как это принято у честных бизнесменов.  Очевидно поэтому вопрос РМ-а о вышеописанном стал чисто риторическим с его стороны, а ответ оформился в статью только спустя ровно семнадцать лет после оформления моего первого бага по SD, но уже не для команды ConquestSS, а для вас - простых тестировщиков.

вторник, 7 апреля 2020 г.

ТО о SD 5.1.1.316

Отчёт о тестировании SQLDetective 5.1.1.316, опубликованном 31 марта 2020 года. Проверки проводились по Release Notes. Незадолго до этого обновления компания ConquestSS заспамила потенциальных покупателей предложением о небывалой скидке - пара продуктов (CDB+SD) за полцены, а сразу после публикации текущего билда завалили предложениями о покупке только SD, но также с 50% скидкой. Обычно такие кампании проводились в период застоя (неделя конца августа), а эта почти месячная акция заставляет задуматься - не закрытие ли производства предполагается? Надеюсь, вы уже сами сможете понять "какого бага билд", ознакомившись с моим отчётом.

IMPROVEMENTS  0+0.5+0.7=1.2  из 3 возможных, -1-0.8-1-0.3=-3.1  за баги
Preferences  0 из 1 возможного, -1 за баги
• Removed the “Notify about AMS expiration” check box from the License Key page.
Убран чек-бокс для предупреждения об окончании периода оказания сервиса поддержки со страницы лицензионного ключа.
Структура RNs подразумевает блок удалений, но этот пункт оказался в группе новшеств. Поэтому, кроме проверок по чит-листу для опций, необходимо протестировать систему AMS, то есть поискать изменения в лицензионном соглашении или в других источниках на предмет оказания техподдержки. Примечание: убранная опция имела иное наименование в режиме ограниченной по времени версии (в нашем обычном случае - триал). С интерфейсной точки зрения новшество, а вернее - удаление, выполнено. Поскольку хелп не менялся с 28/11/2019, то в нём до сих пор имеется инфа про возможность сократить спам. К тому же, в хелп-топике "Preferences – License Key" всё ещё нет описания давно появившейся кнопки "Update License.." на странице лицензионного ключа настроек приложения. Функционально напоминания переместились из самостоятельного окна трея в панель системных предупреждений, о чём ни слова не сказано в RNs и хелпе. Никак не могу сказать, что это новшество чем-то улучшило работу пользователя с приложением, поскольку юзер теперь не может управлять спамом. Стоит пояснить, что предупреждения появляются автоматически при каждом старте приложения с увеличивающейся регулярностью при приближении даты очередного платежа: за месяц, за неделю, за 5-4-3-2-1 дней. В случае многопользовательской лицензии админа продукта затерроризируют пользователи без выхода в инет своим неравнодушием и предупредительностью. Во избежание именного этого раздражения изначально и была введена эта опция. Поэтому описанное новшество считаю именно ухудшением, а не улучшением. Если бы QA вовремя вмешался в планирование фиксов, то это ухудшение не было бы внедрено. Поэтому пункт RNs не получает вроде бы заслуженный балл (сделано во вред юзеру) и к тому же теряет ещё балл за неполноценность исполнения (текст RNs ограничен одним случаем и не упомянут функциональный перенос, хелп не актуализирован).
Нотификации об окончании периодов тех.поддержки не единственные перенесены в системную панель. Код модуля OSD обрабатывает всё, связанное с тех.поддержкой, видимо поэтому и конфирмация о сохранении (полагаю, и об отправке) OSD-сообщения перенесена из самостоятельного диалога в панель системных предупреждений. Об этом изменении функционала не упомянуто в RNs, да вдобавок оно принуждает пользователя к дополнительным переживаниям (подтверждение не входит в рабочую область приложения, а значит теряется из области видимости) и телодвижениям (системная панель - это соседнее окно, которое нужно активировать отдельно от работающего приложения). Скрытые переделки такого рода вынуждают снимать баллы с билда: -0.5 за само изменение функционала и -0.3 за не оповещение юзера.
Session Navigator   0.5 из 1 возможного, -0.5-0.5=-1 за баги
• Added all missing fields to the Process tab and the most frequently used ones are now displayed by default.
Добавлены все забытые поля на страницу процессов и более востребованные теперь отображаются по-умолчанию.
Подразумеваю, что данное новшество зависит от версии базы данных. Скорее всего в Oracle 12-ой версии и более последних добавились параметры отслеживания сессионных процессов. К сожалению, тех.писательница этого не упомянула. Искать дополнительно подсказки в хелпе бесполезно, потому что он давно (с ноября 2019г.) не актуализирован. Видимо совмещение тех.писательницей функций маркетолога (именно она спамила потенциальных покупателей) не позволяет ей управляться с двумя должностями одновременно. Полноценно проверить новшество у меня нет возможности по двум причинам: 1) до сих пор работоспособность модулей Session Navigator и Top Session Locator не приведена в надлежащий вид из-за проблемы при перекодировке юзера системы (запрос "select osuser from v$session" для всех системных сессий возвращает иероглифы, при том что для сессий приложения отрабатывает благополучно); 2) нет баз Oracle различных версий. Но список полей даже в модуле без данных сравнить с предыдущей версией SD вполне доступно: к ранее имевшимся двенадцати полям добавились ещё тринадцать, но не из системного вьювера процессов, а из системного вьювера сессий и может ещё какого-то (отследить запрос не удаётся из-за бага с системным юзером).
Добавленные параметры в числе дефолтных
Примечание: отслеживать запросы можно тем же модулем Session Navigator, но в предыдущих версиях SD, например, 4.4 или 4.7.1, которые иначе обрабатывали юникод. Возможно список полей стал более обширен, но список колонок в Dataset Manager абсолютно пустой. Это означает что, либо в грид по-умолчанию выведены все поля, а не только часто используемые, либо проблема с системным юзером не позволяет мне оценить полноту новшества и параметры процессов можно настроить в большем количестве, либо ограничение версии базы позволяет оценить лишь доступные добавления. В любом случае, новшество как-то осуществлено, но даже элементарный функционал мне не удалось проверить. Поэтому пункт RNs получает лишь 0.5 балла за наличие и теряет -0.5 из-за древнего бага. 
В процессе локализации бага "partial multibyte character" обнаружилась проблема с настройкой тулбара для области SQL History в окне SQL Editor. Это не новый баг текущего билда. Его появление зависит от каких-то изменений в модуле Icon Dictionary, поскольку теперь тулбар истории запросов абсолютно невозможно настроить - любой клик в IDic оставляет на тулбаре истории запросов редактора лишь одну кнопку копирования текущего текста в новую закладку редактора. Это серьёзный интерфейсный баг для SQL Editor из-за отсутствия обходных путей, поэтому билд теряет ещё -0.5 балла.
Code Editor   0.7 из 1 возможного, -0.3 за баги
• All occurrences of selected text are now highlighted in the Code Editor.
Все случаи выбранного текста теперь подсвечиваются в редакторе кода.
Очень странная формулировка новшества, из которой абсолютно не понятно о каких выборках текста идёт речь. На ум приходит только функция поиска по тексту, либо подсвечивание имён объектов при работе "Ctrl+Click". Если бы тех.писательница более тщательно подбирала термины из общепринятого глоссария, то вместо слова "selected" было бы "searching" и у меня не возникло бы никаких проблем с пониманием новшества. Интуиция меня не подвела, все искомые символы теперь подсвечиваются жёлтой подложкой сразу после позиционирования курсора на первом найденном. Тестирование осуществляем на любом своём тексте, набранном или вставленном в SynEdit (область редактора кода в SQL Editor, Stored Program Editor). В обычном текстовом редакторе (дополнительное окно для символьного поля в гриде данных) ничего подобного не приделано. Результаты моих исследований поиска в редакторе кода не утешительны. Новшество не доделано в двух направлениях: 1) настройки приложения не обрели новую опцию, то есть жёлтый цвет ни на что иное не сменить, что может быть опасно наложением и смешиванием раскраски; 2) первое найденное вхождение первоначально подсвечивается серым (по-умолчанию), а после перехода курсора на следующее вхождение (по F3) его подсветка обнуляется вместо замены на жёлтую подложку (ещё веселее случай поиска с середины кода). Если же поиск осуществляется в пределах предварительно выделенного (подсвеченного) текста, то подсветка последующих найденных вхождений отрабатывает достаточно логично. В процессе тестирования поиска в рамках выделенного текста выяснились баги: 1) при достижении предела текущего направления поиска больше не предлагается возобновить его с первоначально искомой позиции; 2) смена направления поиска при достижении предела в рамках выделенного текста всё ещё предлагает возобновить поиск с исходной позиции, но при этом границы поиска обнуляются: нет расцветки, исходная позиция приравнивается к началу/концу всего кода. За усовершенствование могу дать лишь 0.7 балла и за баги сниму 0.3 балла.

BUGS FIXED   0.5+1+0+1+0+1+0+0=3.5   из 2+5+1+2+1+1+1+1=14 возможных
Core    0.5+0=0.5 из 2 возможных
• Fixed the error “Could not initialize taskbar. Error:-2147467263” when running SQLDetective on Windows Server with Citrix.
Исправлена ошибка инициализации таскбара при запуске приложения на специализированной системе.
Это фикс бага из числа CustDev (индивидуальная разработка). Вероятно, какой-то перспективный покупатель пренебрёг системными ограничениями, описанными в ReadMe, инсталляционном мастере и на сайте компании ConquestSS, где указаны лишь конкретные операционные системы. Указанная в баге вариация платформы не является распространённой, поэтому фикс авансом примем на веру, перенаправив его проверку конкретному пользователю, зарегистрировавшему проблему. За такие индивидуальные правки можно получить не более 0.5 балла.
• Files in UTF-8 (with no BOM) and UTF-16 are now imported and analyzed correctly.
Файлы определённого сочетания юникодности теперь импортируются и анализируются правильно.
Текстовка бага ограничивает тесты особыми форматами текстовых файлов, путает понимание наличием терминов "импорт", "анализ" и "правильно". О каком импорте в данном случае идёт речь? Импорт данных в соответствующем мастере или открытие текстового файла в редакторе кода? Анализ кода в редакторе имеется ввиду или анализ объекта базы по командам ALTER, ANALYZE? Какие конкретно правила теперь учитываются и для каких действий и условий, если опираться в тестах на термин "правильно"? Ни один из вопросов не проясняется за счёт причисления пункта RNs к блоку Core. Такая размытая формулировка даёт мне право не включать фикс в билд. Чтобы не выявить массу дополнительных багов, как несоответствие термину "correctly", не буду проводить тесты гипотез. Поэтому только 0 баллов.
Примечание: если вам сильно захочется помучаться и поискать фикс, то тестовые данные - файлы - создавайте изначально в независимом стабильном приложении - Блокнот OS Windows. Символы можно набирать через альтернативный ввод: удерживая ALT набрать трёх-пятизначный ASCII-код символа. Внимательно выбирайте юникодные параметры сохранения файла, которые доступны в ниспадающем списке диалога сохранения файла.
SQL Editor   0+0.5+0.5+0+0=1  из 5 возможных
• The SQL Editor no longer hangs if the script execution is suspended after an error.
Редактор больше не зависает, если исполнение скрипта отсрочено после ошибки.
Для проведения тестирования необходимо удостовериться, что модуль настроен должным образом. Для этого откроем страницу "Preferences \ Code Editors \ SQL Editor" в установках приложения и проверим статусы опций "Prompt to break execution for all statements" (диалог позволяет обрабатывать исполнение скриптов в ручном режиме) и "Suspend script execution on error" (включенный режим откладывает выполнение после ошибки автоматически). В предыдущих билдах исполнение любого скрипта, даже без ошибок, подвешивало окно процесса исполнения после второго-третьего запуска скрипта. В текущем билде этот диалог не мозолит глаза, но после его исчезновения всё окно SQL Editor теряет всяческое управление: на тулбаре нет ни одной рабочей кнопки, закладки не реагируют на клики мышью, контекстное меню не появляется даже по нажатию функциональной клавиши на клавиатуре, лишь некоторые глобальные экшены доступны по горячим клавишам (поиск "Ctrl+F" не срабатывает, но запуск скрипта "Ctrl+Enter" или обновление данных "F12" происходит). Благо, закрытие окна доступно без проблем и дополнительных средств. В отличие от предыдущего билда, диалоговое окно процесса переименовано в авто-детектирование плана исполнения, но набор интерфейсных элементов остался прежним. Так что могу заключить, что фикс не решает проблему. Программист что-то изменил, но никакой ощутимой пользы юзеру не предоставил. Поэтому пункт RNs не получает ни балла.
• Removed the limit on the number of characters in a single line.
Убран лимит на количество символов в одной строке.
В предыдущем билде в редакторе кода (SQL Editor, Stored Program Editor), окне для вывода результатов запроса "SQL Editor / SQL Output" и текстовом редакторе (дополнительное окно для просмотра и ввода значений в символьные поля модуля SmartDataset) количество символов одной строки ограничивалось 1024 или 255 позициями. Но, если в редактируемые области ещё можно было вставить из буфера не ограниченное количество, то вывод значений запроса почему-то был обойдён вниманием программиста. Поправили возможность набивать символы в одну строку более 1024 символов, но строки в SQL Output окне и даже при spool-команде в файл всё-ещё обрезаются после 255 знаков. Этот баг выяснился мной в процессе подготовки статей о юбилярах по годам, поэтому пришлось воспользоваться не удобствами SD, а надёжностью SQL*Plus, который не обрезает, а всего лишь переносит длинные строки.
Установки вывода результатов запроса
Кстати, SD не жалует команду переноса строк: никакие настройки приложения не соблюдаются (в установках количество символов 1000 и включен перенос, а в выводе - только 255 в одну строку), даже с включенным параметром переноса "set wrap on" скрипт выполняет обрезание строк вывода. За половинчатое решение проблемы (редактор кода исправлен, но модуль вывода - нет) билд получает лишь полбалла.
• Fixed the splitter positioning on maximizing/restoring the window.
Зафиксировано позиционирование разделителя при максимизации и восстановлении окна.
Интерфейс SQL Editor имеет пять сплиттеров в разных местах: между редактором и закладками для отображения результатов, в двух закладках с результатами, между деревом кода и редактором, между историей запросов и редактором. О каком из них речь в данном пункте? Это придётся выяснять в исследовательских тестах. А чтобы выявить уровень регрессии к вариантам сворачивания и максимизации окна следует добавить его закрытие/открытие в режимах максимизации и средней величины, а также статус свёрнутости межсплиттерных панелей.
Легенда:
1 между редактором и закладками для отображения результатов
2 на закладке Data Output
3 на закладке статистики
4 между деревом кода и редактором
5 между историей запросов и редактором
вариации \ сплиттеры 1 2 3 4 5
размер раскрытых панелей
из среднего в максимизированный без изменений без изменений без изменений без изменений увеличивается
из максимального в средний без изменений без изменений без изменений без изменений уменьшается
закрытие и открытие среднего без изменений без изменений без изменений без изменений без изменений
закрытие и открытие максимизированного без изменений без изменений без изменений без изменений без изменений
закрытие среднего, открытие максим. без изменений без изменений без изменений без изменений увеличивается
закрытие максим., открытие среднего без изменений без изменений без изменений без изменений уменьшается
состояние прижатых панелей
из среднего в максимизированный оба направления учитывают тулбар без изменений без изменений без изменений без изменений
из максимального в средний оба направления учитывают тулбар без изменений без изменений без изменений без изменений
закрытие и открытие среднего оба направления учитывают тулбар без изменений без изменений без изменений без изменений
закрытие и открытие максимизированного оба направления учитывают тулбар без изменений без изменений без изменений без изменений
закрытие среднего, открытие максим. оба направления учитывают тулбар без изменений без изменений без изменений без изменений
закрытие максим., открытие среднего оба направления учитывают тулбар без изменений без изменений без изменений без изменений
В общей сложности получается 60 тестов, которые надо выполнить на двух билдах - прошлом (выявить места багов) и текущем (убедиться в полноте мест исправлений). Да, некоторые общевидимые вариации можно примечать единым тестом, что сократит ваше рабочее время. Такую компоновку причисляю к комплексному тестированию. Зелёным помечаем положительные изменения, красным - недоправки, жёлтым - отсутствие надобности фиксов. Поскольку исправлено поведение только главного сплиттера при прижимании, а не пиксельно-процентном соотношении высот панелей, и совсем не исправлено изменение ширины панели историй запросов, то пункт меню, недобросовестно описанный тех.писательницей, приносит билду лишь 0.5 балла.
• Fixed the ability to view data of the referenced object type.
Поправлена возможность просмотра данных ссылочных объектных типов.
Если вы хорошо знакомы со структурой объектов базы данных Oracle и возможностями приложения SD, то интуиция может вывести вас, как и меня, на таблицу с объектными полями, либо на объектную таблицу, два типа запросов из которой выполнены в закладку Data Output. Первый тип запроса - прямое перечисление полей, а второй - через спецсимвол звёздочки "select * from". Для теста нам нужны будут две таблицы на основе объектных типов: вся таблица и лишь некоторые поля. Пример возьмём из документации по базе данных Oracle.
-- создаём объектный тип "obj1" с двумя атрибутами "fld1" и "fld2"
CREATE TYPE obj1 AS OBJECT (fld1 VARCHAR2(100), fld2 NUMBER)
   NOT FINAL;
/
-- создаём объектную таблицу "obj_tbl" на основе объектного типа "obj1"
CREATE TABLE obj_tbl OF obj1;
/
-- создаём таблицу "obj_fld_tbl" с полем "obj_fld " на основе объектного типа "obj1"
CREATE TABLE obj_fld_tbl (tb_fld number, obj_fld obj1);
/
Для обеих таблиц генерим (перетаскивание объекта из дерева Object Navigator предлагает тексты запросов "Select *" и "Select All") в SQL Editor запросы двух типов. Грид таблицы "obj_tbl" в обоих случаях состоит из двух столбцов, а гриды таблицы "obj_fld_tbl" состоят из двух и трёх столбцов для запросов "Select *" и "Select All" соответственно, как в предыдущем, так и в текущем билдах. Для каждого поля при необходимости открывается дополнительный редактор соответствующего типа (калькулятор, текстовый редактор или грид ссылочных полей). В этом плане между билдами тоже нет никакой разницы, из чего заключаем, что либо никакого фикса не сделано, либо тех.писателю было объяснено исправление программистом не точно, либо у тех.писательницы не хватило знаний для конкретизации фикса в рамках текста RNs. Отсутствие изменений даёт мне право на нулевой балл.
• Fixed parsing of the quotes in the SQL*Plus comments (REM).
Исправлено вычленение кавычек в комментариях SQL*Plus.
SQL Editor предназначен для исполнения не только команд SQL, но и специфичных для SQL*Plus действий. Комментарий в скрипте может быть трёх типов: однострочный после двойного минуса или REM символов, многострочный в окружении слешей и звёздочек. Кавычки в коде могут быть одинарными, двойными и альтернативными. Поскольку в RNs не указан тип кавычек, то исследуем изменения в билде для всех трёх типов, но альтернативные глянем лишь одной вариации, чтобы не превращать тесты в бесконечность. Хотя вполне возможны баги в каких-то не указанных вариациях. Для достоверности тестов будем использовать одинаковые кавычки в закомментированной и исполняемой части скрипта. Обращать внимание стоит на графическое (цветовое) отображение текста в редакторе (интерфейсный компонент SynEdit) и результат от исполнения скрипта (на закладке SQL Output), поскольку тех.писательница не указала предмет применения парсера.
Срабатывание комментариев при исполнении скрипта
В прошлом билде никаких проблем при исполнении скрипта с кавычками в комментариях не было. В текущем билде заметно только отображение результатов, но отмеченная в RNs команда REM не претерпела вообще никаких изменений. Поэтому пункт RNs не получает ни балла из-за  полного несоответствия текста фикса новому функционалу.
Stored Program Editor  0  из 1 возможного
• An access violation error no longer occurs on the stored program execution.
Ошибка доступа больше не случается при исполнении хранимой программы.
Поскольку не конкретизирован тип исполняемой программы и причины ошибки, то попытаемся воспроизвести баг на любом объекте. И поскольку предыдущий билд исполняет благополучно первую попавшуюся мне процедуру, то этот мнимый фикс получает звание приписки и не даёт билду ни балла.
Session Navigator  0.5+0.5=1   из 2 возможных
• The error ‘’‘is not a valid integer value.’ no longer occurs when there are no results to show in the filtered Session Navigator.
Ошибка инвалидного целого значения больше не случается, когда в отфильтрованном навигаторе сессий нет результатов для отображения.
К сожалению, навигатор сессий не работает с базой из-за проблемы с системным юзером. А не имея иных машин для тестирования проверить фикс не могу. Авансом на веру дам 0.5 балла.
• Fixed the ability to kill database sessions in the RAC instance.
Исправлена возможность убивать сессии базы с распределённым доступом.
На моём тестовом стенде не только не работает модуль навигатора сессий, но и нет базы с распределённым доступом. Поэтому авансом на веру дам 0.5 балла.
Database Connection  0   из 1 возможного
• An access violation error no longer occurs on trying to connect to a new database after the previous connection was lost.
Ошибка доступа больше не случается при попытке коннекта к новой базе после потери предыдущего коннекта.
В данном случае необходимо определиться в понятиях "новый коннект" и "потеря предыдущего". Поскольку основное окно коннекта к базе имеет список последних коннектов, то предполагаю, что "новым" коннект должен быть для этого списка, то есть надо подключаться либо юзером, либо именем базы, либо её типом, не имеющим аналогичное сочетание в списке предыдущих коннектов. Потеря коннекта может быть разных видов: физическая - отключение рабочего компьютера от сети/сервера с базой, логическая - убивание или отсоединение сессии средствами администратора базы. Важным моментом надо считать текущий модуль приложения, выявивший потерю сеанса, и работоспособность мониторинга коннекта через настройку "Preferences \ General \ Session \ Keep connection alive - png DB every [NN] seconds". Также не лишней будет гипотеза о превышении граничных значений: 1) окно коннекта имеет опцию в 20 сохранений по-умолчанию предыдущих удачных коннектов; 2) SD можно настроить на разрешение только одной сессии базы в рамках запущенного приложения "Preferences \ General \ Session \ Only one connection per SQLDetective instance". Ещё одним аспектом тестирования этого фикса можно считать наличие в приложении простого окна коннекта к базе, которое можно вызвать командой connect в SQL Editor. Какой из пяти вариантов давал ошибку в прошлом билде? Придётся искать тестировщику, потому что тех.писательница поленилась уточнить условия, то есть актуализировать баг. Мне не удалось воспроизвести баг в прошлом билде по догадкам, поэтому пункт RNs остаётся без баллов.
Database Connection Options  1  из 1 возможного
• The error that is shown on trying to add a new database connection type with the existing connection type name is no longer handled by EurekaLog.
Ошибка, которая показывается при попытке добавить новый тип коннекта к базе с существующим именем типа коннекта больше не отслеживается утилитой EurekaLog.
Тех.писательница в попытке конкретизировать баг наворотила текст, который вполне можно было уместить в меньшее количество словарных оборотов: добавление дубликата типа коннекта обрабатывается как внутренняя ошибка приложения вместо общесистемной. Стоит пояснить, что  внешняя утилита EurekaLog отслеживает большинство ошибок приложения и некоторые проблемы базы, формируя системные логи. Если юзер сам добавил дубликат в число типов коннектов, то это не может быть ошибкой системы и должно обрабатываться интерфейсом приложения. Описанная обработка существовала в SD прежних версий, до перехода программистов на современный компилятор DelphiXE. Для воспроизведения в предыдущем билде откройте окно опций коннекта из окна последних коннектов, в блоке Database Type кликните по кнопке с плюсиком и введите наименование, аналогичное видимому в комбобоксе, после клика по кнопке подтверждения оцените окно и текст ошибки. Этому регресс-багу уже пятый год. Полагаю, что его отыскали в закромах BTS и включили в билд лишь для массовости правок, потому что у подобной мелочёвки обычно очень низкая важность. Но, тем не менее, он приносит целый балл.
Code Insight   0  из 1 возможного
• The exception “Object lock not owned.” no longer occurs when the Code Insight window is opened when a huge script is loaded in the SQL Editor or Stored Program Editor.
Исключение об отсутствии владельца блокированного объекта больше не срабатывает, когда окно помощника кода открыто для огромного скрипта, открытого в редакторах кода.
Для воспроизведения бага в прошлом билде вам придётся самостоятельно определить огромность скрипта, исходя из системных возможностей вашего компа. Для некоторых тестовых стендов несколько лет назад губительным был размер в два мегабайта, для иных - в десять мегабайт или 500 килобайт. Реальные юзеры присылали в тех.поддержку тела пакетов в сотни тысяч строк, так что можете начать с простой дублированной процедуры. Перед открытием файла в редакторе убедитесь, что подсказчик кода сработает автоматически, для чего достаточно установить настройки по-умолчанию на странице "Preferences \ Code Editors \ Code Insight". Мой вольный перевод возможно сбивает с истинных шагов бага, поскольку словосочетание "when the Code Insight window is opened when a huge script is loaded" можно двояко понять: процессы открытия помощника кода и загрузки файла происходят одновременно, либо помощник кода срабатывает для уже имеющегося в редакторе текста большого размера. Поскольку первый вариант, по-моему, не реален для воспроизведения, то тестировать буду лишь второй случай. Но ни одна из моих гипотез не дала результата, поэтому предполагаю, что причина бага не только в сочетании размера скрипта и работающего помощника. Возможно где-то пересеклась работа с деревом кода или иным модулем. Так что пункту RNs не могу дать ни балла.
Datasets   0  из 1 возможного
• Fixed the ability to view data of the referenced object type.
Исправлена возможность просмотра данных объектного типа.
По аналогии с ранее проверенным фиксом в рамках SQL Editor ищем разницу в отображении данных объектной таблицы и таблицы с объектными полями. К сожалению, никаких отличий с предыдущим билдом не позволяют мне дать ни балла за фикс.

Итого по билду: 1.2+3.5=4.7 баллов  из 3+14=17 возможных дают 4.7/17=28% готовности, которая снижается на -3.1 балла за счёт выявленных багов.