Лучшие практики для тестирования бесконечных входных доменов, таких как парсер или система на основе правил?

Тестирование механизма преобразования текста в речь является довольно сложной задачей. Сам движок анализирует ввод и применяет правила произношения, основанные на фонетическом анализе отдельных слов. Кроме того, существуют списки исключений для правил произношения для улучшения конечного результата. Такие проекты, как проект Гуттенберга, позволяют буквально бросить книгу на проблему; однако проблема остается в том, что я никогда не могу чувствовать себя комфортно из-за проблемы. Я после решения шести девяток (99,9999% доказательство сбоя). Бросок случайного текста в движок ясно показывает, что я только в три девятки, и последующие исправления, похоже, не помогают. Я знаю, что делать в этом случае (пересмотреть механизмы обработки ошибок в движке, чтобы изящно их ухудшить). Общая проблема сохраняется. В любой бесконечной области ввода, как вы доказываете качество программного обеспечения?

2 ответа

Решение

Тест на покрытие. Убедитесь, что вы выполняете все свои ветки и все свои циклы, выполняете весь свой код и убедитесь, что он работает правильно или не работает правильно. В зависимости от того, насколько это важно, попытайтесь достичь 100% покрытия MCDC (измененное покрытие условия / решения); для каждого условия определите все перестановки входных данных, которые учитывают результат, и убедитесь, что вы проверяете каждую перестановку.

Как вы тестируете свой двигатель? Я бы попробовал использовать механизм распознавания речи (например, встроенный в Microsoft) для проверки качества. По объему доказательства я бы использовал текстовый словарь всех слов + тексты из некоторых книг разных авторов.

Другие вопросы по тегам