버그를 재현하기위한 하드웨어 설정이 어렵거나 불가능한 경우 새 코드를 효율적으로 문제 해결 또는 테스트하는 방법은 무엇입니까?


30

저는 중간 규모의 회사 (150 명 직원, ~ 10 명 규모의 엔지니어링 팀)에서 일하며 대부분의 프로젝트에는 반자동 테스트 응용을 위해 실험실 장비 (오실로스코프, 광학 스펙트럼 분석기 등)와의 인터페이스가 포함됩니다. 더 이상 하드웨어 설정을 사용할 수 없거나 더 이상 사용할 수 없기 때문에 새 코드를 효율적으로 문제 해결하거나 테스트 할 수없는 몇 가지 시나리오가 있습니다.

예 1 : 벤치 탑 타입 센서를 사용하여 10-20 개의 "번인 (burn-in)"프로세스를 독립적으로 실행하는 설정 여러 장치 (검색, 연결, 스트리밍 등).

결국 하나의 장치로 정확하게 재현하기가 매우 어려운 버그가 나타났습니다 (최종적으로 장치 펌웨어 및 드라이버에 있음). 그러나 이러한 장치 중 10-20 개가 동시에 사용 중일 때는 "쇼 스토퍼"수준에 도달했습니다. 이것은 여전히 ​​해결되지 않고 진행 중입니다.

예 2 : 핵심 부품으로 고가의 광학 스펙트럼 분석기가 필요한 테스트. 이 장치는 대기업에 의해 인수되어 기본적으로 해체 된 제조업체에 따르면 매우 오래되고 레거시이며, 유일한 문서는 번역이 제대로되지 않은 긴 문서 (정보가없는) 문서에 불과했습니다. 초기 개발 과정에서 장치를 책상에 둘 수 있었지만 이제는 24 시간 연중 무휴 테스트 중에 물리적으로 그리고 일정대로 묶여있었습니다.

버그가 장치와 관련이 있거나 관련이없는 것으로 나타나면 응용 프로그램 외부의 코드를 테스트하고 코드를 맞추거나 맹목적으로 코드를 작성하고 실행 사이에 테스트 시간을 많이 잡아야하는 문제를 겪어야합니다. 프로그램 로직을 사용하려면 OSA 및 나머지 테스트 하드웨어가 있어야합니다.

내 질문은 어떻게해야합니까? 나는 잠재적으로 장치 시뮬레이터를 개발하는 데 시간을 할애 할 수 있지만 개발 견적을 파악하면 아마도 가장 감사 할 것입니다. 모든 문제를 정확하게 재현 할 수는 없으며 동일한 장비를 두 번 사용하는 경우는 거의 없습니다. 나는 단위 테스트에서 더 나아질 수 있습니다 ... 등 ... 나는 또한 문제에 대해 큰 소리로 들릴 수 있으며 다른 사람들이 연구 및 개발을위한 두통뿐만 아니라 일반적으로 농담으로 인식되는 일시적인 지연이 필요하다는 것을 이해하게 할 수 있습니다 제조업에 뛰어들 때.


5
장치 시뮬레이터 (또는 모형 인터페이스)는 편의상 그 자체로 비용을 지불합니다
래칫 괴물

21
@ratchetfreak-의료 시뮬레이션을 하루 종일 수행하는 사람 (의료 기기 시뮬레이터에서 풀 타임으로 일하는 사람)은 다른 사람의 장비에 대한 저 충실도 시뮬레이션조차도 연결, 프로토콜 및 관련된 데이터 유형. OP가 사용하는 테스트 장비가 내가 다루어야 할 장비와 같은 것이라면, 피의 일이 실제로 무엇을하고 있는지 (사양이 말하는 것과는 달리) 알아내는 데 며칠 또는 몇 주가 걸릴 수 있습니다. 따라서 시뮬레이터가 그만한 가치가 있다는 결론은 결코 아닙니다.
Michael Kohne

답변:


35

경영진은 테스트 하드웨어에 대한 전체 액세스 권한이없는 경우 소프트웨어를 개발하고 유지 관리하는 데 시간이 더 오래 걸릴 것으로 알고 있습니다. 추정을 수행 할 때이 점을 고려해야합니다. 소프트웨어를 프로덕션에 배치하기위한 승인 기준 중 일부는 제조를 중단하지 않고 대부분의 상황에서 소프트웨어를 유지할 수있는 방법이 있어야합니다. TDD를 연습하고 있다면, 이것은 자연스럽게 일어날 것입니다.

나는 6 천만 달러의 항공기 용 소프트웨어를 작성했었다. 분명히, 높은 수준의 신뢰성이 요구되며, 모든 개발자에게 책상을 제공하기를 꺼려합니다. 우리는 기본적으로 5 단계의 테스트 환경을 갖추 었으며 각 레벨마다 실제 하드웨어가 더 많고 전체 항공기까지 테스트했습니다. 필자의 소프트웨어 중 95 %는 에뮬레이터 및 단위 테스트를 통해서만 개발 및 디버깅 할 수있을 것으로 예상됩니다. 나머지 기능의 95 %는 다음 레벨에서 계속 작동 할 수 있습니다.

비슷한 수준의 테스트 환경을 설정하십시오. 실제 하드웨어에 대한 액세스가 필요하지는 않지만 하드웨어를 설정하지 않고 소프트웨어의 GUI에서 작업 할 수 없도록 설정 한 경우 값 비싼 리소스에 귀중한 시간을 낭비하게됩니다 아키텍처에 몇 가지 커플 링 문제가 있다고 언급하십시오. 다른 개발자가 당신과 같은 문제를 가지고 있다고 생각하십시오. 하드웨어 공급 업체에 이미 에뮬레이터 나 다른 테스트 리소스가 있는지 물어볼 것입니다.

하드웨어에 대한 액세스 권한이 제한적인 경우에도 사고 방식을 약간 변경해야합니다. 일반적인 직렬 방식으로 응용 프로그램을 디버깅하려고 시도하지 않고 정보를 최대한 빨리 수집 할 목적으로 코드를 작성해야하는 경우가 종종 있습니다.

예를 들어, 버그가있을 수 있으며 10 가지 가능한 원인을 생각할 수 있습니다. 작업자가 휴식을 취하는 동안 15 분만 기계에 탑승 할 수있는 경우 버그를 유발 하는 짧고 자체 포함 된 올바른 (컴파일 가능) 예제 를 작성하고 해당 SSCCE를 사용하여 이론을 테스트하는 10 가지 자동 테스트를 작성하십시오. 많은 데이터를 기록합니다. 나중에 책상으로 돌아와 다음 시도를 위해 데이터를 조사해야하는 한 오래 걸릴 수 있습니다. 아이디어는 하드웨어로 제한된 시간의 유용성을 극대화하는 것입니다.


이 답변을 가장 완벽하게 받아들였으며, "경영진의 인식 변경"과 "관행 변경"의 균형이 적절하다고 생각합니다. 더 나은 수준의 디커플링과 일부 수준의 하드웨어 시뮬레이터 에 대한 노력을 기울이는 것이 가치가 있다고 생각합니다. 또한 디버깅하는 동안 많은 데이터를 캡처하는 빠른 기능을 갖춘 빠른 ​​테스트에서 일부 압박에 대한 팁을 특히 좋아합니다. 감사합니다.
plast1k

14
"관리가 이해합니다"
PlasmaHH

1
"모든 개발자에게 자신의 책상을 제공하는 것을 꺼려합니다." 아이러니하게도, 각 개발자에게 6 천만 달러 규모의 비행기를 제공하는 것이 항공사 재해의 총 누적 비용보다 저렴하다는 것을 증명할 수있을 정도로 수치를 구부릴 수 있습니다!
Mr. JavaScript

15

해결하지 않은 문제를 해결하려고합니다.

경영진은 장비에 대한 액세스 우선 순위를 정해야합니다. 그것은 당신이 더 많은 액세스로 끝나는 것을 의미 할 수도 있지만, 더 적게 끝내는 것을 의미 할 수도 있습니다.

객관적인 형식으로 도전 과제를 관리 팀에 제시하고 지침을 요청하십시오. 액세스 권한이 필요한 다른 사람들과 공동 작업을하면 프레젠테이션이 훨씬 강력 해져서 모두 동시에 사례를 발표 할 수 있습니다.

여기에서 회사 (관리자)는 누가 언제 액세스 할 수 있는지 우선 순위를 정해야합니다. 자원의 가용성이 부족하여 비즈니스 개발에 영향을 미치기 때문에 결정해야하는 것은 비즈니스 결정입니다.


4
경영진과 대화하는 데 도움이 될 수있는 한 가지 일은 장비 액세스에 대한 일정 (또는 이정표)을 나타내는 것입니다. 하드웨어가 없어도 할 수있는 일이 많으며 추정치가 사용자에게 제공 할 때의 추정치가 확실하다면 관리자는 모든 지식을 바탕으로 의사 결정을 내릴 수 있습니다.
Michael Kohne

4

당신은 효과적으로 장님을 코딩하고 있습니다.

경영진이 테스트 장치에 대한 비용을 지불하지 않으면 버그가 발생하거나 실제 장치를 사용하는 경우보다 개발 시간이 오래 걸릴 수 있습니다.

장치의 비용을 "개발"주기에 완전히 할당 할 필요는 없습니다. 아마도 프로덕션 용도로 또는 백업으로 교체 될 수 있습니다. 다른 곳에서도 중고품을 재판매 할 수 있습니까?

시간과 비용으로 버그 수정 단계를 시도하고 비용을 지불하고 팀 / 회사에 전체 비용을 표시하십시오.


4

숫자 나 최소한 찬반 양론이있을 때 상사와 논쟁하는 것이 훨씬 쉬우므로 제 제안은 비용 대 이익 분석을 시도하는 것입니다. 대략적인 아이디어는 다음과 같습니다.

  • 장치 시뮬레이터를 작성하는 데 얼마나 많은 개발 노력이 필요합니까? (특히 하드웨어에 예기치 않은 문제가있는 경우 장치 시뮬레이터가 원래 하드웨어를 100 % 교체 할 수 없습니다.)

  • 그러한 도구없이 얼마나 많은 테스트 / 디버깅 노력을 기대하십니까? 테스트 목적으로 하드웨어를 차단해야하므로 실험실 직원의 비용을 포함하십시오. 버그로 인해 시스템을 사용할 수없고 근본 원인을 찾는 데 문제가있는 시간에 대한 비용도 포함하십시오.

  • 테스트를위한 추가 하드웨어 비용은 얼마입니까?

  • 테스트 목적으로 하드웨어를 차단해야하는 시간은 얼마나됩니까?

물론, 현실은 그렇게 간단하지 않을 수도 있고,이 방정식에는 알 수없는 변수가 많이 있지만, 추정을하고 확실하지 않은 곳에서는 다른 사람들에게 환경을 요청하십시오.

결과를 경영진에게 제시하고 대안을 논의한 다음 결정하게하십시오.


나는 당신이 여기에 있다고 생각하지 않는다고 생각한다 . 특히 하드웨어가 예상치 못한 단점이있을 때 장치 시뮬레이터 원래 하드웨어를 100 % 대체
Rémi

@ Rémi : 어쩌면 "거의 드물다"는 평범한 영어 단어의 일반적인 순서가 아닌가? FWIW, 나는 대답을 주셔서 감사합니다.
Doc Brown

나는 영어를 모국어로하지 않지만 이상하게 읽습니다. 감사합니다
Rémi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.