Тестирование на фабрике: «Чёрный ящик» и короткий цикл тестирования

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

    Китайские рабочие

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

    Сразу пример из личного опыта: на некоторой фабрике для одной из компаний, где я работал, выпустили полсотни серверных материнских плат с одинаковыми прошитыми MAC-адресами сетевых интерфейсов, что привело к интересным эффектам при их работе в одной сети. А так как такой подставы от них никто не ожидал — причина, по которой собранный из этих плат кластер отказывается работать, была обнаружена не сразу, и исследование причин неисправности заняло значительное время.

    Конечно, можно предъявить претензию и отправить обратно на фабрику все «плохие» платы, но во-первых это долго, а во-вторых дорого, и не гарантирует того, что новые присланные платы не будут иметь какого-то другого недостатка. Всех этих проблем можно было бы избежать, если бы уникальность MAC-адресов в том случае кто-то проверил до того, как эти платы попали к заказчику.

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

    Прекратите это безобразие!


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

    Наше решение для обеспечения контроля качества серийной продукции — «чёрный ящик». Устройство, которое максимально неинтерактивно в процессе теста, занимает мало места и требует минимум манипуляций со стороны персонала на производстве. Грубо говоря, коробочку подключают к тестируемой плате, затем через какое-то время загорается зелёная или красная лампочка. Зелёная — всё ок, плату можно упаковывать и отправлять, она исправна. Красная — не ок, с платой есть проблемы, их нужно устранить и затем протестировать ещё раз, и так далее до победного.

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

    Что в чёрном ящике?


    Сам «чёрный ящик» — это компактный компьютер типа Intel NUC или Gigabyte BRIX, подключаемый к сети через Wi-Fi или Ethernet, а также через USB-переходники к тестируемой плате. К компьютеру может быть подключен монитор, на котором отображается ход тестирования, и в случае ошибок — сами ошибки. Вообще подумываем перейти на использование формата Mini-ITX, чтобы можно было шире варьировать конфигурацию.

    На диске компьютера содержится образ на основе Linux с набором тестовых утилит, необходимых для проведения тестирования конкретного типа плат. Для каждого типа готовится свой образ и набор тестовых скриптов. Если говорить конкретно про серверные материнские платы, то помимо образа тестового сервера на компьютере содержится ещё и образ тестового PXE-клиента.

    Материнская плата загружает тестовый образ по PXE. Она подключается по Ethernet к «чёрному ящику» и её BMC получает IP адрес по DHCP. Процесс включения питания материнской платы инициируется через BMC, загружается тестовый образ, выполняются тесты. На экране монитора, подключенного к «чёрному ящику», отображаются результаты теста, затем питание платы автоматически отключается через BMC. После этого работник производства может отключать от тестового стенда плату и тестировать следующую. Так происходит до тех пор, пока нужное количество плат не будет протестировано.

    YADRO Blackbox PXE boot menu

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

    Что и как проверяется?


    Немного про сами тесты. Так как время для тестирования ограничено и производство не наше, то на тесты отводится небольшое время — около 5 минут на плату. Если говорить про тестирование материнских плат, то за это время наше тестовое ПО успевает загрузить на плате операционную систему, проверить уникальность MAC-адресов и других уникальных ID, версии прошивок микроконтроллеров и BMC, значения и работу сенсоров, работу всех слотов расширения, процессорных сокетов, видны ли операционной системе все процессоры и модули памяти и т.д.

    Также запускается короткий цикл нагрузочных тестов для того чтобы «прогреть» плату и оценить по производительности возможные проблемы её сборки. То есть эти тесты — своеобразный smoke test, чтобы быстро увидеть какие-то явные проблемы. Для простоты поддержки и разработки тестов они в своём большинстве делаются на bash и под Linux.

    Результаты тестов для сотрудника фабрики на экране монитора выглядят примерно следующим образом (варьируется от типа тестируемой платы):

    PASSED 34 of 36 tests
    FAILED: CPU2 temp; BMC version


    Это пример для случая тестов с ошибками. Расшифровка ошибок и их описание обычно составляется отдельным файлом, либо распечатывается на бумажке — чтобы сотрудник на фабрике мог понять, что конкретно «не понравилось» тесту.

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

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

    Использование «чёрного ящика» решило для нас сразу несколько задач:

    • удалённый контроль за ходом тестирования плат,
    • контроль объективности оценки результатов и их аутентичности,
    • обеспечение проверки каждой платы, выходящей с производства, до отправки нам,
    • и уменьшение частоты взаимодействия с производством в случае каких-либо неполадок или ошибок.

    Все описанные выше процедуры тестирования выполняют специалисты QC (quality control) на контрагентных фабах. Эти быстрые проверки отфильтровывают наиболее распространённые проблемы. Платы, которые прошли базовый фильтр, попадают к нам — мы их проверяем более детально. После этого есть ещё один этап проверки, уже в составе конечного продукта.

    QA и QC


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

    Специалист QC как правило не знает, да и не обязан знать, как именно работает та или иная плата. Его задача следовать инструкции, и грубо говоря, следить за цветом лампочки на выданном ему стенде тестирования. QC нет разницы что проверять — сложные аппаратные комплексы или яркость свечения светодиодов. Он следует инструкции, и в соответствии с ней получает результат о прохождении или провале проверки качества.

    После проверки силами QC всей партии и получения заказчиком, то есть нами, в дело снова вступает QA, о чём красочно написал asmolenskiy в одной из предыдущих наших статей. При этом отдельные образцы полученной партии тестируются снова, как по отдельности, так и в комплексе с другими платами и устройствами. А вот уже по результатам проверок QA может возникнуть новая ревизия одной или нескольких плат, и всё начинается снова.
    YADRO 110,14
    Transforming the technology
    Поделиться публикацией

    Вакансии компании YADRO

    Комментарии 12
    • 0
      Используете ли микросхемы типа AT24CS04 с уже имеющимся ID?
      • 0
        Нет, отдельно микросхемы типа AT24CS04 мы не используем, нам обычно хватает и других EEPROM, что есть на платах в соответствии с дизайном.
        • 0
          Как вы добиваетесь того, чтобы у контрагентов не было соблазна подменять ID?
          • 0
            Тут всё просто, они не знают о его существовании.
      • 0
        Откуда QA, то есть Вы знаете, что и как нужно тестировать?
        • 0
          Опыт, плюс тесное взаимодействие со схемотехниками и FW-программистами.
          • 0
            Это в каком то нормативном документе расписано? Что то похожее на ТЗ или ТУ…
            Как вы определяете необходимый объем тестирования?
            • +1
              Нет, формализовать это в виде документов общего плана достаточно сложно, да и не имеет большого смысла. Для каждого устройства составляется индивидуальный план тестирования в рамках QA (это коллективная деятельность). С QC немного проще — там основная задача проверить насколько это возможно, что устройство собрано правильно и в нем все корректно прошито.
              • 0
                проверить насколько это возможно, что устройство собрано правильно

                А какими критериями руководствуетесь, чтобы определить объем тестов для выявления брака производства — холодная пайка, резистор или конденсатор с другим номиналом и пр.?
                • 0
                  Упомянутые вещи программным путем выявить практически нереально, поэтому просто проверяется корректность функционирования всего, до чего можно дотянуться — датчики, все интерфейсы, отсутствие ошибок передачи данных везде, где это поддается контролю и прочее. Финал — небольшой прогон нагрузочных тестов (буквально пара-тройка минут).
                  • 0
                    Вышеописанный метод тестирования касается опытной партии или по такому же принципу будет тестироваться серия?
                    • 0
                      По такому методу тестируются компоненты (смонтированные платы) при серийном производстве. Собранные системы прогоняются через гораздо более длительный набор тестов.

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое