Как зайти в Даркнет?!
25th January, 01:11
8
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
899
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
952
0
Очень долго работает Update запрос Oracle
27th January, 09:58
916
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
907
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
942
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1727
0
период по дням
25th October, 10:44
3957
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3722
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4614
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4382
0
Помогите пожалуйста решить задачи
24th November, 23:53
6087
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4352
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4400
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Как оценить качество программного продукта
У меня есть продукт, X, который мы поставляем клиенту, C каждый месяц, включая исправления ошибок,улучшения, новые разработки и т. д.) Каждый месяц меня просят ошибиться в качестве продукта.
Для этого мы используем ряд статистических данных, полученных из тестов, которые мы делаем, таких как:
- скорость повторного открытия (количество вновь открытых ошибок/количество исправленных ошибок, проверенных)
- новая частота ошибок (количество новых, включая регрессии, ошибок, найденных во время тестирования/количество исправленных ошибок, проверенных)
- для каждого нового улучшения, новая частота ошибок (количество ошибок, найденных для этого улучшения/количество mandays)
и различные другие цифры.
По причинам, в которые мы не будем вдаваться, невозможно каждый раз все проверять.
Итак, мой вопрос:
Как я могу оценить количество и тип ошибок, которые остаются в моем программном обеспечении? Какие стратегии тестирования я должен следовать, чтобы убедиться, что продукт хорош?
Я знаю, что это немного открытый вопрос, но эй, я также знаю, что нет простых решений.
Спасибо.
Вопрос в том, кто требует от вас предоставить статистику.
Если это нетехнические люди, подделайте статистику. Под "fake" я подразумеваю "provide any inevitably meaningless, but real numbers" из тех, что вы упомянули.
Если это технические люди без фона CS, им следует рассказать о проблеме остановки, которая неразрешима и проще, чем подсчет и классификация оставшихся ошибок.
Существует множество метрик и инструментов, касающихся качества программного обеспечения (покрытие кода, цикломатическая сложность, рекомендации по кодированию и инструменты их применения и т. д.). На практике, что работает, так это автоматизировать как можно больше тестов, заставить людей-тестировщиков сделать как можно больше тестов, которые не были автоматизированы, а затем молиться.
Я не думаю, что вы когда-нибудь сможете реально оценить количество ошибок в вашем приложении. Если вы не используете язык и процесс, которые позволяют формальные доказательства, вы никогда не можете быть действительно уверены. Ваше время, вероятно, лучше потратить на настройку процессов для минимизации ошибок, чем пытаться оценить, сколько их у вас есть.
Одна из самых важных вещей, которые вы можете сделать, - это иметь хорошую команду QA и хорошее отслеживание рабочих элементов. Возможно, вы не сможете проводить полное регрессионное тестирование каждый раз, но если у вас есть список изменений, внесенных в приложение с момента последнего выпуска, то ваши QA человек (или человек) могут сосредоточить свое тестирование на тех частях приложения, которые, как ожидается, будут затронуты.
Еще одна вещь, которая была бы полезна, - это модульные тесты. Чем больше кодовой базы вы охватили, тем больше вы можете быть уверены, что изменения в одной области не повлияли непреднамеренно на другую область. Я нашел это довольно полезным, так как иногда я изменяю что-то и забываю, что это повлияет на другую часть приложения, и юнит-тесты сразу же показали эту проблему. Пройденные модульные тесты не гарантируют, что вы ничего не сломали, но они могут помочь повысить уверенность в том, что изменения, которые вы делаете, работают.
Кроме того, это немного избыточно и очевидно, но убедитесь, что у вас есть хорошее программное обеспечение для отслеживания ошибок. :)
Я думаю, что держать его простым-это лучший способ пойти. Классифицируйте свои ошибки по степени серьезности и устраняйте их в порядке уменьшения степени серьезности.
Таким образом, вы можете передать максимально качественную сборку (количество оставшихся существенных ошибок-это то, как я бы оценивал качество продукта, в отличие от некоторых сложных статистических данных).
Большинство методологий agile довольно четко решают эту дилемму. Вы не можете проверить все. Также вы не можете проверить его бесконечное количество раз, прежде чем выпустить. Таким образом, процедура заключается в том, чтобы полагаться на риск и вероятность ошибки. И риск, и вероятность-это числовые значения. Произведение обоих дает вам число RPN. Если число меньше 15, вы отправляете бета-версию. Если вы можете снизить его до менее чем 10, вы отправляете продукт и нажимаете на ошибку, чтобы она была исправлена в будущем релизе.
Как рассчитать риск ?
Если это крах то его 5 Если это сбой, но вы можете обеспечить работу вокруг, то его число меньше 5. Если ошибка уменьшает функциональность, то его 4
Как рассчитать вероятность ?
можете ли вы воспроизвести его каждый раз, когда вы бежите, его 5. Если работа вокруг предоставленного все еще вызывает его сбой то менее 5
Что ж, мне любопытно узнать, использует ли кто-нибудь еще эту схему и хочет ли он знать свое мнение по этому вопросу.
Как долго длится кусок веревки? В конечном счете, что делает качественный продукт? Ошибки дают некоторое представление о том, что да, но здесь задействованы и многие другие факторы, покрытие юнит-тестов является ключевым фактором в IMO. Но, по моему опыту, главным фактором, влияющим на то, можно ли считать продукт качественным или нет, является хорошее понимание проблемы, которая решается. Часто случается так, что 'problem', для решения которого предназначен продукт, неправильно понимается, и разработчики в конечном итоге изобретают решение проблемы, которую они имеют в своей голове, а не реальную проблему, поэтому 'bugs' создаются. Я являюсь сильным сторонником итеративного развития Agile , таким образом, продукт постоянно работает против 'problem', и продукт не отклоняется далеко от своей цели.
Вопросы, которые я слышал, были о том, как я оцениваю ошибки в моем программном обеспечении? и какие методы я использую, чтобы гарантировать хорошее качество?
Вместо того, чтобы пройти полный курс, Вот несколько подходов.
Как я могу оценить ошибки в моем программном обеспечении?
Начните с истории, вы знаете, сколько вы нашли во время тестирования (надеюсь), и вы знаете, сколько было найдено после этого факта. Вы можете использовать это, чтобы оценить, насколько эффективно вы находите ошибки (DDR - частота обнаружения дефектов-одно из названий для этого). Если вы можете показать, что в течение некоторого последовательного периода времени ваш DDR является последовательным (или улучшается), вы можете дать некоторое представление о качестве выпуска, угадав количество дефектов после выпуска, которые будут обнаружены после выпуска продукта.
Какие методы я использую, чтобы гарантировать хорошее качество?
Анализ первопричин ваших ошибок укажет вам на конкретные компоненты, которые глючат, конкретных разработчиков, которые создают глючный код, тот факт, что отсутствие полных требований приводит к реализации, не соответствующей ожиданиям,и т.д.
Совещания по обзору проектов позволяют быстро определить, что было хорошо, чтобы эти вещи можно было повторить, а что было плохо, и найти способ не делать этого снова.
Надеюсь, это даст вам хороший старт. Удачи Вам!
По-видимому, все единодушны в том, что основное внимание следует уделять модульному тестированию. Отслеживание ошибок является хорошим индикатором качества продукта, но это только обостряет вашу тестовую команду. Если вы используете модульное тестирование, оно дает вам измеримую метрику покрытия кода и обеспечивает регрессионное тестирование, чтобы вы могли быть уверены, что ничего не сломали с прошлого месяца.
Моя компания полагается на тестирование уровня системы / интеграции. Я вижу, что многие дефекты вводятся из-за отсутствия регрессионного тестирования. Я думаю, что "bugs", где реализация требований разработчика отклоняется от видения пользователя, является своего рода отдельной проблемой, которую, как заявили Дэн и рптони, лучше всего решать с помощью Agile методологий.