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

вторник, 22 марта 2022 г.

Поддержка IT-отрасли

Кто владеет информацией, тот владеет миром. Это аксиома современности. А технологии, собирающие и хранящие, анализирующие и обрабатывающие информацию, бессмысленны в случае ограниченности её потребителей.
Ну что толку в том, что вы один знаете таблицу умножения, если на рынке действует натуральный обмен без денежной прослойки? Зачем вам быстро считать монеты, если обмен происходит не в объёмном количестве, а по качественному признаку?
Или, например, зачем вам уметь читать или говорить на иностранном языке, если все закрылись у себя дома и не ездят в гости, не обмениваются новостями. Им всё равно, что происходит у вас, вам безразличны их достижения, потому что у вас всё по разному, уникально, точечно, логично и более приспособлено к собственной местности.
Развитие конкретики исходит из конкретных традиций. Да, по некоторым статьям в чём-то можно найти единообразие, допустим, появление радио. Но тот слой общества, который ставит превыше всего доходную составляющую, любую новинку стремится присвоить себе. С другой стороны, народы с широкой душой щедры не только хлебосольством, но и помыслами, мыслями, идеями. Россиянам не столь важен факт бюрократического подтверждения, сколь возможность поделиться способностями, возможностью помощи неимущим.
Одновременно общество, внедрившее юриспруденцию для защиты материальных интересов, к сегодняшнему дню устало соблюдать законы, которые они же сами и создали. Что это? Недальновидность в разработке законодательства? Ведь принятые к исполнению правила приходится соблюдать всем, даже тем, кто их придумал, а это вдруг стало невыгодно им самим. А может это психическая неуравновешенность? "Зачинатели демократии" вдруг перестали прислушиваться к мнению большинства, считая лишь себя исключением, элитой. Спешу напомнить исторические факты о тех, которые возомнив себя богом так и не добрались до солнца и заоблачных вершин.
И это тоже информация, которая была собрана историками для того, чтобы нашему поколению жилось легче, проще, а кому-то и выгоднее.
Какой-то век назвали "каменным", какой-то "железным". А текущий, наверно, назовут "информационным". Именно эти технологии сейчас правят миром. Начиная от газет и телевидения, учитывая базы данных всех горизонталей и вертикалей, присовокупить к этому списку фонды библиотек и архивов, а также не принижая значимость профсобраний, разговоров по душам в кафешке и подворотных слухов.
Информация сегодня - это дорогой продукт, особенно если он обёрнут в актуальную идею. Так к примеру слух, как сухой хворост для костра, разжигает ажиотаж вокруг какого-нибудь товара. Опечатка или оговорка в СМИ может исказить освещение события в точности наоборот. Искусственно подобранная статистика исказит стратегию и планирование. Киборги действительно поработят мир, если МОИРы (Мастера по Обучению Искусственного Разума) аккумулируют подобную задачу в автоматы.
Страшно. Но если предупреждён, то значит вооружён. А кто как ни радетель качества в состоянии предотвратить проблемы.
Да, я намекаю на нас - тестировщиков. Так нас называют в простонародье. Мы же себя именуем чаще инженерами по качеству. И государство в этом с 2014 года нас в этом поддерживает.
Но странны меры по поддержке отрасли. Они нацелены на молодых специалистов, которые не в состоянии поднять IT-производство на необходимый уровень из-за элементарного отсутствия опыта.
Не секрет, что в IT "войти" желают многие. Но не столько из-за интереса к профессии, сколько из низкого желания получать высокую оплату за кажущиеся на первый взгляд лёгкие работы. А сложностей в IT-профессиях предостаточно. Начиная от умения услышать заказчика и впоследствии убедить его, что он получил ровно то, что заказывал. На ком лежит ответственность за качество высокоточных приборов? Кто из создателей сложных систем спокойно спит, уверенный в работе их продукта без сбоев? Кто из кодировщиков хоть раз не отправлял программу заказчику с присказкой "авось пронесёт и юзер туда не полезет"? Разве что юниоры, не нюхавшие пороху. И на них надеется государство. Эти желторотики сделают прорыв? У меня за спиной несколько десятилетий стажа в IT-отрасли, глубокое знание внутренней "кухни" производства ПО, поэтому однозначно могу заявить, что эта молодая поросль скорее всего пойдёт по пути революций и сначала сотрёт, уничтожит всё до основания, а потом с нуля напишет ширпотреб, который моментально потеряет свою пригодность.
Полагаю, что предложения по господдержке формулировали эти самые юнцы, кто-то из депутатских сынков. Хочется спросить законодателей: почему у них не возникло мысли обратиться к тем, кто действительно знает все ступени создания и поддержки продуктов? Может они не знают, что мы есть? Почему "дедушка" российского качества молчит? Александр Александров, неужто ваша проактивность спит? Или вы не патриот?
Тем, кто действительно сейчас может принести пользу российским информационным технологиям, глубоко за 27 лет. И за счёт высокой оплаты у них нет жилищных проблем. А вот что действительно поможет поднять отрасль на должный уровень, так это ничего не стоит государству. О проблемах работы с госсектором говорено и обсуждено много в рамках конференций аналитиков и тестировщиков. Полный список докладов и капризов заказчиков доступен на сайтах "sqadays.com", "analystdays.ru" и в подборках Влада Орликова на портале "vimeo.com".
Почему российское ПО не пользуется спросом на мировом рынке? Сразу оговорю, альтернативы всем популярным порталам и мобильно-десктопным программам уже имеются. Их не надо создавать с нуля или придумывать нечто новое. Просто на международном рынке так заведено, что покупается ПО только с американским или европейским лицензированием. Запад приучил мир покупать только то, что юридически заверено.
К сожалению, приходится признать, что юридический сектор в России очень слаб. Нет, специалисты подкованы знаниями, но вот убеждать оппонента словом как-то не научились или не могут в силу широты души россейской. Наше добродушие и чистосердечность нас и губит. Бизнес и экономика никогда не будут добрыми, их прерогатива жёсткость, выгода, а порою и блеф до уровня лжи.
Чем действительно государство может помочь IT-сектору, так это прозрачностью и однозначностью законодательства. ПО и рацпредложения нуждаются в юридической поддержке, а не в обилии кодировщиков. Однозначность и единое понимание заказа и готового ПО, отсутствие несанкционированных запросов и изменений в техзадании являются источниками качественного продукта. Для этого нужны юридически подкованные специалисты каждой группе разработки. Дешевле снабдить компании юристами или обучить имеющихся аналитиков и внедренцев специализированным направлениям закона и права, чем раздавать всем айтишникам ипотеки и отсрочки от армии.
По-моему, если молодые специалисты пойдут в армию и там пройдут свои первые шаги в IT-отрасли, то это будет более эффективно для самого юниора и для всего производства в целом. Там его научат действительно работать, исполнять ровно то, что запрашивается, да и окружение уже служащих специалистов является наилучшей средой для передачи опыта.
В помощь информационным технологиям хорошо бы ускорить и упростить процедуру получения патента и лицензии. Но, чтобы они не стали фиктивными, их учёт должен быть прозрачным и доступным.
К сожалению, российский менталитет врядли когда-то допустит неукоснительное соблюдение всех законов и отстаивание прав через судебные инстанции вместо сегодняшнего землячества и родственных связей. Но всё равно, если Россия считается правовым государством, то всех жителей стоит приучать к этому с малолетства. Не знаю как это соединить с широкой душой, но в этом, думаю, помогут специалисты психологии. Может они сумеют без вреда нашему национальному менталитету, социально направленному, наложить на наши характеры неотвратимость соблюдения законов, нами же придуманных.
Нужна ли молодёжь в IT? С каждым годом всё меньше и меньше, потому что кодировщики и программисты скоро будут лишними, их заменят МОИРы. Даже тестировщиков можно будет отменить, если задания составлять так, чтобы все проверки проходили автоматически. А вот без аналитиков, постановщиков задач, внедренцев врядли когда-то сможем обойтись. Они как переводчики между людьми и машинами ещё долго будут нужны, как и яйцеклетки со сперматозоидами для продолжения и совершенствования рода человеческого.
Но вот вопрос: а что подразумевается под IT-отраслью? Только создание ПО или к информационным технологиям реально причисляют и СМИ, и всю электронную технику? Информацию распространяют Средства Массовой Информации: радио, телевидение, интернет каналы соцсетей и аудио-, видео-хостингов. Так значит господдержка должна распространяться и на блогеров, репортёров? А учителя и библиотекари разве не считаются распространителями информации? В их обязанности входит анализ и сортировка передаваемых в массы знаний. АСУТП-ишники, то есть электронщики, разве не считаются IT-ишниками? Абсолютно во всех сферах производства имеются должности так называемых "компьютерщиков", которые не создают, но поддерживают в рабочем состоянии уже внедрённые информационные технологии. Их тоже государство причисляет к тем, кому будет отсрочка от армии, ипотеки и низкие налоги? Не многовато ли категорий работников подпадает под IT-отрасль? Очевидно, что законодателям не хватает профессиональных тестировщиков документации, которые заранее выявят противоречивость, избыток и прочие недостатки требований. Ещё раз повторюсь, что всякому производству нужны профессионалы, а не дилетанты. Чтобы сразу после учебного заведения стать профессионалом нужна практика и передача ученикам актуальных знаний, либо максимально агрегированные базовые навыки.
Мой профессиональный взгляд на сегодняшнюю меру поддержки IT-отрасли однозначен: не эффективна для развития, а наоборот губительна. Покажу на примере. Допустим в какой-то группе разработки ПО возник форс-мажор - перед самым выпуском исчез (умер, уволился или ушёл в отпуск) работник, на котором держались основные задачи. Что в этом случае предпримет кадровик? Из любого безвыходного положения всегда есть три выхода, но тестировщик знает о трёх. Как QA предложу:
1) перепоручить работы имеющемуся персоналу, параллельно повышая его уровень курсами, то есть использовать внутренние резервы за счёт имеющихся, что является самым дешёвым вариантом (можно даже сэкономить на зарплатном фонде, добавив этому работнику лишь половину ставки ушедшего), но немного потратиться на дообучение, которое впоследствии принесёт ещё большую пользу. Никаких трат (денег и времени) в этом случае на введение стороннего члена команды не потребуется, стадия онбординга не замедлит разработку продукта и зарплатный фонд можно снизить, как и себестоимость продукта.
2) найти стороннего работника с аналогичным уровнем - задача для отдела кадров не только длительная, но и порой невыполнимая. Расходы на поиск и внедрение нового работника увеличат не только время разработки, но и себестоимость продукта. И ещё без какой-либо гарантии, что сотрудник подойдёт команде по уровню знаний, навыков и психологически.
3) взять на бирже труда пучок новичков, среди которых разделить все обязанности ушедшего. Новичков однозадачников набрать быстро, но каждому из них придётся выдавать полноценную зарплату, наше социальное государство не потерпит рабовладельчества. И не только поэтому считаю вариант наихудшим. Команда разработки страдает при добавлении одного новичка, а тут целая куча. Как бы это ни было странно, но любое дело замедляется по принципу геометрической прогрессии при добавлении рабочих рук и голов. Поговорка о двух головах, улучшающих одну, работает в противовес, потому что у каждого своя правда и каждая из рук, как лебедь, рак и щука тянут одеяло на себя, а не ровно в одну сторону к всеобщей цели. Если обязанности одного работника разделить на нескольких, то нет никакой гарантии, что один из этих новеньких в ответственный момент не станет тем же камнем преткновения, исчезнув из настроенного конвейера, и застопорит разработку.
Из этого примера вывод таков, что уже сейчас могу ответственно заявить, что выбранные меры поддержки IT-отрасли не помогут, а наоборот, скорее утопят её. Действенными же мерами были бы:
1) малограмотные дилетанты, не прошедшие опыт жизни в тесном коллективе, то есть отстранённые от службы в армии, никак не могут принести пользу. Это очевидно любому. Поэтому нужно повышать уровень знаний и приближать опыт на практических занятиях учебных заведений к актуальным реалиям. Для этого нужен прорыв в разрешённости и рекомендуемости учебных курсов и организаций. Для всех должностей в группе разработки в последние годы сформировалась предостаточная теоретическая база, это подтвердит наличие множества конференций и личных курсов, перешедших в высшие учебные заведения. Государству осталось помочь этим учебным заведениям формировать готовых специалистов, то есть обязать существующие производства стажировать студентов. А если задуматься о будущем, то нужно помочь составителям годичных планов этих курсов с актуализацией, то есть каждый год, а то и чаще, план обучения должен меняться. Технологии уходят вперёд, а абитуриентам приходится выбирать из курсов вчерашнего дня.
2) вместо налоговых и ипотечных льгот для весьма размытых по названию должностей повсеместная юридическая грамотность приведёт общество к привычке соблюдать законы. Если в обществе установлены и работают конкретные правила, то им просто управлять. Команды, строго придерживающиеся своих принятых правил, быстро достигают "бирюзового" уровня.
3) как одна из сторон юридической грамотности и для развития патриотизма уже имеющимся на рынке и только разрабатываемым продуктам нужна стабильная система лицензирования. Она поможет повысить доверие покупателей к продуктам и производителям, она защитит производителей от произвола пользователей.
Импортозамещение IT-отрасли в России, полагаю, должно пройти очень быстро, потому что наши создатели ПО по большей части составляли команды разработки всех популярных программ. При том, не только кодили (напомню: нашим программистам нет конкурентов на всех олимпиадах), но и знают изнутри эти системы, их связки и потенциальные уязвимости. Такая информация в головах теперь только наших специалистов недорого обойдётся государству, а прибыль может приносить обильную, когда начнёт конкурировать на мировом рынке.
И за это скажем спасибо санкциям. :) Русский мужик не перекрестится, пока гром не грянет. Но уж если возьмётся за дело, то супротив него некому выйти.

вторник, 5 октября 2021 г.

QA, QC или иначе

На примере отношений тестировщика с программистом хотелось бы уточнить разницу между должностями QA и QC. Соглашусь, что многие тестировщики в своих блогах касаются этой темы. Да и у меня уже была слабая попытка (читай - "Тестировщик или QA"). Ни в коей мере не хочу дублировать их или утверждать, что моё мнение по этому вопросу единственно верное и окончательное. Просто каждый из нас, тестировщиков, стремится разъяснить понятия и принципы работы ПО так, как это более доступно обеим сторонам производства ПО от точки проверки качества: вправо - программисту, влево - пользователю. Да, это профессиональная привычка - делать всё понятным и доступным. ;)
Капитан Врунгель, отправляясь в плавание, напевал: "Как вы лодку назовёте, так она и поплывёт.", а будущие специалисты, желающие внедриться в сферу информационных технологий, частенько встают в тупик при выборе вакансий. Какую должность искать? Что вбивать в строку поиска, кроме принадлежности к IT-сфере?
На мой взгляд войти в IT можно легко, если начинать с мелкого. Раньше, годах в 1980-90х, существовала специальность "оператор ПК", но когда компьютерной грамотностью овладело всё работоспособное население, то в этой должности отпала необходимость также, как и в машинистках. Нажимать на клавиши сегодня может любой, понимающий принцип хранения информации. А с приходом искусственного разума стало возможным преобразовывать звук в печатный текст, то есть даже по клавиатуре клацать уже не требуется. Этот факт, конечно, ускоряет процессы производства, но и лишает человека занятия мелкой моторикой, что в значительной мере напрямую влияет на мозговую деятельность, то есть замораживает мыслительные процессы через атрофирование нервных окончаний. Но, сегодня я не об этом.
Инженеры по тестированию программного обеспечения (должность в реестре России зарегистрирована с мая 2014 года), а в простонародье - тестировщики, бывают разные: ручники и автоматизаторы, безопасники и нагрузочники, исследователи и производственники, да ещё всякие разные. Поначалу, всех называли просто "тестировщиками", но не "тестерами", потому что второе имя означает прибор, например, - амперметр или индикаторная отвёртка, а не такое, более сложное существо, как - человек. Тестер-прибор показывает довольно быстро информацию о том, работает ли проверяемая конструкция правильно, то есть в ожидаемом режиме, к тому же в большинстве случаев даёт количественные показатели. Например, спиртометр указывает процент сахара и алкоголя в сусле при брожении будущих напитков, а вольтметр - наличие заряда в батарейке.
Исходя из истории возникновения профессии тестировщика (плата не отработала задумываемым образом из-за погибшего на ней мотылька) могу убедительно утверждать, что первейший принцип тестирования ПО - исследование причин, по которым ПО не работает ожидаемым путём. А это совершенно иное, нежели простое измерение величины или детекция наличия/отсутствия контакта, давления, электричества прибором, именуемым - тестер. Да, нашу работу тестировщиков постоянно хотят измерить количеством багов, затраченным временем или финансовыми сбережениями, но эти показатели совершенно иная сфера, нежели простые величины стрелок и шкал приборов-тестеров.
Ещё не так давно появилось разделение тестировщиков на QA и QC. Расшифруем, переведём и попытаемся найти меж ними отличия. Quality Assurance - обеспечение качества. Quality Check - проверка качества. Как видно из наименований, должности различны по своему предназначению. Тестировщики, только проверяющие качество (QC), наиболее схожи с сотрудниками отделов технического контроля (ОТК), которым на входе подают изделия и список требуемых соответствий определённому уровню качества. После того, как в ОТК заполнены чек-листы, проставлены в них положительные галочки, вычеркнуты отрицательные (негативные) несоответствия, заполнены параметры проверки (что проверялось, кто и когда проводил проверку, конкретизация продукта и вспомогательного оборудования), сотрудник ОТК передаёт такие ведомости в производство или сбыт для подтверждения качества, либо направляет претензии к поставщикам и промежуточным производителям в случае выявления несоответствий требуемому качеству. Если же тестировщик, кроме вышеперечисленного для QC (проверка по готовому чек-листу, подтверждение уровня качества, составление претензий о несоответствии уровню качества) сам определяет направления проверок, формулирует параметры качества, исследует весь цикл производства и внедряет дополнительные шаги, либо исключает лишние, для предотвращения проблем как в конечном продукте, так и в процессе производства, способствует внедрению наиболее совершенных практик для достижения качества продукта, то такого специалиста я со всей ответственностью могу назвать QA. Но вот уже чуть больше года в реестре вакансий мелькают такие названия, как DevOps и TestOps. Они расширяют полномочия QA до уровня всей команды разработки. Если путь от QC до QA считать вертикальным продвижением по карьерной лестнице, то от QA до TestOps (сокращение от "Testing + Operations", что в переводе - "тестирование + системное администрирование") - горизонтальным обогащением профессионализма на всех уровнях производства.
Наименования графикой
Визуально для меня QC представляется палочкой или латинской буквой "I". Её ассоциирую со словом "Inside", потому что QC зациклен лишь в тестировании, смотрит только в одном направлении. Он не точка, потому что в любом случае набирается и опытом, и знаниями. QA же специалист в моих глазах представляется буквой "T", где в вертикальной палочке накопились умения в области тестирования, а ответвления вправо и влево означают развитие в смежных областях: программирование, аналитика, внедрение ПО и поддержка юзера. Буквой "Т" начинается слово "Transform", то есть QA в состоянии менять себя и окружающие процессы. А TestOps видится мне буквой "E", с которой начинается слово "Extend". TestOps расширяет себя и всю группу разработки на всех ступенях, по краям и в центре, стремясь в одну сторону - к качеству.
Напомню, что такое "качество" с точки зрения пользователя, к которому в производственной цепочке ближе всех тестировщик. Понятие "Качество" определяется тремя составляющими: точность исполнения требуемого, получение желаемого в означенное время, денежные затраты. На все эти три направления и направлена работа тестировщика: зелёные чек-листы гарантируют полное соответствие требуемому, ускорение процессов разработки сокращают период от запроса юзера до поставки готового продукта, совершенствование процессов и пресекание проблем на корню снижает себестоимость конечного продукта.
Связь QA - QC - Dev
Отношения QA - QC - Dev
При движении продукта между программистом и тестировщиком его ореол состоит из вопросов программиста к тестировщику про состояние продукта. QA определяет круг вопросов и проблем, которые необходимо сверить с эталоном. QC исполняет намеченные проверки и выдаёт программисту весь перечень выявленных новых проблем и заключение о соответствии продукта техническим требованиям.
Для того, чтобы стать QC, достаточно знаний школьной программы. Для продвижения по служебной лестнице к QA необходимо расширять свои знания и умения не только в науке тестирования, но и глубоко постигать предметную область (например, экономику для создателей интернет-магазинов, географию для развития онлайн-туризма), а также новые способы сбора, обработки и хранения информации (программирование, аналитика и управление данными), чтобы в любой момент вы смогли стать TestOps, то есть на любом этапе разработки ПО быть в состоянии подменить аналитика, программиста, внедренца. Если QA отличается от QC лишь наличием более широких знаний, то TestOps лучше QA из-за его возможностей не только подсказать в нужный момент, но и самостоятельно внести в нужное время коррективы для производства более качественного продукта.
Все эти растолковывания приурочены к Дню Учителя. Именно с его деятельностью тесно связана наша - тестирование, когда нам приходится самим разбираться во всём том новом, что создали программисты, и затем подробно доносить полученные знания всем заинтересованным лицам (пользователю, руководителю проекта, кодеру и другим участникам разработки).
Надеюсь, после прочтения этой статьи у моих бывших сотрудников ёкнет сознание, если они припомнят, какими эпитетами обзывали группу тестирования вместо содействия и помощи. Возможно, хоть эти пояснения достучаться до их разума, и они поймут смысл моих просьб об уважении к нашему нелёгкому и столь полезному труду.

четверг, 9 сентября 2021 г.

Профессионалы в процессе

В 2000-2003 годах офшорная компания RSC создавала и поддерживала программный комплекс "Практик-А", написанный на Oracle Forms (упоминаются актуальные горячие клавиши). Основатели компании в 2002 году отмечали юбилей и предложили всем сотрудникам творческий конкурс. На тот момент в мои обязанности входили тестирование и тех.поддержка (СТП - служба технической поддержки), но тестировщики всюду суют свой нос, поэтому рассказ получился более чем полный. Никакого приза моя работа не выиграла. К сегодняшнему Дню Тестировщика публикую свой опус. Может кого-то из вас он сподвигнет на что-то большее.

Как RSC создаёт "Практик-А".

Этап первичный. Все на старте. У аналитика разгон:
Собрать все нужные нюансы готов, бумажки собирает он.
То с шефом часик поболтает, то с рядовыми день иль два.
За все мучения награда ему - подробностей стопа.
И маркетолог потихоньку в контракте правит пункт "Права":
Для конкурентов нет лазейки, им предстоит всё сызнова.
А тестировщик пишет планы: с кого начать и что потом,
Чем протестировать экраны, чтоб не осталось за бортом
Предупрежденье: интерфейсы - не для слепых и старых дам,
И каждому объекту - место, чтобы не рыться по хелпам.
Этап второй - разгар событий. У каждого заданий тьма.
Тут время маленьких открытий. Без плана - хаос и кутерьма.
С завода аналитик едет в родные стены напрямки,
Где и в жару и в холод лютый рисует, как Малевич, уголки.
Для главного определяет он место в центре, а затем
Для "дочек" сущности вставляет, связуя их в контексте тем.
Пока что он один лишь знает, как будет выглядеть Проект,
Какие будут отношенья, с чем, сколько, видно или нет.
Он программёру составляет набросок действий, чтобы тот
Без промедленья и задержки составил правильнейший код.
Проектировщики в короткий срок набьют пакетов кучи строк.
Ошибки ввода ограничит "primary" или "unique" ключик.
Ну, а для верности значений есть "trigger", "view" и "value check".
Они - такие, они - шальные. И целый день глядят в экраны, как хмельные,
По клаве дробь стучат и мышку тискают, чтоб новый образ формы получить.
"Create"-ом и "insert" таблицу сляпают, а если что не так, то тут же "alter"-нут.
На ввод - "commit"-ы есть, не хочешь - "rollback". Готов проект, на тест несут.
Здесь тестировщицы - вреднюги. Заметят каждый баг и ляп.
Где хелп? И что за сокращенья? Симметрий нет! А выйти как?!
Бедняжка форма стонет, плачет под натиском таких задач,
Считая ввод запоминает и направляет на печать.
Сто раз поправят программёры, сто двадцать тестер скажет: "Нет".
Чтобы Проект стал идеален, не жалко им ни сил, ни лет.
Когда порядок полный на этапе, на все ошибки исправленья есть,
Тут техподдержка и рекламодатель в свою узду впрягают всех.
Новинки или дополненья описаны уже давно.
Вот начался этап внедренья. Для праздника время пришло.
И на заводе оживленье: команда к ним летит от нас.
Научат, сервер установят и юзерам покажут класс.
Горячих клавиш стройный ряд любой проблеме будет рад.
Что делать - "F1" нажмите, не ладится, тогда с "Shift"-ом.
А коль забыли "кто есть в кнопках", то - "Ctrl" с "F1". Всё в нём.
Чтоб сосчитать объёмы строк - с "Shift"-ом "F2". Ну, и потом
"F3" дублирует объект, а с "F4" проблем нет:
Всю предыдущую строку в пустую вставит, как свою.
Неверно? Есть "Shift+F4": очистит строчку, как и было.
Гулять в режимах и по окнам "F5" поможет, а с "Shift"-ом,
Мой друг, уж будь ты осторожен: всё пусто будет в блоке том.
Достопочтенная "F6". Нужна строка? Вот она есть!
Всё лишнее с "Shift"-ом "F6" как зверь голодный может съесть.
На пару кнопок честь возложена запросом базу фильтровать:
"F7", и вводишь всё искомое, "F8" не забудь нажать!
Когда же в форме всё не так - с "Shift"-ом "F7" - она пуста.
"Shift+F8". Сбросьте страх: через принтер - на листах.
Значенье подобрать из списка "F9" Вам поможет быстро,
Лишь с "Ctrl"-ом её нажмёте, иерархией пункт подберёте.
Пора запомнить измененья: "F10" - и итог мученьям.
"Tab" переходит по полям, "Shift+Tab" по ним же, но назад.
Вас "Ctrl+Tab" вперёд ведёт, а всё с "Shift"-ом в окно вернёт.
Не только "Esc"-ом отменяешь, есть "Ctrl+U" им очищаешь.
По окнам "Page Up Down" ходят, когда их с "Ctrl" наберёшь.
А стрелки по строкам поводят, при спешке их с "Shift"-ом нажмёшь.
Есть "Ctrl+E" для тех, кто хочет значенье в поле поменять.
И "Ctrl+Q" в Проекте пашет, чтобы закрыть иль отменять.
А пользователь не лыком шит, чуть что не так, и в СТП звонит.
Скрипты, скрипты… Им нет предела. Исправить то, добавить сё.
На СТП опять облава, успеть им надо пропатчить всё.
Домой вновь едет аналитик с заданьями, чтобы Проект
Шире и дальше развивался, добротно работал много лет.
Всё смогут наши программисты, когда у них есть за спиной
Hi-аналитики - специалисты. А SQL для них - родной.
Команда к трудностям готова, исполнит каждый Ваш каприз.
Для современных технологий есть "Практик-А". На цену не скупись.

P.S.
Коль слишком гладко, не кривитесь, ведь строчки сами легли в ряд.
Кому не любо, не гневитесь, e-mail мой примет всякий баг.
Свои рецензии оставьте. За труд прочтения себя поздравьте.
(июль 2002 года)

пятница, 27 ноября 2020 г.

Программа иль дитя

Конечный результат любой группы разработки - продукт. Если речь о ПО, то каждый из группы разработки относится к своей работе и программному продукту, как к некому детищу, в которое вкладывают свои силы и умения по мере возможности. Даже программист-одиночка и тот не может выпустить программу без минимального тестирования, то есть код он пишет моментально, как Папа оплодотворяет Маму, а потом довольно долго отлаживает и тестирует, подгоняет и исправляет, то есть вынашивает Дитя, как беременная самка. Редко в мире и программном производстве встречаются гермафродиты, которые качественно могут проверить свой же код. Также, как и в большой семье, жить и развиваться Дитя может только при генетической поддержке Дедов, Родителей, при финансовой поддержке богатых Дядюшек и Тётушек. Младенец нуждается в питании, точно также, как и программа в наполнении функционалом. Эта часть жизни очень схожа с периодом, когда продуктом занимается аналитик или ребёнком Няня (бабушка, тёща). Взрослея подростку уже нужны не только био-вливания, но и моральные, а этот период очень схож с воздействием на продукт со стороны техподдержки через отзывы пользователей, а на дитя - Гувернёром. Более научный опыт дитя получает от Репетиторов, а программа становится равнозначно понятной как производителям, так и потребителям за счёт усердий техписателя. Раскруткой и развитием Отрока в семье обычно занимаются Кузены, которые играют с ним, знакомят с обществом ровесников и выводят в свет, подобно рекламно-маркетинговому отделу при публикации программы. На программу в расцвете сил, как на совершеннолетнего человека, начинается охота со стороны пользователей, а на Молодёжь устремляют свои взгляды лица противоположного пола для создания новых семейств, производства и семьи сливаются словно интеграция продуктов. 
Однообразие межродственных и производственных связей и влияний

В последнее воскресенье ноября отмечается день матери. А кто вы есть для своей программы? Как много вы заботитесь о продукте вашей группы разработки? Кому достанутся все лавры, когда закончится проект? Замечают ли ваши сотрудники ваш в клад в дело? Или, как и во всех семьях, воспринимают всё как должное, без необходимости благодарности? Группа разработки, задумайтесь пока не поздно и оцените труд тестировщиков по достоинству. Ведь только в тестировании и материнской заботе ребёнок и программа формируются в нечто полезное обществу.

пятница, 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, а для вас - простых тестировщиков.

понедельник, 27 июля 2020 г.

ТО о CS 9.3.2.207

Отчёт о тестировании ClearSQL 9.3.2.207 (далее - CS), выпущенном 21 июля 2020 года, основан на Release Notes, идентичным наконец-то полному тексту в пункте "Help / Release Notes" главного меню продукта. Предыдущий билд был новым платным минором, а этот сменил номер релиза. Это значит, что изменения слегка должны являться улучшениями, а в большинстве исправлять допущенные при разработке ошибки.

IMPROVEMENTS 1.5+0+1.5+0.7+0+0.5+0.5+0.7=5.4 из 2+1+2+2+1+1+1+1=11 возможных, -0.3-0.5=-0.8 за баги
Trial Subscription 0.5+1=1.5 из 2 возможных
* To activate ClearSQL in trial mode, the user is now prompted to enter their payment details. After a 5-day evaluation period, the license will be automatically upgraded to the monthly subscription.
Для активации триального режима CS юзер теперь предупреждается о вводе его параметров оплаты. После 5-ти дней использования лицензия автоматически обновится до месячной подписки.
ConquestSS всё более и более стремится, чтобы юзеры CS обязательно работали в продукте на машине с подключенным Интернетом. При попытке старта приложения в триальном режиме для активации ключа вас перебросит на сайт производителя, даже если вы применили ключ, присланный вам вместе с инсталлятором. Ни триальная, ни подписочная лицензия теперь не начнёт работать, пока вы не свяжетесь из приложения с сайтом. А вы где-нибудь читали, что с лицензией по подписке вы не сможете работать локально, без интернета? Это подвох производителей - дёшево, но при постоянном контроле. Учтите, что теперь вам никак не поможет триальный ключ предыдущего билда, потому что даже не законченный триал этой же платной версии будет считаться завершённым. Ранее триальный период отсчитывался с первого дня использования платной версии и продолжался, а не принудительно завершался, после апдейта на билд текущей платной версии (мажор или минор). Триальный период продолжается всё те же 5 дней, которые входят в первую оплаченную месячную лицензию. То есть ConquestSS обворовывает юзера на 5 бесплатных дней. Такая смена лицензирования внутри единоплатной версии нарушает права пользователя. Но разработчики ConquestSS на такой клинч забили, поскольку у них настолько мало юзеров, что вариант апдейта триальщика они скорее всего сразу исключили. Подобные коренные изменения более приемлемы для очередной платной версии. На это новшество их, скорее всего, воодушевляла идея облегчения отъёма денег у потенциальных покупателей. Описание изменения имеет двоякий смысл: если вы корректно оформите свои данные и на вашем счёте будет достаточно средств, то через пять дней вы, честный человек, автоматически лишитесь средств без дополнительного на то вашего согласия и ваш триал продлится до месяца. Тесты показали истинность первого варианта. Да, в какой-то степени это изменение функционала можно считать улучшением, но для большинства потенциальных юзеров теперь CS стал в ряд нежелательных продуктов.
Кстати, вы заметили, что в марте 2020 года вышел последний билд CDB, а с июля этого же года из меню основного сайта пропал продукт FADEX. Кризис пандемии усугубил нищенское существование компании и не позволил развивать столь полезные приложения. А ведь если CDB разделить на самостоятельные утилиты (Easy "white-box" testing, CRUD, CallTree, MI, Documentor), то на них вполне можно было бы солидно обогатиться.
* All trial users now have their personal Conquest accounts created after activating the trial subscription. This allows canceling the subscription, updating payment details, or upgrading to the full license.
Все триальные юзеры теперь имеют свой персональный аккаунт на сайте ConquestSS, создаваемый после активации подписки триала. Это позволяет отменить подписку, обновить детали оплаты или докупить полную лицензию.
Регистрация триальных юзеров в ConquestSS претерпевает уже третье изменение. Сначала это был обычный сбор статистики без отслеживания уникальных аккаунтов. Затем, после очередного ужесточения правил GDPR, стали больше узнавать своих потенциальных покупателей. Теперь же всех триальщиков причисляют к списку покупателей, чтобы впоследствии избежать своей ручной работы по переводу триальщика в постоянного юзера. Да, такую базу проще обработать на предмет процента перехода из временных пользователей в постоянные. Для самих же юзеров оформление персональных данных призывает к ответственному отношению попробовать новый продукт.
Startup Window 0 из 1 возможного
* Added the ability to request a quote for a full license by clicking the "Request a quote" button in the startup window.
Добавлена возможность запрашивать квоту на полную лицензию кликом соответствующей кнопки в окне старта.
Во-первых, очень сложно определить, какое из окон в CS считается стартовым. Во-вторых, на странице настроек лицензии "File / Preferences / License Key" есть кнопка "Update License..", по которой открывается более логичное окно для запроса изменений лицензии. Почему его забыла тех.писательница? Наверно из-за плохого знания обслуживаемого продукта. А поскольку в ConquestSS давно нет тестировщиков, то этот промах некому было подметить вовремя, даже создателям и владельцам проекта. Ну, и в-третьих, никакой новой кнопки или хотя бы линка на запрос увеличения лицензии не появилось нигде. Вышеназванный элемент не добавлен в интерфейс продукта. Так что, балл давать не за что.
Analysis Log Manager 0.8+0.7=1.5 из 2 возможных, -0.3 за баги
* Added the ability to locate the log file on the disk. The "Locate on Disk" command is now available from the pop-up menu.
Добавлена возможность навигировать файл лога на диске. Команда навигации доступна из контекстного меню.
Примечание: менеджер логов анализатора - это окно "View Analysis Log Files", открываемое из главного меню "Code Analysis / Analysis Logs". Контекстное меню для этого списка содержит новую функцию.
Комплексное тестирование выявило, что текстовый редактор, открывающий текст лога, не содержит нового пункта в контекстном меню для навигации на файл, но там есть два одноимённых пункта для сохранения.
* Analysis log files are now deleted along with the corresponding project.
Файлы логов анализа теперь удаляются вместе с соответствующим проектом.
В первом билде текущей версии была исключена настройка сохранения логов анализа в единый файл определённого размера или в несколько самостоятельных файлов по каждому запуску анализа. Когда через приложение удалялся проект, то все его папки удалялись. По тексту RNs можно понять, что удаляя строку лога из списка логов в вышеозначенном менеджере его проект тоже удалится. Такое поведение было бы весьма опасным и нелогичным. Для тестов сделайте простенький проект, проанализируйте его и только его лог пытайтесь удалять, чтобы не лишиться ваших прежних рабочих проектов. Но на самом деле при удалении проекта через приложение, а не вручную через файловую систему, список логов анализов обновляется, согласно фактическому состоянию файлов. То есть, лог удаляемого проекта удаляется и из списка логов. За такое путанное описание изменения, которое больше похоже на правку бага, а не на новшество, не могу дать полный балл.
Print 0+0.7=0.7 из 2 возможных
* If an HTML file is bigger than 50 MB, the following message will be shown on clicking "Print Preview": "You are about to preview an HTML file larger than 50 MB. This may cause performance and stability issues. Are you sure you want to continue?"
Если html-файл больше 50МБ, то следующее сообщение будет показано перед предварительным просмотром: "Вы собираетесь просмотреть html-файл размером более 50Мб. Это может вызвать проблемы производительности и стабильности. Вы действительно хотите продолжить?"
Для тестирования этого новшества надо иметь такой проект, результаты анализа которого только по одному уровню (метрики или правила кода, диаграммы и т.п.) могут составить 50Мб и более в html-формате. Не пытайтесь печатать весь отчёт - это не подходит под рамки текущего пункта RNs, да и из приложения отчёт по проекту не печатается. Подсказка: не пытайтесь увеличить самую большую таблицу метрик за счёт увеличения скриптов, потому что в печать таблицы с результатами метрик кода попадают не полным своим содержимым, а только до границ скроллеров. Сомневаюсь даже, что многочисленные анализы проекта с включенными всеми графиками когда-нибудь смогут набрать объём в 50Мб. Так что, это новшество достаточно утопичное в плане пользы. Да и величина лимита, не понятно откуда взятая, довольно смешна для современных операционных систем, работающих на гиговых объёмах памяти. Потому и заслужить балл невозможно.
* Added the ability to print out code metrics and code review results at the script level.
Добавлена возможность печатать метрики кода и проверки правил кодирования уровня скрипта.
Ранее пункт главного меню "File / Print" становился неактивным, если курсор переводился в таблицу "Script: Editor and Analyzer Info / Code Review" или "Script: Editor and Analyzer Info / Code Metrics". Теперь информация из этих таблиц попадает в печать, но, если проверки правил вмещают все столбцы и разворачивают все ветки дерева, то из метрик кода печатается ограниченное видимостью количество столбцов. Да, новинку сделали, но опять не протестировали даже минимально.
Summary Info 0 из 1 возможного
* Added the ability to abort the expansion of all nodes on the Summary tab if the process takes too much time.
Добавлена возможность прекратить разворачивание всех нод на закладке итогов, если процесс занимает слишком много времени.
Для тестирования нам потребуется либо демо-проект на слабенькой машине, либо огромный проект на обычной машине. Данные в форме дерева на закладке итогов могут показывать только две таблицы: с детальными метриками кода и нарушенными правилами кодирования, когда они сгруппированы по какому-нибудь из доступных признаков. Кстати, теперь все таблицы, которые ранее могли показывать только несколько максимальных значений, отображают всегда все результаты анализа. Это было убрано в предыдущем билде, о чём юзера не предупредили, молча убрав настройки. В прошлых версиях, вплоть до CS 8.1, была возможность разворачивать и сворачивать все ноды в таблицах итогов. Теперь же разворачивать и сворачивать можно только панели, то есть не ветки деревьев, а целые окна. Такой процесс никак не может занимать длительное время, поскольку абсолютно не зависит от объёма данных в них. Никакой возможности разворачивать все ноды (через пункт меню или горячую клавишу) уже в нескольких версиях CS не существует, поэтому пункт RNs - однозначная фикция, за которую нельзя давать балл.
Export to MS Excel 0.5 из 1 возможного
* On trying to export diagrams or code review results to MS Excel, make sure another file is not being edited in MS Excel at the same time. Otherwise, you will be prompted to stop editing cells in the open MS Excel file to proceed with the export.
При попытке экспортировать диаграммы или результаты проверок правил кодирования в MS Excel убедитесь, что иной выбранный файл не редактируется в это же время. Иначе, вам предложат остановить редактирование ячеек в открытом файле для продолжения экспорта.
Очень спорное причисление RNs к новшествам, поскольку иными словами это обязательная проверка имени файла уже существующего и находящегося в рабочем статусе стороннего редактора. По какому праву CS управляет чужим приложением? Предложение о прекращении редактирования появится в рабочем CS или стороннем Excel? Это двоякое описание посмотрим через тесты. Для этого экспортируем первую попавшуюся диаграмму и таблицу с результатами анализа проекта в Excel с последующим открытием этого файла, а также подправим что-нибудь в этом файле, и, не закрывая его, выполним повторно экспорт в этот же файл. В прошлых билдах такую проблему обрабатывала операционная система. Это видно из текста ошибки, который достаточно подробен и на языке локали. В текущем билде добавлено предупреждение ещё и в стороннее приложение. Никак не могу согласиться с тем, что это правомерное вмешательство в приложение Microsoft. Кому-то было недостаточно системного предупреждения о существующем файле, системной ошибки о совместном доступе к файлу, теперь добавили третье предупреждение о замене данных в файле. Да, новшество сделано, но заголовок диалога говорит о чужеродных вмешательствах, за что снимаю полбалла.
Import Wizard 0.5 из 1 возможного, -0.5 за баг
* If files/folders selected for import are no longer available on the disk, you will be prompted that these files/folders no longer exist.
Если папки или файлы, выбранные для импорта, больше не доступны на диске, вы будете уведомлены, что эти файлы или папки не существуют.
Процесс поиска и выбора импортируемых файлов может затянуться. В это время может упасть сервер или выпасть штекер вашего переносного диска. Тестами будем ожидать сообщение в момент нажатия кнопки "Add". Параллельно проверим мастер линковки и его кнопку "Link", поскольку физически это единые окна и логика в них должна быть идентичной. Мои тесты показали, что при добавлении объектов из неподконнекченного диска одно системное сообщение заменено на два, но ни в одном из них не сказано об отсутствии объектов, как описано. Линковка же проходит, как и прежде, после повторного клика вообще без каких-либо предупреждений. Это значит, что текущий пункт RNs зарабатывает только 0.5 балла, и при этом билд теряет за баг комплексного тестирования -0.5 балла.
Back Up/Restore Project 0.7 из 1 возможного
* Removed the "Backup folder" box as irrelevant.
Убрана группа архивирования проекта, как ненужная.
Формы для архивирования и восстановления проекта из архива доступны по пунктам главного меню "File / Project / Back Up Project" и "File / Project / Restore Project from Backup" соответственно. Обе формы объединили поля для выбора и ввода пути и имени файла архива в одно, но при этом не дописали функционал символьного поля, в котором не полностью видно значение. Для таких полей юзеру приходится вставлять в него курсор и перемещать вручную по всему значению вместо того, чтобы просто подвести к нему мышь и увидеть полный путь и наименование фала в хинте элемента. За недоделку сниму часть балла, поскольку это GUI-правило давно числится обязательным в группе разработки ConquestSS.

BUGS FIXED 0.5+0+0+1+0+1+0.8+1+0+0.8+1-0.5+0.5+0.5+1+0.5+0+1=9.1 из 2+1+1+1+1+1+1+1+1+2+2+1+1+1+1+1+1+1=21 возможного балла, -1 за баг
Core 0.5+0=0.5 из 2 возможных
* Fixed the error "Could not initialize taskbar. Error:-2147467263" when running the application on Windows Server with Citrix.
Исправлена ошибка о невозможности инициализировать таскбар при запуске приложения на специальной операционной системе.
В моих возможностях нет Windows Server with Citrix, поэтому поверю на слово и дам авансом 0.5 балла.
* The application's features no longer stay inactive once the ORA-01005 error occurs after the database connection fails due to a missing password.
Функционал приложения больше не остаётся неактивным после ошибки базы при коннекте к ней с пропущенным паролем.
В прошлом билде нам надо найти, какие конкретно экшены деактивировались после неудачного коннекта к базе, поскольку глупо подозревать все, не касающиеся базы данных Oracle. Ошибочный коннект будем производить несколькими путями: только коннект через главное меню, попытки импорта объектов при создании проекта и в существующий, попытка линкования скриптов с базой. Учтите, что создать проект можно как уже в открытом приложении (то есть смотреть на всю рабочую область), так и при старте (то есть тестировать только окно старта). Итого получаем пять тестовых случаев, в большинстве из которых сначала будем обращать внимание на окно коннекта к базе и его дочернее окно опций. Мои тесты не дали никаких деактиваций ни в прошлом, ни в текущем билдах. Поэтому фикс не засчитываю.
Code 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.
Редактор кода больше не мерцает при сдвиге каретки, когда открыт длинный скрипт и опция о выходе курсора за конец строки выключена.
Значение означенной опции можно проверить в "File / Preferences / Code Editor" окне. Что является "длинным скриптом" в данном случае? Может код с длинными строками, в которых количество символов превышает значение "File / Preferences / Code Editor / Display / Margin and Gutter / Visible right margin - Width"? А может скрипт с огромным количеством строк? Не могу склониться к какому-то определению, которое не соизволила уточнить тех.писательница. Поэтому надо проверять оба варианта. Также следует учитывать физические данные компьютера (оперативная память, процессор и монитор), потому что давно замечено: если в ОС не хватает оперативной памяти, то MS Office окна (Excel, Word) выключают весь монитор на время перерисовки. Мои тестовые данные не позволили увидеть баг в прошлом билде, поэтому не могу засчитать фикс.
Code Explorer 0 из 1 возможного
* Resetting the workspace to default now restores the Code Explorer panel.
Восстановление рабочей области к изначальным установкам теперь возвращает панель дерева кода.
Напомню: функция восстановления рабочей области доступна из главного меню "View / Reset workspace to default". И в прошлом*позапрошлом, и в текущем билдах размер и статус дерева кода приобретает одинаковый размер и разворачивается, если прежде был свёрнут, после восстановления рабочей области. Поэтому никак не могу сказать, что раньше была какая-то проблема. То есть ничего не исправлено, а значит и балл давать не за что.
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.
Ошибка, показываемая при попытке добавить новый тип коннекта к базе с существующим именем, больше не сопровождается логированием встроенного обработчика ошибок.
Для воспроизведения бага необходимо в опциях коннекта к базе попытаться добавить одноимённую запись в список "File / Connect to Database / Oracle Database Connection / Options / Connection Settings / Database Type / Name". Сообщение об ошибке стало более понятно юзеру и не предлагает отправить отчёт в техподдержку. Но формулировку в RNs стоило переделать с понятной программисту на доступную к пониманию обычному юзеру. Ведь новый триальщик, например, абсолютно не в курсе при чём тут EurekaLog и исследуемое приложение CS. Но не буду так строго придираться к тех.писательнице и снимать за это баллы, потому что она не исправляет свои более важные опечатки.
Code Metrics 0 из 1 возможного
* Script tags are no longer duplicated and subprogram names are no longer missing from the code metrics results exported to an XML file.
Тэги скриптов больше не дублируются и имена подпрограмм больше не пропускаются в файле экспорта результатов метрик кода в XML.
В качестве тестовых данных возьмём проанализированный скрипт с телом пакета или объектного типа, содержащий несколько функций и процедур в качестве подпрограмм. Из закладки "Script: Editor and Analyzer Info / Code Metrics" в прошлом и текущем билдах сделаем экспорт результатов анализа в XML-файлы. Далее любым помощником по сравнению файлов сделаем вывод об исправлении. В моём случае замечено, что убран блок пути к скрипту в дереве проекта и ремарка. В остальном все тэги идентичны. Поэтому никак не могу засчитать исправленным нечего.
Database Connection Window 1 из 1 возможного
* Changing the state of the "Auto connection" check box now works correctly without the need to log into a database.
Изменение статуса опции автоконнекта теперь работает корректно, без необходимости входа в базу.
Слово "correctly" в формулировке правки - лишнее, но за это не буду строго снимать доли балла, хотя стоило бы (поясню позже). По моим тестам значение чекера сохраняется на закрытии окна без выполнения коннекта к базе и восстанавливается при следующем открытии формы. А вот отработку функционала можно было бы назвать правильным, только если бы при открытии формы коннекта для первого подключения (не для смены в мастере импорта или линковки скриптов проекта) в хинте или названии экшена была бы указана дефолтная строка подключения, а сам коннект к базе проходил автоматически, без необходимости кликать кнопку "Connect". Именно так я понимаю корректную работу. А может другой юзер ожидает ещё чего-то иного.
Project Summary 0.8 из 1 возможного
* When no project is loaded, all Summary tab features are unavailable.
Когда не загружен ни один проект все фичи закладки итогов недоступны.
В прошлом билде, также как и в текущем, доступна настройка панелей закладки: видимость и скрытие, сворачивание, изменение размеров или списка полей. Все экспорты из пустых таблиц давно отключены. Но мне удалось найти пару пунктов в правилах кодирования и один в трендах, которые не могут быть исполнены для пустых данных. Поскольку формулировка весьма пространная, то полный балл дать никак не могу.
Analysis Log Manager 1 из 1 возможного
* Fixed the look and feel of the Analysis Log Manager when there's only one report in the list.
Зафиксирован внешний вид мэнеджера логов анализа, когда в списке только один отчёт.
В качестве тестовых данных лучше создать новый проект и проанализировать его единожды. В мастере списка логов анализа "Code Analysis / Analysis Logs" выберем фильтр по текущему проекту. При открытии этой формы в предустановленном режиме в позапрошлом билде одна строка вполне себе подсвечивается, хоть и с чёрным шрифтом на синем фоне, но данные видны. А вот в прошлом билде графика действительно сильно пострадала, видимо из-за замены интерфейсного элемента со стандартного от Delphi/Windows на самописный от ConquestSS. На бледно-голубом фоне (режим темы "View / Theme = Windows") были сплошные чёрные квадраты вместо символов. Текущий билд скорректировал подсветку единственной строки до видимого режима.
Startup Window 0 из 1 возможного
* Fixed the look and feel of the progress bar shown in the second instance while code analysis is running in the first instance. Relevant for the subscription type of license.
Исправлен внешний вид плиты прогресса (в простонародье - "градусник"), показываемой во втором запущенном приложении, пока анализ кода проходит в первом. Актуально для лицензии по подписке.
Сильно сомневаюсь, о каком конкретно градуснике идёт речь. Окно старта приложения имеет градусник окончания лицензии. А процесс анализа отображается на своём окне, дублируясь на кнопке приложения в панели задач операционной системы. Никаких проблем с отображением обоих градусников не было замечено в предыдущем билде. Поэтому пункт RNs можно считать припиской и не давать балл.
Link Manager 0+0.8=0.8 из 2 возможных
* Removed the ability to add new files and database objects.
Убрана возможность добавлять новые файлы и объекты базы.
Поскольку физически мастер линковки и импорта файлов или объектов базы в проект является единой формой, то большинство экшенов у них едины. В контекстном меню дерева файлов этого окна был и остался экшен "Add", который благополучно добавляет в проект файл. Объекты БД никак нельзя было добавить в проект через мастер линковки. Это значит, что пункт RNs - пустышка, не позволяющая увеличить баллы билду.
Глобальный вопрос - а вообще зачем убирать то, что полезно или удобно?
* Removed the ability to select multiple objects and the whole database object tree.
Убрана возможность выбирать несколько объектов и всё дерево объектов базы.
В дереве объектов базы нет чекеров для выбора позиций, а иными интерфейсными операциями (мышь или комбинации клавиш клавиатуры) никогда нельзя было выбрать более одной позиции в дереве объектов. Убран лишь пункт "Select All" из контекстного меню. За такое смутное описание фикса дам не полный балл.
New Project Assistant / Import Wizard 0+1=1 из 2 возможных
* ClearSQL no longer stops working on trying to abort the import of the items that were not fully retrieved from the database.
Приложение больше не останавливает работу при попытке прервать импорт значений, которые были не полностью выбраны из базы.
Изменение касается нагрузочного тестирования. На малых величинах базы не получится воспроизвести баг. В качестве тестовых данных лучше взять пакеты системной схемы SYS, поскольку их обычно достаточно много даже в минимальной установке базы. Иначе, в помощь будет слабое соединение с базой, дающее порционные потоки данных с задержками. В таких случаях интерфейс CS покажет градусник и кнопку Break для процесса выборки данных из базы, спустя пару-тройку секунд, то есть запросы к базе можно прерывать. В мастере создания проекта или импорта объектов в проект есть два шага по обращению к базе: заполнение левого дерева и добавление выбранных позиций левого дерева базы в правое проекта. В прошлых билдах, к счастью, а может и к сожалению, мне не удалось получить остановку приложения на прерывании выборки объектов ни при заполнении левого дерева мастера, ни при переброске объектов из базы в проект. Аналогично работает CS и в текущем билде. Поэтому у меня нет никаких оснований отметить исправление исполненным.
* Fixed the ability to break the "Select All" action in the database object tree.
Зафиксирована возможность прерывать действие по отмечанию всех объектов в дереве базы.
В контекстном меню левого дерева объектов есть пункт для отметки всех видимых нод и их вложенных объектов для последующего импорта объектов в проект. Поскольку этот процесс достаточно долгий, то имеется соответствующее предупреждение, спустя пару секунд показывается градусник процесса и появляется кнопка для прерывания. В прошлых билдах кнопка называлась Break и никак не реагировала на нажатие, то есть юзер вынужден был остаться ни с чем и закрыть окно по крестику, либо долго-долго ждать окончания выборки. В текущем билде кнопка переименована в Abort, и процесс благополучно прерывается по первому нажатию на неё.
Export Wizard -0.5 из 1 возможного
* Removed the "Yes to All" and "No to All" buttons from the warning message shown when the exported script or diagram already exists in the target folder.
Убраны кнопки согласия и отвергания действий для всех последующих случаев из предупреждающего сообщения, показываемого при экспорте скриптов или диаграмм, уже существующих в принимающей папке.
Физически мастера экспорта диаграмм или скриптов являются единой формой, поэтому некоторые функциональности в них программист исправляет сразу для обоих окон. Но тетсировщик обязан проверить новое поведение в обоих модулях. Экспорт скриптов доступен из главного меню, дерева проекта и из окна редактора кода. Экспорт диаграмм доступен из главного меню, дерева проекта и из всех закладок с результатами анализа в виде диаграмм. Вы можете исполнять экспорт по любому из трёх путей, от этого результат теста не зависит и не может быть коэффициентом для комбинаторики. Соблюдайте только формат диаграмм и выгружаемых скриптов (эти параметры перенастраиваются в самом мастере экспорта). Для текущих тестов нет смысла включать в параметры pairwise-test варианты диаграмм или тип скрипта с его псевдокодом. Но если вы хотите пройти комплексный тест с выявлением багов, то не стесняйтесь. У меня, например, получился половинчатый результат по текущему исправлению: при экспорте скриптов всё ещё есть кнопки для всех последующих совпадений, а при экспорте диаграмм кнопки действительно убраны. Также выявлен баг отсутствия возможности экспортировать диаграммы Flowchart с закладки "All Flowcharts", если сама закладка только что была визуализирована и в дереве диаграмм выбрано несколько объектов. Но это довольно редкое сочетание юзерских действий и исправляется перезагрузкой приложения, поэтому не буду снижать баллы билду. За половинчатое решение могу дать лишь полбалла. Но кардинально удаление полезных кнопок ухудшает юзабилити, поэтому за его наличие сниму балл. Итого, -0.5 балла.
Export Summary Tables 0.5 из 1 возможного
* The error message that appears when no MS Excel is installed is no longer duplicated.
Сообщение об ошибке, появляющееся при отсутствии установленного MS Excel, больше не дублируется.
В системных требованиях к CS никогда не было пункта об обязательном наличии установленного табличного редактора, поскольку его библиотеки используются только при экспорте данных анализа в XLS-формат. С уверенностью не могу сказать, почему сообщение об ошибке раньше появлялось два раза, но эта проблема очень-очень давнишняя. Об этом известно только программисту, писавшему код CS. По этой же причине не могу посоветовать вам, как минимальными средствами сделать вид, что на машине отсутствует инсталляция Excel. На сегодняшний день машины с Windows OS, но без MS Office - огромная редкость. Исходя из конфигурации тестового стенда авансом за исправление дам полбалла.
GUI 0.5 из 1 возможного
* If the caption of a UI element, such as column header or item, is not fully visible, pointing to it now shows a hint with the full name.
Если заголовок интерфейсного элемента, например, подпись колонки или позиции, не полностью виден, то позиционирование на нём теперь показывает хинт с полным наименованием.
Модуль "юзерский интерфейс" - это всё приложение CS. Представляете сколько элементов в нём? Одних только типов более сотни, а уж вариаций и месторасположений - миллионы. Проверить все - абсолютно нерешаемая задача, поскольку им надо как-то умудриться придать маленький размер. Даже если подключить автоматизацию, хорошо понимающую не только стандартные Windows, Delphi интерфейсные компоненты, но и их производные от программистов ConquestSS, то проверки займут годы. На вскидку, могу предложить тест такой: в таблице с метриками кода уменьшить ширину любого столбца с длинным наименованием. Да, хинт с полным наименованием колонки появляется только в текущем билде. Но за формулировку RNs, подразумевающую фразу программиста "тестите всё", полный балл никто из тестировщиков никогда не даст.
Project Backup 1 из 1 возможного, -1 за баг
* Fixed the visibility of the "Display password" check box in the dark theme.
Зафиксировано отображение опции показа пароля в тёмной теме.
Рабочая область CS подразумевает цветовую настройку "View / Theme / Charcoal Dark Slate". Если в тёмной теме открыть окно "File / Project / Back Up Project", то в прошлых билдах подпись опции для показа пароля не различима. В текущем билде проблема исправлена. Аналогичная ситуация с такой же опцией и в окне "File / Project / Restore Project from Backup". Изменение тем доступно давно, но почему этот баг исправлен только что? Скорее всего команда ConquestSS абсолютно не тестировала свою реализацию, а интерфейсную погрешность заметил кто-то из новеньких конечных пользователей.
В рамках комплексного тестирования у меня выявилась проблема "Cannot change Visible in OnShow or OnHide." при смене тем и последующая занятость проекта при всех закрытых приложениях. Второй раз получить аналогичный баг не удалось. Поэтому о причинах ошибок могу лишь догадываться. Графика с результатами анализа - это не приемлемый активный интерфейс на момент смены темы приложения, потому что CS путается в своих данных и UI-элементах. Поскольку мне пришлось несколько раз перегружать приложение для его стабильной работы, то сниму балл за баг.
Oracle Libraries 0.5 из 1 возможного
* Scripts that are part of an Oracle Library can no longer be edited or deleted separately from the whole library.
Скрипты, являющиеся частью библиотеки Oracle, больше не могут редактироваться или удаляться отдельно от библиотеки.
Мне, как хорошему знатоку базы данных Oracle и приложения CS, известно три варианта библиотек Oracle: объект базы (CREATE/ALTER/DROP LIBRARY - не поддерживаемые в CS выражения), служебные файлы базы (oci.dll, oci.lib, oraocci.sym и другие подобные, которые использует CS в момент подключения к базе и при последующем обмене данными), библиотеки приложения Oracle Forms (файлы с расширением "pll", которые могут быть частью проекта CS). Скорее всего в данном фиксе речь идёт о третьем типе, пример которого есть в папке демо-проекта "Demo Project\Oracle Forms and libs\OFGCALL.PLL". В прошлых билдах скрипты из этой папки невозможно было удалить по-одному, но мульти-выборка запросто удаляла несколько выделенных. Также доступно было редактировать код. В текущем билде также становится активным пункт для удаления нескольких скриптов, но фактически удаления не происходит, и сопровождается это поясняющим сообщением. А вот с редактированием ситуация совершенно не понятная: нигде в статусной строке или ином месте нет указания, что редактор кода закрыт на модификацию текста, но любые нажатия значимых клавиш не меняют текст и не поясняют причин отказа работать. Такое юзабилити резко снижает стоимость правки.
Toolbar Customizer 0 из 1 возможного
* A newly added toolbar icon is now located correctly.
Вновь добавленная иконка тулбара теперь позиционируется корректно.
Полагаю, что недавно изменённая сортировка исходного списка кнопок слева в алфавитном порядке сыграла злую шутку с программистом, и она автоматически применялась к готовому списку справа. Ещё при тестировании прошлых изменений в настройке тулбара и применении изначальных установок рабочей области было подмечено, что кнопка анализатора, например, в одних версиях CS всегда позиционировалась на первом месте, а в других - на последнем месте главного тулбара приложения после перезагрузки. Из текста RNs лично мне не совсем понятно, о каком из трёх изменений речь: либо это позиция кнопки в мастере настройки тулбара после переброса или перетаскивания из левого списка в правый, либо синхронизация позиции кнопки на тулбаре со списком мастера настройки, либо последующее позиционирование кнопки, когда мастер настройки закрыт или приложение перезапущено в рамках текущей версии или сразу после открытия прошлого билда. Проведём все три типа тестов: функциональный, интеграционный, обратная совместимость. Мои исследования показали, что ни в функциональном, ни в интеграционном плане ничего не изменилось, работа идёт идентично в обоих билдах, без проблем, в ожидаемом режиме. А вот если сделать любую настройку тулбара в прошлой или текущей версии, а затем открыть приложение в другой (текущей или прошлой) версии, то кнопка запуска анализа стабильно нелогично самопроизвольно занимает последнюю позицию. То есть, даже не смотря на то, что для каждой версии теперь хранятся собственные настройки тулбара, но кнопка анализатора в них как-то обособлена. Из вышеописанного заключаю, что фикс никак не сделан.
Online Support Desk 1 из 1 возможного
* The "Reply to message" toolbar button is no longer active when an empty folder is selected.
Кнопка для ответного сообщения больше не активируется, когда выбрана пустая папка.
Поскольку модуль OSD состоит из двух частей - переписка с техподдержкой и автоматическое обновление приложения, то в данном случае тестировать надо только мессенджер. Сам мессенджер тоже состоит из двух типов окон: список сообщений и редактор одного письма. Ориентируя вас на требуемое для теста окно, скажу что это левое дерево папок в окне со списком всех сообщений. Экшен ответа на сообщения существует в виде пункта контекстного меню правого списка и в виде кнопки на тулбаре. Но почему-то в меню статус интерфейсного элемента определяется по наличию записей, а в тулбаре этот же экшен не синхронизировался.

Итого по билду: набрано 5.4+9.1=14.5 баллов из 11+21=32 возможных, что составляет 14.5/32=45% готовности билда, а за баги придётся снять ещё -0.8-1=-1.8 балла.