MCP

среда, 23 февраля 2011 г.

Впечатления от Microsoft QA Days

Данный пост был написан вчера в поезде, по дороге с QA days, из изменений только проставленные ссылки и форматирование.


Сегодня я посетил мероприятие, проводимое Careerlab и Microsoft под названием Microsoft Quality Assurance Days, проходившее в офисе Microsoft в Крылатском.

Место проведения, конечно, выбрано "шикарное". Построить бизнес-центр в жопе мира далеко от центра и метро, а чтобы было не совсем плохо — пустить бесплатные маршрутки — это весьма сильно. Добираться от вокзала до места проведения час с лишним (хотя для москвичей, наверное это нормально, но для меня это жуть). Я как-то не привык к таким дальним странствиям, поэтому не расчитал, взяв обратный билет так, что остался без фуршета, да ещё чуть не опоздал на поезд. Добирался до своего вагона уже через весь поезд, ибо успел добежать только до первого вагона. Зато поучавствовал в записи подкаста ПолДевятого (если его удастся восстановить после фейла с программой ). Запись прошла отлично, даже сумел вставить пару "веских" слов, надеюсь, что не очень глупых.

При всём этом, это было единственное ИТ-мероприятие без интернета (из тех, на которых я был). Как мне объяснили, всё ушло на онлайн-трансляцию. В результате целый день внезапной отлучки от паутины вызывал аццкую ломку (я то надеялся вести логи и уточнять информацию прямо на месте).

Ладно, заканчиваю лирику и перехожу к самому мероприятию. Началось всё с приглашённого евангелиста Брайана Келлера. Он рассказал как всё круто с TFS и Visual Studio, какие удобные все инструменты для тестирования. И я ему верю! Правда, чтобы ощутить всё это великолепие в полном объёме, нужно несколько мега-админов, чтобы настроить TFS, Hyper-V, и всю остальную инфраструктуру. Также нужна достаточно мощная техника, но результат будет просто  замечательный. Куча информации, автоматическое и полуавтоматическое тестирование, возможность сохранения состояния, запись всех шагов — в общем сказка. Лишь бы всё это работало не только в презентациях.
Далее, Брайан рассказал про исследовательское и формальное тестирование, когда задача тестера состоит в том, чтобы оценить систему с точки зрения определённого типа пользователя и попробовать всё оригинально сломать. Впрочем, с моей точки зрения, для этого очень хорошо  подходят программисты, которых сорвали с другого проекта и дали потестировать чужой код. Тут уж вредность проявляется в полном объёме, ибо эти гады (программеры), имеют очень хорошее представление, куда ткнуть, чтобы всё сломать.  Правда не надо их этим часто загружать, иначе они расстроятся, и будут всё делать как неважный тестер, особо не думая и не разбираясь в системе.

После этого, Александр Орлов рассказал про качества тестера, необходимые для полноценной и качественной работы. Доклад был очень весел и интересен, правда больше для тестировщиков. Ну ничего, я со стороны разработчика тоже узнал, в какие больные места можно бить тестеров

Следующий доклад был ужасен и абсолютно ни про что, пропустим его

Последним был мастер-класс от Дмитрия Андреева где он рассказал про средства для отладки и улучшения качества кода, существующие в студии. К сожалению, он плохо знает решарпер, что привело к тому, что Дмитрий не осветил целый пласт возможностей по улучшению кода, без использования сторонних утилит. Ну и некоторые моменты, вроде политики редких могучих чекинов мне показались странными. Зато рассказал про интересные вещи как Pex и Moles, позволяющие упростить написание юнит-тестов (Pex — генерилка юнит-тестов, Moles — фреймворк для подмены методов, любых, включая системные, чтобы делать заглушки без изменения основного кода).

Далее, у меня было обсуждение новинок в мире Windows Phone 7 и запись подкаста, о котором я упоминал в начале, а основная масса участников зависла на сессии вопросов и ответов, даже не спешила к фуршету

В общем, конференция была больше для прочистки мозгов, и напоминания о том, что есть хорошие инструменты и их можно и нужно активно использовать, реальных новинок и секретов рассказано не было. Ну а я по-прежнему еду в поезде, и думаю чем себя занять далее, т.к. мне ещё весьма долго ехать

воскресенье, 6 февраля 2011 г.

OpenXML и цифровая подпись

Тут некоторое время помучался пытаясь подписать OpenXML, хочу поделиться тем, что у меня вышло с этим неприятным форматом.

Начну издалека сбоку, про то, что явно подразумевается во всех статьях но словами леняться проговорить. Итак, OpenXML это документы формата Open Packaging. Это такой стандартизованный zip-файл, в котором в основном должны храниться XML'ки, но можно и любую другую фигню. Поэтому этот формат в принципе можно использовать для передачи апдейтов вашей программы, или хранения набора патчей, в общем для любых целей хранения стандартизованного пакаджа, который удобно читать и разбирать. Собственно, в .NET за это отвечает класс Package, он всё и умеет.

Разобравшись с общим форматом, переходим к частностям: в этом OPC формате хранятся: .docx, .xlsx, .xps и много других вещей. Соответственно работать в коде с документами вы можете абстрактно, как с пакадаждем содержащим набор частей, или взять специализированного наследника (скачав, например, OpenXML SDK, ну или использовав XpsDocument) и работать уже более детально.

А теперь, собственно о цифровой подписи и проблемах. Делается всё это на уровне Package, т.е. если мы хотим подписать вордовый документ, нам на самом деле это не принципиально, мы берём класс PackageDigitalSignatureManager, гоговорим какие секции надо подписать и подписываем.
Но вот тут и начинаются проблемы:

  • В 2007-ом офисе по умолчанию подпись будет показываться ошибочной, нужно шаманить с параметрами
  • В 2010-ом подпись по умолчанию будет показываться partial, т.е. офис будет считать что вы подписали лишь некоторые части, а не весь документ, и нервничать (кстати, вы можете подписать только стили, позволив беспрепятственно изменять текст (не через Word), и таким образом подделывать документы, если пользователь не будет настаивать на том что подпись partial).
  • В .NET реализации явно подразумевается (в смысле кодом), что сертификат для цифровой подписи может быть только RSA, да ещё будут проблемы с токенами, ибо вместо использования стандартной инфраструктуры PKI для подписи (что делает, например, сам Word), тут пытаются взять насильно приватный ключ (это плохо! а местами запрещено), кастуют его к RSA (сразу выкидываем все другие алгоритмы, например наш ГОСТ) и подписывют.
В общем, хоть на бумаге всё и гладко — 15 строчек кода, на практике эо всё превращается в весьма опасную неюзабельную штуку, которая непонятно когда и где может выстрелить, поломав всё и вся. А всё из-за криворукости индусов, которые изначально не могли всё сделать грамотно, в результате теперь сделать грамотно невозможно никому.