Архив рубрики: Компьютер

Искусственный интеллект: пролог

robot-i-zhenskaya-logika_1Немало людей, открывая статью об искусственном интеллекте, ожидают увидеть более или менее ужасающие прогнозы о том, как и когда машины захватят человечество. Эта тема — неисчерпаемая кладезь постапокалиптических сюжетов для кинематографа и фантастической литературы. Понятно, что представить то, чего не существует в сегодняшней действительности, можно миллионами разных способов, при этом и разу не повторившись. Однако, как ни странно, аура загадочности, фантастичности или даже мистичности, приросла к понятию «искусственный интеллект» прежде всего потому, что это словосочетание — не самый удачный перевод. Читать далее

Роль онлайн-игр в воспитательном процессе

Роль онлайн-игр в воспитательном процессе
Онлайн-игры распространяются все больше. Все больше и больше людей, особенно молодых, играет в них. К сожалению, пока эти игры для воспитательного процесса учитываются только с точки зрения интернет-зависимости – есть она или нет. Но люди используют онлайн-игры для времяпровождения, в качестве сайтов знакомств (вплоть до поиска партнера по браку), для общения, обучения и воспитания. Круг пользователей онлайн-игр очень широк, и в скором времени молодым людям придется задавать не только вопрос, какую школу они заканчивали, но и – в какую онлайн-игру играли. Как ни странно, но от этого многое зависит.

Рассмотрим два варианта онлайн-игр: военной тематики и мирно-сельскохозяйственные, так сказать, два противоположных конца шкалы.

Онлайн-игры военной тематики более других вызывают интернет- и игровую зависимость. Все дело во времени, которое они требуют. Сражение в такой игрушке или посещение игрового инстанса могут занимать несколько часов – часов, оторванных от реальной жизни. Все это время игрок буквально «живет» в компьютере, на поле игровой битвы. Иногда доходит до абсурда: мне пришлось столкнуться со случаем, когда человек, страдающий от расстройства желудка, три часа играл, сидя на унитазе – в прямом смысле! – чтобы не проиграть игровой бой из-за состояния здоровья.

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

Особенно интересно в военных играх понятие доблести. Толковый словарь Даля определяет доблесть как: «высшее душевное мужество, стойкость, благородство; высокое свойство души, высшая добродетель, великодушие, саможертва и пр.». Но в военных онлайн-играх происходит подмена понятий. К примеру, в игре Легенда: Наследие Драконов имеется игровая характеристика «Доблесть», однако увеличивается она отнюдь не за счет благородства, великодушия, самопожертвования и так далее, а – от количества убитых противников. Убил одного – получил плюс один к параметру. Причем, совершенно неважно – убил ли вооруженного противника в бою, или поймал представителя другой расы за мирными работами с удочкой в руках. В результате самыми доблестными воинами оказываются те, кто поймал наибольшее количество «мирных» противников, ведь их проще всего убить. И, разумеется, эта игровая доблесть не имеет никакого отношения к доблести как таковой. Но что именно откладывается в голове у молодых людей после таких игр? То-то же.

Также имеются определенные нюансы общения игроков между собой. Совершенно очевидно, что человек, находящийся в бою, пусть даже и игровом, изъясняется отнюдь не литературным языком. Даже с учетом того, что каждое выражение приходится писать, да еще с оглядкой на возможную модерацию. И все же, ругательства весьма и весьма распространены – как отражение испытываемых «боевых» эмоций.

Так что, назвать военизированные игрушки полезными для молодежи никак нельзя. И неважно, идет ли речь о игре фэнтэзийной или бойцов оснащают современными ракетами. Принцип, увы, везде один. И не будем забывать о времени, которая требует такая игра, вызывая самую настоящую интернет-зависимость.

Гораздо более безобидными с вышерассмотренных точек зрения представляются сельскохозяйственные игры. Такие игрушки построены по принципу экономических стратегий. В общем и целом требуется вскопать грядку, засеять, собрать урожай, продать его, на вырученные деньги обустраивать свой участок.

Удобно то, что сельхоз-игра не требует жизни у компьютера и с компьютером. Включил, за десять минут вскопал-засеял-собрал-выставил на продажу и выключил. Зашел через два часа – собрал посеянное, вновь вскопал… в общем, потратил еще десять минут. И так – несколько раз в день, но совсем понемногу. До интернет-зависимости далеко.

Опять же, процесс общения. Он не связан с боевыми действиями, так что протекает в довольно мирном ключе – с соответствующей лексикой. Кроме того, в таких играх обычно проводятся различные конкурсы, в том числе и литературной направленности: опиши свою ферму, расскажи вымышленную историю о своем фермерском хозяйстве, создай лучшую открытку на Новый год, День Святого Валентина и так далее. Конкурсы «ландшафтного дизайна» — создай самую красивую ферму. В чатах и на форумах игроки обсуждают тактику и стратегию игры, причем – не как и в какой последовательности вырезать войска противника, а – что лучше сажать в первую очередь, помидоры или розы.

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

Так что, с точки зрения воспитательного процесса, онлайн-игры мирной направленности можно даже признать полезными: общение, обучение экономическим стратегиям плюс – эстетическая составляющая (а как иначе создать красивую игровую ферму!). С военизированными играми гораздо хуже. Если взрослые игроки имеют определенный иммунитет к вредоносным психологическим установкам, то молодежь воспринимает их в полном объеме и полной вредности. И это обязательно следует учитывать в воспитательном процессе, корректируя его соответствующим образом.

Какая бесплатная онлайн-игра бесплатнее?

Какая бесплатная онлайн-игра бесплатнее?
Всем известно, что бесплатный сыр бывает только в мышеловках. И то, как утверждают, лишь для второй мышки. Но любители компьютерных игр по-прежнему ожидают, что реклама «Бесплатная онлайн-игра» соответствует истине, особенно в части «Бесплатная». И доверчиво регистрируются в игре, начинают играть, втягиваются в процесс, обзаводятся друзьями в игре и внезапно обнаруживают, что за продолжение удовольствия нужно платить. И платить немало.

Собственно говоря, на оплате игры никто не настаивает. Более того, даже можно продолжать играть совершенно бесплатно – для этого в различных играх есть соответствующие сервисы (например, профессии для персонажей, с помощью которых можно заработать игровые деньги). Но вот беда – если пользоваться только игровыми деньгами, не вкладывая ни копейки реальных, то многое в играх будет недоступно. Однако, игры бывают разные.

Например, Легенда: Наследие драконов, недавно получившая во второй раз подряд Премию Рунета, и подобные ей игры. Здесь если вкладывать реальные деньги, то весьма существенно. За $100 можно приобрести разве что тапочки для персонажа начального уровня. Полный комплект боевых доспехов для солидного игрока обойдется где-то около $5000. И это далеко не все, имеются и другие расходы, выливающиеся для игроков в крупные суммы. Но если игрок решительно настроен против вкладывания реальных денег за нарисованные доспехи, и обладает достаточным упорством, чтобы зарабатывать игровые деньги игровой же профессией (тут нужно еще и желание играть в данную игру), то такой игрок вполне может прокачать персонажа без единой копейки реальных денег. Просто это займет гораздо больше времени, чем при оплате наличными.

А вот милейшая фермерская игра Farmerama – совсем другая картина. Тут не нужно покупать доспехи, сражаться с монстрами и так далее. Сиди себе на огороде и выращивай овощи. Продавай, получай игровую валюту, улучшай участок. В общем, сплошная благодать. Но на этом солнце есть существенные пятна: многие улучшения доступны только за реальные деньги. Если в той же Легенде за все нужно платить одной игровой валютой, то Farmerama предлагает два средства платежа, две игровые валюты, одну из которых можно заработать с помощью игрового огородничества, ну а вторую – только купить за вполне реальные деньги.

Farmerama отнюдь не единственная такая игра. Многие онлайн-игры практикуют наличие двух игровых валют – для бесплатной и платной игры. При этом желающие играть совершенно бесплатно оказываются в очень невыгодном положении – многие функции игры им практически недоступны.

Так что тем, кто хочет играть в онлайн-игры, но не может или не хочет платить за это живые деньги, желательно в самом начале обратить внимание на средства платежа в выбранной игре. Если игровая валюта единственная – есть шанс полностью бесплатного игрового процесса, если же игровых валют несколько – будьте уверены, либо вам придется играть в урезанную версию, либо заплатить за полный вариант игры.

USB Модемы. Pro и Contra

USB Модемы. Pro и Contra
Почитывая фантастику, иногда не могу удержаться от смеха. Там роботы обвешаны башенками (!) модемов, в рассуждениях героев фантастики скорость 128КБ в секунду считается приемлемой и т.п. Буквально за 10 лет, прогресс в скорости передачи данных ошеломительно обогнал все фантастические надежды. Тем не менее, само слово «модем» осталось вполне актуальным, даром что у него появились конкуренты а сами модемы изменились до неузнаваемости.

Сами по себе USB модемы больше напоминают чуть разжиревшие флешки, и к ним так и липнет уже немного устаревающее, хотя и нравящееся автору название «Pen-drive». USB-радиомодем представляет из себя превосходный пример устройства «все-в-одном». Собственно модем, антенна к нему, флеш и sim-карты помещаются во вполне миниатюрном устройстве. Автор, чтоб не потерять, так держит модем в чехольчике с тесемкой. Малогабаритность определяет главное достоинство радиомодема – его мобильность. Везде, где есть доступ к сотовой сети выбранного провайдера, модем обеспечит доступ к интернет-ресурсам. Простота настроек программного обеспечения так же чрезвычайна. Вполне классическое устройство из разряда – «вставил и забыл» Единственное замечание – иногда при совместном подключении к локальной сети, радиомодемы «бодаются» с настройками локалки. Но это не очень частый и тоже достаточно легко устранимый вариант.
Радиомодемы, как правило, двухтарифны. Безлимит, который на самом деле лимитируется к-вом мегабайт причем не очень большим (раз в 100 и даже 1000 раз меньшим, чем у кабельного «безлимита»). Странные, конечно «безлимиты», после исчерпания которых тебе сильно урезают скорость – спасибо хоть не совсем отключают. И, несколько более дорогой тариф «оплаты по факту». Т.е. без абонентской платы: не пользуешься модемом – не платишь. К тому же, именно на нем больше смысла имеют бонусы – их можно конвертировать в те же мегабайты информации. В любом варианте, стоимость мегабайта информации у радиомодемов получается выше, чем у «проводного», т.е. кабельного варианта подключения.
Второй серьезный недостаток – существенно меньшая скорость обмена данными, по сравнению с той же кабельной сетью. Заявленные 7, 12 и более мегабит/секунду характеристики модемов не соответствуют реальной скорости доступа. Дело в том, что точки доступа, к которым «обращается» радиомодем, как правило 8-мегабитные. Получается, 8 пользователей, одновременно подключенных к такой точке, получают в среднем не более 1 мегабита «на брата». Больше – хуже. У автора в центре города скорость не раз падала до 248 килобит в секунду. Как не вспомнить телефонный dial-up и башенки модемов на роботах будущего )). Так что, заявляемые космические скорости usb-радиомодемов – пока лишь рекламное преувеличение.
У радиомодемов, в последнее время, появились старые новые конкуренты в виде собственно сотовых телефонов, подключаемых как радиомодем и при безлимитном интернет-тарифе способных серьезно потеснить радиомодемы. Ну, это уже несколько другая история.

Если у вас злобный вирус …

Если у вас злобный вирус …
В последнее время среди пользователей организации автора при взаимодействии с Интернетом вошло в моду «ловить» баннерные вирусы. После загрузки операционной системы, компьютер блокируется, пользователю выводится заставка, что он, нехороший человек, смотрел порнуху и за это его штрафуют на столько-то. Переведите на телефон такой-то.
Естественно, переводить ничего не надо. Представляются следующие варианты:

Позвать сисадмина, и пока он возится, попить чайку )). Чтобы сисадмин громко не ругался – налить и ему. Если нет сисадмина, проще всего переустановить рядом с старой операционкой новую копию, далее переинсталлировав и необходимые программы. После чего проверить машину антивирусной программой и вручную просмотрев самые ходовые папки, вроде «Моих документов» Все подозрительные файлы – уничтожить, или переместить в специально созданную папку «Хлам». Не понадобиться в течении трех месяцев – удалить все ее содержимое.
Второй вариант – использовать диск BART, после чего также провести «прополку» файлов антивирусной программой или почистить реестр программой regedit. Операция с чисткой реестра требует серьезной квалификации и не рекомендуется новичкам. В свое время на сайтах антивирусных компаний размещались коды, которые и требуют вирусы. По идее, ответив на код, вредоносная программа пропускает далее – затем вычищается антивирусником. Полагаю это уже неэффективно, поскольку вирус запросто может и не содержать кода разблокировки вообще.

Как теоретический вариант, можно рассмотреть идею создания точек восстановления системы и копирования системного реестра. У этого способа полно недостатков. Самый очевидный – нет смысла устанавливать новое программное обеспечение, да и вирус может повредить систему так, что проще ее восстановить с нуля.
Следует понимать, что уничтожение вируса еще не означает полное восстановление работоспособности компьютера. Достаточно часто вирусы успевают нанести операционке повреждения, достаточные для того, что на восстановление будет потрачено больше усилий, чем на полную переустановку системы и всех программных приложений.
Поэтому, основными остаются старые как мир рекомендации – всегда иметь под рукой инсталляционные диски с операционной системой и основных программ, регулярно копировать наработанные данные на CD-R или DVD-R или чего либо read-only-подобное.

И, естественно, быть внимательным и соблюдать осторожность. Вирусов нет не там, где их удаляют, а где хороший антивирусник сочетается с ответственным подходом пользователя. Или уж разоряйтесь на эппловский «Мак», там операционка ROM — и вирусам в нее хода нет. Или ставьте себе линуксоидные операционные системы. Правда. придется терпеть немного непривычный интерфейс, большинство windows-заточенный программ не запустятся, а сделанные в ОпенОфисе файлы – получатели могут не сразу сообразить – чем открывать ). Что поделать – в нашем мире за все приходиться чем-то платить – в том числе и за условно-бесплатное.

Юная «старушка» дискета

Юная «старушка» дискета
В 1995 году, будучи по делам в одной торговой компании, автор этих строк наблюдал, как одна из офисных сотрудниц вставляла в дисковод своего компьютера гибкую дискету диаметром 5,25 дюйма. Ее компьютер, кстати, был оснащен 386-м процессором. Очень современным по тем годам!
Ну а вообще в те годы можно было довольно часто встретить компьютеры сразу с 2 дисководами – один для дискет 5,25 дюйма, а другой – для дискет 3,5 дюйма. При этом никакого слота для компакт-диска не предусматривалось. Да, собственно, и слова такого еще никто не слышал – слот!
Но уже в конце 1998 люди в офисах и дома вовсю записывали компакт-диски, а вот разные мелкие файлы продолжали переносить на дискетах 3,5 дюйма. Интернет тогда уже вроде как был, только с ним были постоянные проблемы. Подключение шло через модемы по телефонным проводам, все подключалось с каким-то жутким шипением, и скорость передачи данных была ужасно медленная.
Однако дискеты на 3,5 дюйма царили повсеместно! А дисководами, соответственно, был оборудован каждый компьютер.
В следующем, 1999 году, лично я впервые увидел новое чудо накопительной техники – так называемый «зип-привод». Этакая штучка, очень похожая на переносной дисковод, и на диск в этой штучке можно было записать и много раз перезаписать уже сумасшедший объем данных – до 80-ти мегабайт! Огромный прогресс по сравнению с дискетой на 1,4 Мб. Но эти «зип-приводы» довольно быстро сошли со сцены.
Потому что появились флэш-накопители!
Однако дискеты на 3,5 дюйма продолжали находиться во всеобщем употреблении. Удобные они очень. Плоские такие, в карман рубашки или там, в сумочку, спокойно влезают.
Однако в начале 2000-х годов, когда флэш-карты наконец-то стали широко распространяться и у нас в стране, объемы производства и продаж дискет стали резко сокращаться.
В 2003 году компания Dell объявила, что прекращает укомплектовывать выпускаемые ею компьютеры флоппи-дисками. Зато ни одна стандартная комплектация системного блока не обходится теперь без DVD-привода и USB-гнезд.
В апреле 2010 года компания Sony торжественно объявила, что с марта месяца 2011 года полностью прекратит выпуск дискет на своих заводах не территории Японии.
Правда, в марте нынешнего года случилась Фукусима, но Sony в любом случае с дискетами покончила.
Это и грустно, и парадоксально, потому что именно инженерами фирмы Sony и была разработана дискета на 3,5 дюйма. Это произошло всего лишь 30 лет назад – в 1981 году. Кстати, дискеты предыдущих форматов были разработаны компанией IBM.
Но мы ведь сейчас не об истории компьютерных технологий говорим – мы сейчас говорим о личных ощущениях, связанных с дискетами.
Очень много хорошего с ними связано у многих людей.
И ведь, что удивительно, дискета на 3,5 дюйма пока не собирается сдаваться окончательно! Она до сих пор применяется в сложных технологических процессах. Авиация, телекоммуникации, металлообработка до сих пор не могут обойтись без дискет.
Так что, может быть, юная старушка дискета еще побудет с нами годик-другой? А то и несколько лет?..

Компьютерные гении: вредители или созидатели?

Компьютерные гении: вредители или созидатели?
Заголовки СМИ чуть ли не ежедневно пестрят сообщениями о взломах крупнейших сайтов и порталов по всему миру, компьютерных вирусах исключительной сложности и всё новых и новых уловках мастеров компьютерного дела. С чего всё начиналось и все ли хакеры – взломщики и герои скандалов?
Очень и очень давно хакеры не имели к компьютерным системам ни малейшего отношения. Они были мастерами, изготовляющими мебель при помощи топора. Слово «Хакер» вообще происходит от английского hack – разрубать. Как же это название перекочевало на нынешних компьютерных виртуозов? И снова вернёмся лет на «цать» назад. После появления компьютеров появились специалисты высшего класса, которые отлично разбирались во всех тонкостях работы устройств. В программном обеспечении быстро, ловко и не всегда по правилам они исправляли ошибки. Важен был результат, а методы… «Топорно» одним словом. Вот и стали хакеры – хакерами. Как видим, изначально работали они исключительно во благо, нормализуя и поддерживая работу программного обеспечения. Но время шло, технологии развивались, хакеры старательно оттачивали мастерство. И теперь взломанные сайты ЦРУ, конгресса США, корпорации Sony – не редкость. Кстати, называть виновников подобных скандалов хакерами – не совсем верно. Собственно компьютерных взломщиков правильно именуют – крэкерами.
Вопреки распространённому мнению хакеры и крэкеры – это не одинокие люди, вечно сидящие перед компьютером и света белого не видящие. Хакеры – это сообщества, группы, оживлённое общение в своей среде. Хакерская среда – это сплочённый коллектив, в котором принято делиться имеющейся информацией. Быть может, именно поэтому их работа бурлит, а результаты поражают? Один сделал что-то, поделился. Второй на основе этого осуществил нечто более масштабное, передал знания. Третий продвинулся ещё дальше. Движение и развитие бесконечно… И сделать что-то новое, интересное, доселе недоступное хакеру нужно непременно аккуратно, красиво и элегантно. Одним словом – «не топорно». А вот зачем они это делают? И хакеры и крэкеры – борцы за свободу доступа к информации. Только методы достижения этой свободы у них разные…
И пока вы читали эту статью, возможно где-нибудь в другом полушарии какой-нибудь хакер создал аналог известной и нужной, но очень дорогой программы, которую вы бесплатно скачаете в Интернете и установите на свой персональный компьютер. А возможно какой-нибудь крэкер уже почти отрыл очередной правительственный сайт и готов познакомить нас с весьма любопытными секретными документами…

О виртуальных мирах.

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

Ну ладно бы у нас была бесконечная жизнь, и главная проблема – как убить время. А так, миллиарды людей тратят свое, совсем не лишнее, время на ничего. Мы научились, точнее нас приучили, получать удовольствие от забивания гвоздей микроскопом. Механизм затягивания человека в виртуал прост и незатейлив. Не преуспев в этом мире, неважно истинно или мнимо, человек уходит в мир нереальности, где все неудачи отменяются перезагрузкой, где всегда «я» = центр Вселенной.
Иногда я чувствую себя этаким троглодитом, который спрашивает у цивилизованного человека про компьютер – «от этого я становлюсь быстрее, сильнее, ловчее?» «это можно есть?», «этим можно охотиться?» И искренне недоумевающем – а что вы за ним так много сидите? Если же серьезно, то просто недоумение вызывает нежелание использовать компьютер как средство заработка или повышения собственной квалификации. Вместо этого, значительное количество сограждан предпочитает грезить наяву, погружаясь в виртуальные миры. А в ответ на упрек, что они попусту тратят время и подвергают здоровье опасности – слышится: «мое время, как хочу так и трачу, я на это заработал». Ну так потом, не занимаясь детьми, не ждите от них благодарности, не занимаясь работой – не ждите достатка, не занимаясь собой – не ждите от себя достижений.
О виртуальных мирах.
Виртуальный мир сочетает в себе невероятное событийное богатство одновременно с поразительной скудностью. Скудность проявляется в том, что не проявляющего энергичность, виртуальный мир затягивает в мир псевдокомфорта. Желание и способности получать и осмысливать новое пропадает. При этом же, ненавязчиво и исподволь, из человека уходит креативность. Не первый раз слышу, что писатели или ученые не могут набирать наброски мыслей на компе – им нужен лист бумаги. Проверено на себе – то что пишу письменно и только потом набираю на клавиатуре получается отточеннее, изящнее и смыслово более наполнено. Помню, при появлении первых компьютерных игрушек в обеденный перерыв в конструкторском бюро у двух персоналок собиралась толпа кандидатов и докторов наук, со страстью футбольных болельщиков следящее за похождениями крокозябистого «героя», уворачивающегося от не менее крокозябистых чертей и пожирающего точки в лабиринте. Когда появился уже более графически совершенный «Диггер» — такого фанатизма не было ужи и в помине. Сейчас – специально спрашивал – в игрушки не играет ни один. Потому что ценили идею, а с ними сейчас в играх застой. Да и понимание ценности своего времени возобладало – сейчас с лету оценив новость и одобрительно или нет о ней отозвавшись – продолжают заниматься делом. Жизнь, как говориться коротка – а виртуал бесконечен. Причем – вовсе не дружественен, раз все более и более противопоставляет себя миру реальному.

Тестирование программных продуктов. Белый ящик

Здесь становится понятна большая приспособленность термина "стеклянный ящик". Тестирование подобным способом происходит, в основном, сразу после написания тестируемого кода. Это, если хотите, правило хорошего тона в программировании. При объектно-ориентированном подходе, данная схема выглядит предпочтительной, т.к. позволяет абстрагироваться от окружения и тестировать отдельные сущности программы. Строго говоря, абстрагироваться от окружения позволяет не столько сам метод, сколько применяемые технологии. Здесь стоит упомянуть о методе, называемом "модульное тестирование".
Модульное тестирование применяется, если структура приложение позволяет условно разделить его на модули — отдельные целостные элементы. Данные модули могут представлять собой как отдельные классы, так и отдельные библиотеки классов. Конкретный подход к тестированию определяется внутри компании на основе данных о структуре приложения, среды написания, имеющихся технических и людских ресурсов определенного качества, а также сложившимися историческими предпочтениями. Не смотря на широкую вариативность разбиения общей структуры приложения на модули, существует общая особенность, присущая таким выделенным элементам. Это — интерфейс. Интерфейс модуля есть совокупность каналов с ограничениями, предназначенных для общения с внешним миром. В классах, например, роль интерфейса могут выполнять публичные методы. Учитывая эти факты, можно спрогнозировать потенциальные проблемы при модульной стратегии тестирования. Основная проблема заключается в следующем. Ценность модуля, как элемента приложения, проявляется лишь в момент работы внутри остальных элементов, составляющих вместе с рассматриваемым цельное приложение. Как быть в случае, если интеграция тестируемого (тут необходимо держать в голове презумпцию нестабильности еще не оттестированного модуля) элемента в общую систему слишком дорогое "удовольствие", либо окружение для него еще вообще не разработано? В этом случае применяют технологию заглушек. Для тестируемого модуля, создается искусственное окружение, эмулирующее работу реального. В качестве бытового аналога можно рассмотреть ситуацию с "фальшивым рулем" в автошколе. Для того чтобы научить человека пользоваться рулем, не обязательно создавать специально для него автомобиль. Можно обойтись "малой кровью", предоставив ему интерфейс — "фальшивый руль", прикрученный к столу. Используя его можно "оттестировать" насколько ловко обучаемый владеет искусством маневрирования.
После того, как отдельные модули были оттестированны, необходимо проверить, насколько логика совместной их работы соответствтует запланированной? Тут мы подошли к стратегии интеграционного тестирования. Для интеграционного тестирования также справедливо и целесообразно использование механизма заглушек. Данный вид тестирования подразделяется на нисходящий и восходящий. Для пояснения этих терминов давайте рассмотрим java-приложение, позволяющее бронировать билеты в кинотеатр. Рассмотрим его в разрезе уровней реализации (модулей): пользовательский интерфейс, интерфейс сервера к пользователю, интерфейс сервера к базе данных, драйвер базы данных. При нисходящем тестировании, сперва мы бы составили и "прогнали" набор тестов для пользовательского интерфейса, поставив заглушки на "нижних" входах/выходах. Заглушки бы возвращали заранее определенные ответы, детерминированность которых принималась нами как допустимое приближение функциональности, позволяющее с достаточной степенью уверенности оценить работу верхнего уровня приложения. Далее, "снизу" мы бы присоединили сервер обработки запросов, "воткнув" заглушку на уровень общения с драйвером базы данных. При восходящем тестировании мы бы проверили сперва драйвер базы данных, а затем последовательно присоединяли бы модули "сверху". Выбор между нисходящим и восходящим тестированием обуславливается не столько порядком реализации модулей (хотя влияние данного фактора также не стоит отвергать) сколько прогнозированием мест появления багов. Идея состоит в том, что более весомые ошибки необходимо локализовывать на ранних стадиях разработки.
При разработке тестового сценария для тестирования методом белого ящика, необходимо определить критерии допустимости покрытия. Делается это для того чтобы выявить степень покрытия приложения тесткейсами, а в дальнейшем сделать вывод о том, насколько качественный продукт подготовила компания на данной стадии его производства. Существует несколько видов подобных критериев, но наиболее известны и признанны три из них: покрытие команд, покрытие условий и покрытие путей. Остановимся подробнее на каждом из них:

1. Покрытие команд.
Данный критерий говорит нам о том, что необходимо разработать такой набор тесткейсов, которые затронут КАЖДЫЙ оператор в программе хотя бы один раз. Рассмотрим для примера java код простейшего класса, имеющего нетривиальную логику. В суть этой логики вникать не имеет никакого смысла. Главное — это то, что в тестируемом классе имеется набор потенциальных путей, возможных для прохождения. Рассматриваемый критерий позволяет нам выделить минимальный набор тесткейсов (пар значений для входных данных), удовлетворяющих критерию покрытия команд. Количество тесткейсов в данном случае равно одному. Эта пара значений: value_1=5, value_2=6 и соответствующий ожидаемый результат: 11.

1  public class TestClass {
2     public int testMethod(int value_1, int value_2){
3         int result=-1;
4         if (value_1==5){
5             result=0;
6         }
7         if(value_1!=value_2){
8             result=value_1+value_2;
9         }
10        return result;
11    }
12 }


Видно, что при таких значениях, каждый оператор выполняется один раз. Используемый подход является наименее предпочтительным, особенно в случае разветвленной логики. В этом случае он не гарантирует корректный поиск ошибок, связанных с выбором вариантов дальнейшего движения.

2. Покрытие условий
Данный критерий более силён по сравнению с предыдущим. Он предполагает, что тесты отвечающие ему, проходят через каждое условие в коде хотя бы один раз. В нашем конкретном примере, тест, отвечающий критерию покрытия команд, отвечает и критерию покрытия условий, т.к. значения проверяются в обоих боках if.

3. Покрытие путей. Для того чтобы составить набор тестов, отвечающих данному критерию, полезно нарисовать блок-схему либо граф выполнения программы. После построения схемы, написанные тесты в совокупности должны провести тестируемый код по всем "стрелочкам". Относительно нашего примера таких тесткейсов будет 4. Если рассматривать их в виде "[(входное-значение-1, входное-значение-2), ожидаемый результат]: покрываемый путь", то описание тестового набора будет выглядеть следующим образом:
[(5,5),0]: 2-3-4-5-7-10
[(5,4),9]: 2-3-4-5-7-8-10
[(4,4),-1]: 2-3-4-7-10
[(4,5),9]: 2-3-4-7-8-10

Вы в праве задать вопрос: "Почему мы используем цифру 4 а не 8? Или не 11. Или не -3". Для ответа на этот вопрос в теории тестирование введено понятие классов эквивалентности. Классы эквивалентности — это классы входных данных, любой элемент из которых при успешном завершении теста на его основе, гарантирует успешность тестов и на остальных элементах из данного класса эквивалентности. В нашем конкретном примере, мы разбили все входные данные на два класса: первый состоит из одной лишь цифры 5, а второй — из всех остальных цифр. Вопрос методики разбиения на классы так же сугубо субъективен и зависит от множества факторов.
Рассмотренные подходы не предназначены для поиска ошибок, связанных с невыполнением ограничений, наложенных спецификациями или иных ограничений. Для этого следует разрабатывать индивидуальные тесты с учетом установленных нюансов. Выбор в пользу тестового набора, удовлетворяющего тому или иному критерию обуславливается многими факторами и является предметом обсуждения внутри компании. Стоит отметить, что для проверки качества тестового набора, часто, проводят т.н. мутационное тестирование. Для этого в код вносят заведомо ошибочные участки Читать далее

Тестирование программных продуктов

Тестирование программных продуктов
Справедливости ради, стоит отметить, что российские реалии обеспечения качества в целом, далеки от западных, где под этим термином подразумевается обеспечение качества процессов компании, ведущих в конечном итоге к максимизации удовлетворенности клиента, и относится это понятие не только к IT сфере, а к бизнесу в общем его смысле. Данные стандарты предоставляются несколькими организациями, в частности ISO и IEEE

Многие знают чем занимаются программисты и довольно ясно себе представляют их обязанности и ответственность.
Российское представление обеспечения качества в IT компаниях сводится к тестированию программного обеспечения, и скорее всего, именно навыки позволяющие успешно работать в этом направлении, работодатель будет требовать у соискателя. О навыках речь пойдет позже, а сейчас давайте окунемся в среду IT компании и посмотри изнутри на её процессы и на область, занимаемую в данных процессах QA департаментом.

Усредненная структура компании, занимающейся разработкой программного обеспечения, выглядит следующим образом:
Маркетинговая служба. Занимается исследованием рынков, требований потенциальных заказчиков и расчетом соответствующих рыночных рисков. После перечисленных исследований, отдел подготавливает соответствующую документацию, в котором общими словами и требованиями, описывает продукт, требующий разработки и внедрения на рынок. Данная документация носит название MRD, т.е. Market Requirement Document
Служба документации. Занимается подготовкой документации различных видов, начиная от руководств по продукту, заканчивая конкретизацией документа MRD, называемого PRD — Product Requirement Document.
Служба разработки. Занимается непосредственно разработкой архитектуры приложения и его кода. Ядро компании и, часто, самый многочисленный отдел в ней. На основе PRD разрабатывается т.н. "дизайн-спецификация", описывающая общие принципы имплементации каждой выделенной части продукта.
Служба тестирования. Отдел, о котором пойдет речь в данной статье. Занимается проверкой корректности различных частей продукта на каждой стадии его разработки. В маленьких компаниях, численностью до 15 человек, выделять специальный отдел тестирования не имеет особого смысла, т.к. подобные команды разрабатывают малобюджетные, высокооборачиваемые продукты, и могут позволить себе быстрое тестирования средствами самих разработчиков. В случае, когда компания разрабатывает большое количество продуктов, либо продукт один, но масштабный, без отдельного департамента по тестированию не обойтись

Прежде чем вплотную подойти к особенностям профессии инженера по тестированию, необходимо ознакомиться со средой его обитания. С ключевыми терминами, с целями и задачами, а также со сложившимися стереотипами, заложниками которых, многим инженерам приходится становиться в силу начальной стадии развития данного направления в России. Основными "друзьями" специалиста в рассматриваемой области являются "баги", "тесткейсы", "бактрэкинговые системы", а также "инструменты автоматизации". Баг (Bug-жук) — ошибка, отклонение работы приложения от ожидаемого. Легенда появления этого термина говорит о том, что некие американские инженеры, разбирающиеся с поломкой электронного утсройства, обнаружили, что виной всему стал мотылек, застрявший между контактами. Дальнейшее развитие QA-индустрии согласилось с лаконичностью и информативностью термина, в наши дни прочно засевшего в сленге IT-специалистов. Чтобы как-то формализовать подход к тестированию, структурировать его, зафиксировать степень покрытия и получить базу, на которую можно ссылаться при предъявлении претензий свзанных с появлением багов, тестировщики пользуются т.н. тесткейсами. Тесткейс (Test Case — тестовый случай) представляет собой формализацию юзкейса (use case — последовательность шагов, рассматриваемая в рамках стандартного использования приложения) с целью зафиксировать отклонение или неотклонение результата от ожидаемого. Количество тесткейсов на один продукт может исчисляться сотнями и даже тысячами. Каждый такой случай покрывает определенный процент функциональности приложения, а итог в идеале должен стремиться к 100%. Для того, чтобы собрать статистику, зафиксировать ошибки и провести их от стадии открытия до стадии исправления и закрытия, инженеры по тестированию (строго говоря, не только они — данный инструмент является ядром взаимодействия между отделами) пользуются т.н. бактрекинговыми системами (Bug Tracking — отслеживание багов). Такие системы, часто представляют собой сервера с веб-интерфейсом, имеющие широчайшие возможности по структуризации контента. В общих чертах процесс использования данных систем сводится к следующей последовательности:
Инженер по тестированию, выполняя тестовые мероприятия (будь то выполнение тесткейсов, либо просто "игра" с тестируемым приложением) обнаруживает поведение, отличное от ожидаемого.
Обнаружив баг, инженер заносит информаци о нём в багтрекинговую систему. Система присваевает ему статус "New".
Далее процесc зависит от используемой системы, а так же от её настройки. Т.к. ошибка, занесенная в систему, должна переместится в чью-либо зону ответственности, необходимо определить пользователя, на которого ошибка будет переведена (assigned). Этот процесс может проходить как автоматически (в результате анализа системой входной информации об ошибке) так и вручную (при просмотре списка ожидающих багов менеджером проекта, например)
Запись об ошибке передается программисту для исправления (to be fixed). Программист принимает решение, которое может обернуться как минимум четырьмя исходами: согласиться с тем, что данное поведение приложения ошибочно и исправить его; не согласиться с тем, что это ошибка, и отправить запись обратно в отдел тестирования со статусом "Not A Bug" при этом обосновав своё решение; отправить ошибку обратно в отдел тестирования со статусом "Can Not Reproduce" при невозможности воспроизвести данный результат на своей копии приложения; отправить запрос дополнительной информации, вовлеченному пользователю (Info request).
После того, как баг приходит обратно в отдел тестирования, инженеру необходимо провести верификацию его текущего статуса. В случае исправления ошибки, тестировщику необходимо как минимум пройти описанный тесткейс и убедиться что на новой версии приложения, результат описанных действий равен ожидаемому. В случае статуса "Not A Bug" необходимо либо согласиться с этим (получив консультации заинтересованных лиц), либо не согласиться и отправить ошибку обратно разработчикам. При верификации статуса "Can Not Reproduce", необходимо убедиться, что проблема всё ещё существует, а также в том, что шаги её достижения были описаны верно.
После верификации баг отправляется менеджеру отдела тестирования в статусе "To Be Closed". Менеджер принимает решение о финальном закрытии или незакрытии данной ошибки

Описанный процесс в теории тестирования называется жизненным циклом бага. Весь жизненный цикл ошибки отражается в багтрэкинговых системах, в последствие позволяющий накопить статистику по ошибкам, провести их анализ и сделать соответствующие выводы. Стоит также отметить, что при занесении бага в систему отслеживания жизненного цикла, одним из свойств новой записи становится приоритет данного бага, который может измениться в процессе эволюционирования этой записи. Стандартно выделяют четыре приоритета: Low, Medium, High и Critical. Имея перед собой статистику по текущему проекту, можно определить критерий выпуска релиза. Обычно, обязательным критерием является отсутствие багов с приоритетами Critical и High на момент сдачи проекта. Отношение к остальным багам сугубо индивидуально для каждой компании. Такие ошибки могут исправляться как внутри текущего релиза, так и в следующих версиях продукта, если того требует рыночная ситуация.

В каждой компании существует свой подход и свои традиции тестировани, продиктованные структурой продукта, взглядами руководства, имеющимися в наличии техническими средствами и т.д. Тем не менее, можно выделить общую часть в той или иной степени, Читать далее