Международный экономический форум 2015

К.э.н. Стебеняева Т.В., Юдинова В.В., Юрятина Н.Н.

АНО ВПО Институт стандартов международного учета и управления, г. Москва

Управление экспертной оценкой качества инновационных программных продуктов на основе выявления ошибок при их тестировании

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

Установить точное число успешно функционирующих в различных сферах производственно-хозяйственной деятельностью многих отечественных предприятий современных ИПП не представляется возможным. Среди наиболее известных в нашей стране можно указать ИПП «Project Expert», которая является головной программой в семействе программных продуктов фирмы «Про-Инвест-Консалтинг» по анализу производственно-хозяйственной деятельностм предприятия, а также продукты «Forecast Expert» - ИПП для прогнозирования, «Marketing Expert» - ИПП для построения маркетинговой стратегии, «Audit Expert» - ИПП для анализа финансового состояния предприятия, «Project Questionnaire & Risk» - ИПП для анализа рисков [1]. Все приведенные ИПП относятся к классу «закрытых», поскольку используемые в них для проведения расчетов конкретные формулы недоступны пользователю для корректировки. Противоположность им представляют так называемые «открытые» системы, в которых пользователи имеют возможность непосредственно оказывать воздействие на процедуру вычислений посредством внесения корректировок в исходные данные и расчетные формулы в случае необходимости. Из «открытых» систем в сфере экономики в России наиболее известны программные продукты фирмы «Альт» (г. Саект-Петербург), а именно: «Альт-Инвест» (ИПП для разработки планов инвестиционной деятельности предприятия); «Альт-Прогноз» (ИПП для разработки стратегии прогноза развития предприятия), «Альт-План» (ИПП для стратегического планирования), «Альт-Финансы» (ИПП для анализа финансового состояния предприятия) [1]. Кроме указанных существует и активно используется еще целый спектр ИПП различной направленности, так или иначе связанных с решением отдельных вопросов производственно-хозяйственной деятельности многих отечественных предприятий.

Однако далеко не все они полностью соответствуют требованиям российских и международных стандартов, а также других нормативных документов (спецификаций), раскрывающих особенности применения ПО и информационного наполнения ИПП [5, 12]. Именно по этой причине задача экспертной оценки качества разработки ИПП становится все более актуальной. В данной статье будут показаны возможности использования некоторых из существующих методов и технологий тестирования ИПП для экспертной оценки качества их разработки.

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

Как и в любом виде деятельности человека в окружающей его реальности в экспертной деятельности можно выделить три основных этапа:

1) восприятие информации в пределах конкретной предметной области экспертизы;

2) анализ информации на предмет ее соответствия заранее установленным требованиям или выбранному составу критериев;

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

Экспертиза (от лат. expertus – опытный) представляет собой исследование специалистом (экспертом) вопросов, для решения которых необходимо наличие специальных познаний в определенной области науки, техники, искусства и т.д. [6].

Под экспертизой также принято понимать изучение специалистом (экспертом) или группой специалистов вопросов, правильное решение которых требует профессиональных исследований и специальных знаний в конкретной сфере жизнедеятельности человека [11].

Эксперт – специалист в той или иной области науки, техники, экономики и т.д., приглашаемый для проведения исследования, консультирования, выработки суждений по вопросам, требующим наивысшей квалификации, а именно: абсолютного владения методологией конкретной предметной области и способностью компенсировать недостаточность этого владения  профессиональной интуицией и опытом [9, 10].

Экспертное заключение – устное или письменное заявление лица, которое в силу своей компетенции, знаний и жизненного опыта в конкретной предметной области знаний оно делает на основании существенно значимых фактических обстоятельств [8].

Экспертная оценка – основанная на профессиональном опыте описательная, качественная, порядковая количественная оценка процессов и явлений, не поддающихся в принципе или в конкретной ситуации практическому измерению или расчету при помощи методов точных наук [7].

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

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

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

Экспертная оценка ИПП – профессиональное суждение о качестве технических решений, использованных при его разработке.

Экспертное заключение по ИПП – устное или письменное описание оценочных суждений о качественном уровне его разработке и формирование предложений, направленных на повышение качества технических решений.  

Изначально наиболее популярными технологиями экспертной оценки качества разработки ИПП посредством проведения их тестирования были технологии «черного» и «белого» ящиков [2, 3, 4].

При использовании первой технологии тестирования ИПП рассматривается как «черный» ящик, внутренняя структура которого не имеет никакого значения, а основное внимание уделяется выявлению экспертами ошибок, при которых работа ИПП не будет соответствовать требованиям спецификации или стандарта. Согласно этой технологии экспертной оценки качества подвергаются данные, выбранные на основе требований спецификации или стандарта. Для нахождения всех ошибок в ПО ИПП в рамках технологии «черного» ящика необходимо выполнить так называемое исчерпывающее входное тестирование (exhaustive input testing) или, другими словами, перебрать все возможные комбинации входных данных, используемых в ИПП. Однако, для этого потребуется провести бесконечное множество тестов, что на практике не представляется реально выполнимым.

Аналогом технологии исчерпывающего входного тестирования считается технология исчерпывающего тестирование путей (exhaustive path testing), которую принято называть технологией «белого» ящика [4, 6]. В соответствии с этой технологией можно утверждать, что если вариантами тестирования покрыты все без исключения пути выполнения ПО ИПП, то оно полностью протестировано. Однако и эта технология имеет свои слабые места, а именно: 1) количество уникальных путей выполнения ПО современных ИПП выражается очень большими числами; 2) технология не гарантирует полное отсутствие ошибок после ее применения.

Таким образом, ни одна из описанных выше технологий не может использоваться для экспертной оценки качества современных ИПП, поскольку их реализация на практике существенно затруднена. В таких условиях достаточно эффективным методом экспертной оценки качества и поиска ошибок в ПО ИПП зарекомендовало себя ручное тестирование (human testing). Применение неформальных методов ручного тестирования положительно сказывается на надежности и производительности процесса экспертизы в двух аспектах:

1) чем раньше будут обнаружены ошибки в ПО ИПП, тем быстрее они будут устранены или корректно исправлены;

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

Основными методами ручной экспертизы качества ПО ИПП и  тестирования его отдельных компонентов являются инспекция кода (code inspection), сквозной просмотр (walkthrough) и тестирование удобства использования (usability testing) [2, 3]. Главная особенность этих методов заключается в возможности их применения практически на любой стадии разработки ПО ИПП.

Инспекция кода представляет собой набор процедур и методик выявления ошибок в ПО ИПП при помощи анализа кода программы группой экспертов. При ее проведении основное внимание уделяется процедурным вопросам, формам представления данных, особенностям их заполнения и т.п. Однако наиболее важной частью инспектирования кода является поиск возможных ошибок в ПО при помощи контрольных списков, в которых уже содержатся наиболее распространенные ошибки, выявленные в программах, написанных на любых языках программирования. Систематизация возможных ошибок по категориям выглядит следующим образом: 1) ошибки обращения к данным; 2) ошибки описания данных; 3) ошибки вычислений; 4) ошибки сравнения; 5) ошибки в управляющей логике; 6) ошибки программных интерфейсов; 7) ошибки ввода-вывода; 8) другие ошибки. Состав и содержание каждой из указанных категорий будет кратко раскрыт ниже.

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

К ошибкам описания данных относятся: отсутствие прямого объявления хотя бы одной переменной; указание не всех атрибутов в объявлении переменных; неправильная инициализация переменных; неправильное определение типа и размера переменных; несогласованность инициализации переменной с типом ее памяти; наличие переменных со сходными именами.

К ошибкам вычислений относятся: использование для вычислений переменных несоответствующего типа; смешение в вычислениях переменных разных типов; наличие у переменных одного типа разной длины; переполнение или потеря точности при вычислениях; выход переменной за пределы допустимого по логике задачи диапазона значений; нарушение порядка и приоритета выполнения операций при вычислениях.

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

К ошибкам в управляющей логике относятся: превышение значения индекса числа возможных переходов при множественном ветвлении; незавершенность хотя бы одного цикла работы ПО ИПП; незавершенность хотя бы одного модуля или программы в целом; невыполнение некоторых циклов в силу входных условий; ошибки диапазона выполнения операций в цикле; отсутствие хотя бы у одной открывающей скобки закрывающей скобки; отсутствие учета хотя бы одного возможного условия в точках ветвления ПО ИПП.

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

К ошибкам ввода-вывода относятся: неправильно заданные атрибуты в объявлениях файлов; неправильно заданные атрибуты в инструкциях файлов; несогласованность спецификации формата с информацией из инструкции ввода-вывода; недостаток свободной памяти для хранения файла; некорректное открытие и закрытие файлов; некорректная обработка ошибок ввода-вывода; наличие орфографических и грамматических ошибок в тексте.

К другим ошибкам относятся: отсутствие ссылок при генерации списка перекрестных ссылок; некорректные атрибуты хотя бы одной переменной; наличие неописанных переменных или языковых конструкций, препятствующих оптимизации кода; отсутствие программной проверки корректности входных данных; пропуск хотя бы одной функции в ПО ИПП. 

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

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

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

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

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

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

Исследование выполнено при финансовой поддержке Российского фонда фундаментальных исследований, проект №15-06-00044а «Развитие методологии экспертизы результатов поисковых научных исследований для проектов создания инновационной продукции, услуг и технологий: экономические методы, модели, инструментарий и алгоритмы обработки информации».

Литература:

1. Автоматизированные системы в экономике [Электронный ресурс]. Режим доступа – URL: http://ecouniver.com/494-avtomtizirovannye-sistemy-v-yekonomi-ke.html.

2. Бейзер Б. Тестирование черного ящика. Технология функционального тестирования программного обеспечения и систем. Пер. с англ. – СПб.: ПИТЕР, 2004.

3. Блэк Р. Ключевые процессы тестирования. Пер. с англ. – М.: ЛОРИ, 2006.

4. Канер С., Фолк Д., Нгуен Е. Тестирование программного обеспечения. Пер. с англ. – М.: ДиаСофт, 2001.

5. Липаев В.В. Экономика производства программных продуктов. – М.: СИНТЕГ, 2011. – 358 с.

6. Липаев В.В. Тестирование компонентов и комплексов программ. Учебник. – М.: СИНТЕГ, 2010.

7. Михеева Е.Н., Сероштан М.В. Управление качеством. – М.: Дашков и К°, 2009. – 708 с.

8. Нестеров А.В. Основы экспертно-исследовательской деятельности. – М.: Изд. дом ВШЭ, 2009. – 163с.

9. Оуен Г. Теория игр. – М.: Едиториал УРРС, 2004. – 216 с.

10. Паращук И.Б., Бобрик И.П. Нечеткие множества в задачах анализа сетей связи. – СПб.: ВУС, 2001. – 80 с.

11. Экономика и право: словарь-справочник. – М.: ВУЗ и школа, 2004. – 1072 с.

12. ISO 25000:2005 ТО. – Руководство для применения новой серии стандартов по качеству программных средств на базе обобщения стандартов ISO 9126:1-4: 2002 и ISO 14598: 1-6:1998-2000.