-
2009-07-3019:34:00 #156750embed 173.***.179.69 7684
혹시 임베디드 리눅스 프로그램 테스팅하는 기법아시거나 경험있으신분 계시면 대충 좀 알려주시겠습니까? 아주 기초적이고 전형적인 테스트 코드도 좀…
C++로 된 코드입니다.
-
-
duke 64.***.52.41 2009-07-3021:55:24
대충알려드릴 만한 사항이 아닌듯 합니다.
임베디드 엔지니어를 구하셔야, 아주 간단한 것이라도 하실 수 있을 것입니다.TV켜듯이 저쪽 케이블 전원에 꽂고, 이쪽 스위치 누르면 되요..
하는 식의 시험방법이 있다면 좋겠지만 그렇지 못합니다. -
디씨 207.***.167.226 2009-07-3110:07:02
그저 임베디드에 쓸 테스트 코드가 있긴 힘들구요…
코드마다 필요한 테스트 코드를 만드는게 맞는방법이겠죠…
또 유닛 테스팅이냐 시스템 테스팅이냐에 따라 접근 방식도 다르겠구요…
유닛이라면 다른 input, output을 위한 C++ 코드를 만들기도 하구요…
시스템이라면 기존 코드의 변경 혹은 재사용등을 생각할수 있겠죠… -
산경 206.***.6.11 2009-07-3111:54:34
일단 뭘 테스트 하는줄 알아야 도움을 줄수 있지 않을까요-_-;;
HW가 있는건가요? 없으시다면 지금 시뮬레이터같은거 찾는건가요? 등등등..
질문을 잘 모르겠습니다. -
0xd055 64.***.211.64 2009-07-3112:14:45
질문이 자세하지 않아서 많은 분들이 도움드리기가 힘들겁니다. 원글님 질문에서 “임베디드”를 빼고 봐도 뭐라고 답할지 참 막막하지 않겠습니까? 그러니 원하시는 정보를 얻지 못하는 것은 “임베디드”라는 특성 때문이 아니라 질문의 내용이 자세하지 않아서라는 것을 이해하십시오.
일단 위에 디씨님 말씀 맞다나 테스트 플랜을 세우고 테스트 케이스를 만들어야 시작이 되겠지요? 이건 임베디드냐 뭐냐에 상관없이 QA하시는 분들은 잘 아시는 것이니, 혹시 익숙치 않으시면 그쪽 분들에게 물어보세요.
target을 모니터하는 방법은 기계마다 좀 다르겠습니다만, jtag에서 부터 serial console, network, usb 등등 여러가지가 있겠습니다. 가장 기본적인 것은 shell에서 돌리고 debug output을 보는 것이겠죠. stdout도 쓸 수 있겠지만, built-in logging이 있을 수도 있겠고요. 특히 syslog를 안쓰는 환경에서는 개발기간 동안만이라도 internal logging이 있는 것이 좋죠. 이 모든 것들이 타이밍에 영향을 준다는 것은 항상 기억하시고요. 오히려 그 덕에 race나 sync bug를 찾기도 하죠.
-
원글 68.***.243.181 2009-08-0512:21:07
고맙습니다. 여러분 조금 더 자세한 내용은 이렇습니다.
방송용 오디오 시스템에 들어가는 펌웨어입니다. ARM Xscale 아키텍쳐입니다. JTAG으로 플래쉬 메모리에 올립니다. 리눅스를 사용합니다. PERL로 c++ 테스트 프로그램을 제어하는듯한데..간단한 PERL을 이용한 테스트 프로그램 예제가 있을까요? 아주 단순하고 전형적인.. 아니면 test requirement라든가.
도와주셔서 고맙습니다. -
원글 68.***.243.181 2009-08-0512:22:20
유닛테스팅 보다는 시스템 테스팅 위주입니다. 하지만 두개를 구분해서 설명도 좀 해주시겠습니까? 고맙습니다.
-
산경 206.***.6.11 2009-08-0616:26:59
1. C++ 테스트 프로그램이란것과 제어한다는 스크립트는
Target에서 돌아 가는것인가요?2. 그 제어하는 듯한 perl 스크립트를 올려 놓으심 아마 고수님들의 좋은 답변이
있을듯 하네요. (어차피 script이니까 copy and paste)3. 저는 두가지의 구별을 잘 모르지만 제 경험을 바탕으로 하면..
저는 통신 스택중 한 4가지를 개발하고 있습니다. 개발자로 각 스택개발후
저 혼자 유닛테스팅(스택이 제대로 스팩에 맞춰서 돌아 가는지)을 따로 따로 합니다. 이후 system integration후 QA가 시스템 테스팅을 합니다.
(system requirement에 맞는지 conformance testing같은것).유닛테스팅은 개발자의 몫이라고 한다면(너무나 당연한 말이겠지요)
시스템 테스팅은 누구의 몫이 될수도 있습니다.이정도까지가 제가 이해 하는 수준입니다. 다른 고수님들이 대답해 주실겁니다.
-
원글 68.***.243.181 2009-08-0700:52:45
제가 알기론 호스트에서 시스템 테스팅이 이루어지는것 같습니다. 테스트 케이스를 모아서 regression도 돌리는것 같은데… 제가 궁금한건 임베디드 소프트웨어를 테스트하는 테스트케이스는 실제로 어떻게 생겼는가 하는것입니다. 실제로 어떤 작은 C프로그램인지 아니면 Perl 코드에다 임베디드 소프트웨어에 로드할 입력들만 기술한건지..도대체 감도 안오는군요. 전 원래 컴파일러를 전문으로 테스트하던 사람입니다. 컴파일러 테스트를 할때 당연히 순수한 C 어플리케이션을 만들어서 그냥 컴파일하면 되는데 임베디드 소프트웨어는 그자체가 어플리케이션이라서 이런 어플리케이션의 자동화된 테스트 케이스는 어떻게 생긴건지 그게 궁금해서 질문을 드린겁니다. 고맙습니다.
-
산경 206.***.6.11 2009-08-0713:06:48
리눅스라고 말씀하셨는데 (전 사실 마이크로 리눅스)가 임베디드인지는
잘 모르겠습니다.어쨋든 리눅스 커널위에서 (user space)에서 돌아 가는 소프트웨어라면
그냥 그 software가 해야 하는 일들이 있는데 결국 input이 있고
output이 있는거니까요.그걸 test하는 프로그램이 있다고 가정하면 각각 다른 case에 따른
input value들을 test spec에 맞추어 사람이 입력하기 귀찮으니까
perl같은 script로 feed하는것이고 나중에 stats도 collect하는거라고
보이는데요.솔직히 테스트 프로그램은 꼭 C프로그램이어야 할필요 없습니다.
사실 뭐든 꼭 C프로그램이어야 할 필요가 없습니다.도움이 됬을런가요..
-
원글 70.***.49.254 2009-08-0718:14:23
감사합니다. 그렇다면 결국 단순한 Perl코드가 어플리케이션을 실행시키면서 아규먼트로 입력값들을 걸어주는거군요. 그럼 모든 테스트케이스가 perl로 짜여지겠군요. 전 C++ 컴파일러 테스트만 10년정도 해서 모든 테스트가 실제 C++ 프로그램이었거든요. 그래서 헛갈렸었습니다. 다른 응용 프로그램도 그렇게 테스트를 짜는건지..아닌지. 말씀하신대로라면 정말 쉽네요. 그냥 단순 펄코드에 입력값만 걸어주는 구죠….
-