KR20080050331A - 디버그 정보 수집 방법 및 디버그 정보 수집 시스템 - Google Patents

디버그 정보 수집 방법 및 디버그 정보 수집 시스템 Download PDF

Info

Publication number
KR20080050331A
KR20080050331A KR1020070122825A KR20070122825A KR20080050331A KR 20080050331 A KR20080050331 A KR 20080050331A KR 1020070122825 A KR1020070122825 A KR 1020070122825A KR 20070122825 A KR20070122825 A KR 20070122825A KR 20080050331 A KR20080050331 A KR 20080050331A
Authority
KR
South Korea
Prior art keywords
probe
software
information
debug information
probes
Prior art date
Application number
KR1020070122825A
Other languages
English (en)
Other versions
KR100990777B1 (ko
Inventor
신이찌로 가와사끼
도오루 노지리
Original Assignee
가부시키가이샤 히타치세이사쿠쇼
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 가부시키가이샤 히타치세이사쿠쇼 filed Critical 가부시키가이샤 히타치세이사쿠쇼
Publication of KR20080050331A publication Critical patent/KR20080050331A/ko
Application granted granted Critical
Publication of KR100990777B1 publication Critical patent/KR100990777B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

소프트웨어 배포 장치(102)에서, 바이너리 해석부(122)는 소프트웨어에 프로브를 삽입 가능한 삽입 위치의 전체 집합을 구한다. 바이너리 변경부(125)는, 소프트웨어에 삽입하는 프로브의 삽입 위치의 모집단과, 디바이스(104)마다 삽입하는 프로브의 삽입수를 결정하고, 모집단으로부터 상기 삽입수만큼 프로브의 삽입 위치를 선택하여 소프트웨어에 삽입한다. 그 때, 프로브 정보(123), 실행 장치 정보(124), 디버그 정보(132)를 참조한다. 소프트웨어 배포부(129)는 프로브가 삽입된 소프트웨어를 디바이스(104)에 배포한다. 이에 의해, 디바이스측의 부담과 소프트웨어 개발자측의 부담을 동시에 경감하고, 또한 디버그 정보를 치우침 없이 균일하게 취득할 수 있는 디버그 정보 수집 방법을 제공한다.
소프트웨어 배포 장치, 프로브, 삽입 위치, 디버그 정보, 소프트웨어

Description

디버그 정보 수집 방법 및 디버그 정보 수집 시스템{DEBUG INFORMATION COLLECTING METHOD AND DEBUG INFORMATION COLLECTING SYSTEM}
본 발명은 소프트웨어의 품질 향상을 위해서, 특히 네트워크에 접속된 많은 디바이스에 대하여 배포되어, 실행되는 소프트웨어의 디버그 정보 수집 방법에 관한 것이다.
정보 가전, 휴대 전화 등, 소위 내장 기기로 불리는 정보 처리 기기에서, 소프트웨어 규모가 증대하고 있다. 네트워크 대응을 위한 기능 추가, 유저 요구의 증대 등에 의해, 소프트웨어를 이용하여 단기간에 많은 새 기능을 실현하는 것이 요구되고 있기 때문이다. 이와 같은 소프트웨어 규모의 증대에 수반하여, 소프트웨어의 품질 확보가 요구되고 있다. 그러나, 품질 확보에 충당되는 시간의 확보가 어려워, 제품을 출하 후에 소프트웨어 갱신 등의 대응도 취해지고 있다.
소프트웨어의 품질을 확보하는 방법으로서, 소프트웨어에 실행 경과를 조사하기 위한 프로브를 삽입하여, 디버그 정보를 수집하는 방법이 있다. 예를 들면, 소프트웨어의 실행 부분과 비실행 부분을 조사하는 커버리지, 개발자가 지정하는 조건문의 진위값을 조사하는 어서션 등의 방법이다. 그러나, 계산기 자원이 부족 한 내장 기기에서는, 필요로 하는 기억 영역의 증가나 성능 오버헤드의 요구를 받아들일 수 없어, 다수의 프로브를 삽입할 수 없다.
이 문제에 대하여, 특허 문헌 1에서는,프로브를 삽입하는 범위를 인간이 지정하고, 지정된 범위에 자동적으로 프로브를 삽입하는 방법을 분명하게 하고 있다. 이 방법에서는, 삽입하는 프로브를 일부로 한정함으로써 메모리 영역과 실행 시간의 문제를 회피한다. 동시에 수집되는 정보도 한정되지만, 프로브 삽입 범위의 변경과 디버그 정보 수집을 반복함으로써, 필요한 양의 디버그 정보를 수집할 수 있다.
또한, 비특허 문헌 1에서는,프로브를 이용하여 취득한 디버그 정보를, 네트워크를 통하여 수집하는 방법을 분명하게 하고 있다. 이 방법은 특허 문헌 1의 방법과는 달리, 삽입하는 프로브를 한정하지 않고, 모든 프로브를 소프트웨어에 삽입한다. 그 대신, 소프트웨어 실행 시에 난수를 이용하여 정보를 수집하는 프로브를 일부로 한정함으로써, 수집하는 정보량을 줄이고, 동시에 정보 수집에 의한 실행 시간의 증가를 회피하고 있다. 아울러 수집한 정보를 통계적으로 해석함으로써, 장해의 원인(버그의 개소)을 추정하는 방법을 분명하게 하고 있다.
[특허 문헌 1] 일본 특개평 6-161825호 공보
[비특허 문헌 1] Ben Liblit, Alex Aiken, Alice X.Zheng and Michael I.Jordan. Bug Isolation via Remote Program Sampling. PLDI'03, June 9-11, 2003
특허 문헌 1에서는 프로브의 삽입 범위가 한정되어 있고, 메모리 자원 및 실행 시간의 오버헤드는 한정되어 있어, 개발자가 프로브의 삽입 범위를 지정하기 위해서, 다양한 디바이스의 특성이나 테스트 조건에 따른 섬세하고 치밀한 정보 수집이 가능하다. 그러나, 다수의 디바이스로부터 반복하여 정보를 수집하기 위해서는 큰 시간이 걸린다고 하는 과제가 있다.
또한, 비특허 문헌 1에서는 난수를 이용하여 정보를 취득하는 프로브를 한정하고 있기 때문에, 실행 시간의 오버헤드는 한정되어 있어, 개발자가 프로브를 지정하는 수고도 불필요해진다. 그러나, 모든 프로브를 미리 프로그램에 삽입하고 있기 때문에, 메모리 자원에 주어지는 오버헤드가 크다고 하는 과제가 있다.
즉, 이들 문헌의 기술에서는, 다수 또한 다양한 디바이스로부터 디버그 정보를 수집할 때의 메모리 자원 및 프로브 실행 시간의 삭감과, 개발자에 의한 정보 수집의 수고의 삭감이 양립되어 있지 않다고 하는 과제가 있다. 또한, 만약 상기 양 문헌의 기술을 조합한다고 하여도, 프로브로부터 수집하는 디버그 정보에 치우침이 발생하는 것은 피할 수 없고, 따라서 신속하고 효율적인 소프트웨어 개발의 방해로 된다고 하는 과제가 남는다.
본 발명의 목적은, 디바이스측의 부담과 개발자측의 부담을 동시에 경감하고, 또한 디버그 정보를 치우침없이 균일하게 취득할 수 있는 디버그 정보 수집 방법을 제공하는 것이다.
본 발명은, 디버그 정보를 수집하기 위해 소프트웨어에 프로브를 삽입하여 복수의 디바이스에 배포하고, 디바이스에서 소프트웨어를 실행함으로써 얻어지는 디버그 정보를 수집하는 디버그 정보 수집 방법으로서, 소프트웨어에 프로브를 삽입 가능한 삽입 위치의 전체 집합을 구하고, 전체 집합으로부터 부분 집합을 취출하여 소프트웨어에 삽입하는 프로브의 삽입 위치의 모집단을 결정하고, 디바이스마다 삽입하는 프로브의 삽입수를 결정하고, 모집단으로부터 상기 삽입수만큼 프로브의 삽입 위치를 선택하여 소프트웨어에 삽입하고, 프로브의 삽입된 소프트웨어를 디바이스에 배포한다.
상기 디바이스에 삽입하는 프로브의 삽입수는, 디바이스의 기억 용량 또는 CPU 성능에 기초하여, 디바이스마다 삽입수를 결정하고, 상기 모집단으로부터 상기 삽입수만큼 프로브의 삽입 위치를 난수를 이용하여 선택하여 소프트웨어에 삽입한다.
상기 프로브의 삽입 위치의 모집단은, 과거에 배포한 소프트웨어에 삽입한 프로브의 삽입 횟수를 참조하여, 삽입 횟수가 적은 삽입 위치의 부분 집합으로부터 결정한다.
상기 프로브의 삽입 위치의 모집단은, 과거에 배포한 소프트웨어에 삽입한 프로브로부터 수집한 디버그 정보를 참조하여, 디버그 정보로부터 각 프로브의 실행 횟수를 구하고, 실행 횟수가 적은 프로브 삽입 위치의 부분 집합으로부터 결정한다.
상기 프로브의 삽입 위치의 모집단은, 상기 디버그 정보로부터 각 프로브의 실행 횟수를 구하고, 그 중에서 장해 발생 시에 실행된 실행 횟수가 적은 프로브 삽입 위치의 부분 집합으로부터 결정한다.
본 발명에 따르면, 디바이스측의 부담과 소프트웨어 개발자측의 부담을 경감하고, 배포한 소프트웨어의 장해 원인 해석의 신속화를 도모할 수 있다.
이하, 본 발명의 실시 형태를, 도면을 이용하여 설명한다.
도 1은, 본 발명에 따른 소프트웨어 배포 시스템의 전체 구성을 도시하는 도면이다. 본 시스템은, 소프트웨어 개발 장치(101), 소프트웨어 배포 장치(102), 디버그 정보 수집 장치(103), 및 복수의 실행 장치(디바이스)(104, 105, 106) 등으로 구성된다. 우선, 각 장치의 관련에 대해서 설명한다.
소프트웨어 개발자는, 소프트웨어 개발 장치(101)를 이용하여 소프트웨어를 개발하고, 실행 가능한 바이너리를 작성한다. 제작된 바이너리는, 인트라넷 등을 통해서 소프트웨어 배포 장치(102)에 송부된다. 소프트웨어 배포 장치(102)는 바이너리에 대하여 프로브를 삽입한 후, 인터넷 등을 경유하여, 그 바이너리를 실행 장치(104, 105, 106) 등에 배포한다. 각 실행 장치는 배포된 바이너리를 실행하고, 실행 장치의 소유자 등에 서비스를 제공한다. 동시에 프로브에 의해 얻어지는 디버그 정보를 수집하고, 이것을 디버그 정보 수집 장치(103)에 송부한다. 디버그 정보 수집 장치(103)는, 각 실행 장치로부터 송부되어 오는 디버그 정보를 축적하고, 통계적인 해석 등에 의해 장해 원인을 추정하기 위한 정보를 생성한다. 이 정보는 소프트웨어 개발 장치(101) 등을 통하여, 소프트웨어 개발자에게 제공된다. 다음으로 각 장치의 내부 구성에 대해서 설명한다.
소프트웨어 개발 장치(101)는, 소스 코드(111), 바이너리(112) 등의 데이터를 유지하고, 소스 코드 편집 처리부(113), 컴파일 처리부(114) 등의 기능을 갖는다. 소스 코드 편집 처리부(113)는, 소프트웨어 개발자에 의한 소스 코드(111)의 작성 작업을 지원한다. 컴파일 처리부(114)는, 소스 코드(111)를 바이너리(112)로 변환한다. 바이너리(112)는, 개발자의 판단에 따라서 소프트웨어 배포 장치(102)에 송부된다.
소프트웨어 배포 장치(102)는, 소프트웨어 개발 장치(101)로부터 송부된 바이너리(112)를 바이너리(121)로서 유지한다. 바이너리 해석부(122)는 바이너리(121)를 해석하여, 프로브를 삽입 가능한 개소를 추출한다. 추출된 프로브 삽입 개소는, 프로브 정보(123)에 유지된다. 또한, 소프트웨어 배포 대상으로 되는 실행 장치(디바이스)의 리스트를, 실행 장치 정보(124)에 유지한다. 바이너리 변경부(125)는 바이너리(121)에 프로브를 삽입하는데, 그 때, 실행 장치 정보(124), 프로브 정보(123), 디버그 정보(132) 등을 참조하여 프로브의 수와 삽입 위치를 결정한다. 바이너리 변경부(125)는, 삽입 프로브 선택부(126)나, 프로브 삽입부(127) 등의 기능 모듈로 구성된다. 삽입이 완료된 바이너리는, 프로브 삽입 완료 바이너리(128)로 되어 유지된다. 소프트웨어 배포부(129)는, 프로브 삽입 완료 바이너리(128)를, 실행 장치(104) 등에 송신한다.
실행 장치(104)는, 소프트웨어 배포 장치(102)에 소프트웨어(바이너리)의 배포를 요구하고, 소프트웨어 수신부(143)는 프로브 삽입 완료 바이너리(141)를 수신 하여, 프로브 삽입 완료 바이너리(141)로서 유지한다. 유저에 의한 기동 등의 트리거에 따라서 프로브 삽입 완료 바이너리(141)를 실행하고, 실행의 결과로서 프로브 수집 정보(142)를 취득한다. 이 때 취득할 수 있는 프로브 수집 정보는, 소프트웨어 배포 장치(102)에서 삽입된 프로브에 한정되며, 삽입되지 않았던 프로브에 대해서는 정보가 얻어지지 않는 것은 당연하다. 취득한 프로브 수집 정보(142)는, 프로브 수집 정보 송신부(144)에 의해, 디버그 정보 수집 장치(103)에 송부된다.
디버그 정보 수집 장치(103)는, 프로브 수집 정보 수신부(133)를 통하여, 실행 장치(104) 등으로부터 프로브 수집 정보(142)를 수신하여, 디버그 정보(132)로서 저장한다. 또한, 장해 원인 개소 추정부(131)는, 디버그 정보(132)를 이용하여 소프트웨어 실행 시에 발생한 장해의 원인에 관계되는 프로브를 추정하고, 원인의 가능성이 높은 프로브의 리스트를 작성한다. 이 리스트는 소프트웨어 개발자에게 제공되고, 이것에 기초하여 소프트웨어 장해의 원인을 해석한다. 이 해석에는 일정량의 데이터가 필요하다. 각 실행 장치에서 충분한 횟수 소프트웨어가 실행되어 충분한 양의 데이터가 디버그 정보(132)에 축적될 때까지, 일정한 시간이 걸린다.
본 시스템의 구성에서는, 소프트웨어 배포 장치(102)의 바이너리 변경부(125)는, 삽입 프로브 선택부(126)와 프로브 삽입부(127)를 갖는다. 삽입 프로브 선택부(126), 실행 장치 정보(124), 프로브 정보(123), 디버그 정보(132) 등을 참조하여 바이너리(121)에 삽입하는 프로브가 치우침없이 균일하게 되도록 선택한다. 또한 프로브 삽입부(127)는, 각 실행 장치(디바이스)의 성능에 따라서 프로브의 삽입 위치 등을 결정하는 것에도 특징이 있다.
도 2는, 소프트웨어 배포 장치(102)가 유지하는 프로브 정보(123)의 일례를 도시하는 도면이다. 여기에는, 대상으로 하는 소프트웨어로서 메일 송수신용의 프로그램을 상정한다. 삽입하는 각 프로브에는, 이들을 식별하기 위해 프로브 ID(201)를 할당하고, 대상 모듈(202)은 각 프로브가 어느 모듈에 속하는지를 나타낸다. 여기에서는 예로서 MailReadUI, MailEditUI, CommonLogger 등의 명칭의 모듈에 속한다. 프로브 종별(203)은, 함수의 되돌림값을 관측하는 「되돌림값」과, 포인터 등의 변수에 대입된 값을 관측하는 「대입값」의 2개를 예로 들고 있다. 이 밖에, 소프트웨어 개발자가 삽입하는 조건문의 진위값을 관측하는 「어서션」, 분기 개소의 분기 방향을 관측하는 「커버리지」등, 별종의 프로브이어도 된다.
대상 클래스(204), 대상 메소드(205), 삽입 위치(206)는, 프로브의 삽입 개소를 특정하기 위한 정보이다. 여기서는 Java(등록상표) 등의 프로그램 형식을 상정하고, 클래스와 메소드에 의해 명령열을 특정하고, 삽입 위치에 의해 명령열 선두로부터의 오프셋 바이트수를 특정하는 예를 나타내고 있지만, 다른 프로그램 형식이어도 된다. 소스 코드행(207)은, 각 프로브가 소스 코드(111)에서 어느 위치에 대응하고 있는지를 나타내는 정보이다. 장해와의 관련이 추정되는 프로브가 결정되면, 소프트웨어 개발자는, 프로브에 대응하는 소스 코드행(207)의 주변을 우선하여 장해 원인을 조사할 수 있다. 또한, 본 실시예에서는,프로브 내에서 취득한 값을 그대로 관측 결과로 하는 것이 아니라, 취득한 값과 특정한 값을 비교한 결과를 관측 결과로 하였다. 비교 대상(208)은, 비교하는 특정한 값, 혹은 변수를 나타내고 있다. 삽입 횟수(209)는, 각 프로브가 몇 회 삽입되었는지를 나타내는 값 이다. 하나의 실행 장치에 소프트웨어를 배포할 때, 소프트웨어에 일정 개수의 프로브군이 삽입되므로, 삽입된 프로브에 대응하는 「삽입 횟수」에 1을 가산한다.
프로브 ID=1의 예에 대해서 데이터의 내용을 설명하면,MailReadUI 모듈에서의 되돌림값형의 프로브로서, MailList 클래스, update 메소드의 124바이트째에 삽입되어 있다. 또한, 이 프로브는, 관측 데이터를 0과 비교한 결과를 돌려주고, 지금까지 배포 바이너리에 삽입된 횟수는 3회이다.
도 3은, 소프트웨어 배포 장치(102)가 유지하는 실행 장치 정보(124)의 일례를 도시하는 도면이다. 장치 ID(301)는, 출하 시에 각 실행 장치에 할당되는 제조 번호를 ID로 하여, 일의로 식별할 수 있는 것이다. 실행 장치의 종별(302)은, H9000이라고 하는 구형과 H9010이라고 하는 신형의 2기종으로 하였다. 각각의 기종을 비교하면, CPU 종별(303)은 「A」와 「B」, CPU 주파수(304)는 「200」㎒와 「233」㎒와 같이 성능이 상이하다. 또한, 내장 기기는 메모리 자원에 관한 제약이 있기 때문에, 배포 가능한 소프트웨어의 사이즈에도 상한을 설정하는 경우가 많다. 여기서는, 소프트웨어 배포 장치(102)로부터 수신할 수 있는 소프트웨어의 사이즈 제한(305)을, H9000에 대해서는 32k바이트, H9010에 대해서는 64k바이트로 서로 다른 값을 갖는다. 그 결과, 삽입 가능한 프로브수의 상한(306)은, 각각 12개, 14개로 설정되어 있다.
도 4는, 디버그 정보 수집 장치(103)가 유지하는 디버그 정보(132)의 일례를 도시하는 도면이다. 본 데이터는, 계측 조건(400)과 계측 결과(410)로 나누어져 있다. 계측 조건(400)은, 프로브 ID(401), 프로브 종별(402), 실행 장치 종 별(403)로 이루어진다. 여기서는,프로브 ID=1에 의해 특정되는 프로브에 대해서, 4회의 계측이 행해진 것을 나타내고 있다. 이 프로브의 ID는 「1」, 종별은 「되돌림값」이며, H9000에 의한 계측이 2회, H9010에 의한 계측도 2회 실시되어 있다.
계측 결과(410)는, 종료 상태(411)와, 비교 결과의 횟수(412)로 구성되어 있다. 종료 상태(411)는, 각 프로브로부터 얻어지는 정보와 아울러, 수집되는 소프트웨어 종료 시의 상태를 나타내는 정보이다. 여기서는,에러 없음으로 종료된 「정상 종료」, 크래시 등의 에러에 의해 종료된 「에러」의 2상태를 식별하는 데이터로 하고 있다. 비교 결과의 횟수(412)는, 각 프로브에서의 비교의 결과를 「마이너스:<」 「플러스:>」 「동일:=」로 나누고, 각각의 횟수를 카운트한 숫자이다. 예를 들면 프로브 ID=1에서의 최초의 데이터는, 정상 종료하였을 때에, 이 프로브에서 2회의 계측이 행해지고, 비교 결과가 플러스일 때가 1회, 동일하였을 때가 1회 있었던 것을 나타내고 있다.
이들 디버그 정보(132)는, 다음에 소프트웨어를 배포할 때에 디버그 정보를 균일, 효율적으로 수집할 수 있도록, 삽입할 프로브를 선택하기 위해 이용한다.
도 5는, 본 발명에 따른 디버그 정보 수집 처리의 전체의 플로우차트의 일례를 도시하는 도면이다. 각 처리 스텝에 대해서 순서대로 설명한다.
스텝 S501: 소프트웨어 개발 장치(101)에서 작성한 바이너리를 배포하기 위해, 소프트웨어 배포 장치(102)에 바이너리를 카피한다.
스텝 S502: 바이너리 해석부(122)는 배포 대상의 바이너리(121)를 해석하고, 삽입 가능한 프로브를 리스트 업한다. 예를 들면 메소드의 호출 개소를 추출하고, 이것을 메소드의 「되돌림값」을 관측하는 프로브의 삽입 개소로 한다. 추출한 프로브 삽입 개소를, 프로브 정보(123)에 추가한다. 이와 같이 하여, 배포 대상으로 되는 바이너리 전체에 대해서 프로브 정보(123)를 작성한다.
스텝 S503: 소프트웨어의 배포 대상으로 되는 실행 장치(디바이스)를 1개 선택한다. 이 경우, 소프트웨어 배포 장치(102)가, 실행 장치 정보(124)에 기초하여 자주적으로 배포처의 실행 장치를 선택하거나, 혹은 실행 장치(104)로부터 소프트웨어의 배포 요구를 받고, 이에 따라서 배포하는 형태이어도 된다.
스텝 S504: 바이너리 변경부(125)는, 선택한 배포 대상의 실행 장치용으로, 삽입할 프로브를 선택한다. 그 때, 실행 장치에 따라서 프로브의 수를 결정하고, 또한 삽입 이력에 따라서 삽입할 프로브의 모집단을 결정한다. 이들의 상세는 후술한다.
스텝 S505: 선택한 프로브를 바이너리(121)에 삽입하고, 프로브 삽입 완료 바이너리(128)를 생성한다.
스텝 S506: 소프트웨어 배포부(129)는, 프로브 삽입 완료 바이너리(128)를 배포 대상의 실행 장치(104)에 송신한다.
스텝 S507: 실행 장치(104)는, 수신한 소프트웨어를 실행한다.
스텝 S508: 소프트웨어 실행의 결과로서 프로브 수집 정보(142)를 취득하고, 디버그 정보 수집 장치(103)에 송신한다.
스텝 S509: 디버그 정보 수집 장치(103)는, 취득한 프로브 수집 정보(142)를 디버그 정보(132)로서 저장한다.
스텝 S510: 장해 원인 개소 추정부(131)는, 실행 시에 발생한 장해에 관계되는 프로브를 추정하고, 프로브의 리스트를 작성한다.
스텝 S511: 소프트웨어 개발자는 프로브 리스트에 기초하여 소프트웨어 장해의 원인을 해석한다.
도 6은, 상기 도 5에서의 삽입 프로브 선택 처리(스텝 S504)의 상세한 플로우차트도이다.
스텝 S601: 바이너리 변경부(125)는, 실행 장치 정보(124)를 참조하여, 배포 대상의 실행 장치에 관한 정보를 취득한다. 취득하는 정보는, 도 3에 도시한 장치 종별, CPU 종별, CPU 주파수, 배포 소프트웨어 사이즈 제한, 프로브수 상한 등이다.
스텝 S602: 취득한 실행 장치 정보(124)에 기초하여 삽입할 프로브수를 결정한다. 프로브수는, 배포 대상의 실행 장치의 성능에 의해 적절하게 결정한다. 또한, 동일한 실행 장치에 반복하여 배포하는 경우에는, 배포 시마다 상이해도 된다.
여기서, 실행 장치에 따라서 프로브수를 결정하는 몇 개의 구체적 방법을 설명한다.
(1) 배포 가능한 소프트웨어 사이즈 제한에 기초하여 결정하는 방법
삽입하는 프로브의 개수를 늘리면, 바이너리 사이즈는 증가한다. 따라서, 바이너리 사이즈가 제한값을 초과하지 않는 최대의 프로브수(프로브수의 상한값(306))를, 삽입 개수로 하는 방법이다. 예를 들면, 프로브의 삽입 개수가 바이너리 사이즈의 증가에 비례 관계를 정하는 경우, 삽입 전의 바이너리 사이즈를 Xo, 전체 프로브 N개를 삽입한 바이너리의 사이즈를 Xp, 배포 가능한 바이너리 사이즈의 상한을 M으로 하였을 때, 이하의 식을 만족하는 최대의 n을 프로브수로 한다.
n(Xp-Xo)/N+Xo<M
이에 의해, 각 실행 장치의 기억 영역을 최대한으로 활용한 디버그 정보의 수집이 가능하게 된다.
(2) CPU의 종별이나 동작 주파수에 기초하여 결정하는 방법
CPU의 종별에 따라서, 미리 정해 둔 상수를 프로브수로 한다. 또는, 동작 주파수와 프로브수의 비례 관계를 정해 두고, 프로브수를 정한다. 이에 의해, 연산 능력이 높은 CPU를 갖고, 처리 시간에 여유가 많은 실행 장치에서는 다수의 프로브를 이용하여 측정한다. 연산 능력이 낮은 CPU를 갖고, 처리 시간에 여유가 적은 실행 장치에서는, 소수의 프로브로 한정하여 측정한다. 그 결과, 각 실행 장치의 동작 능력에 맞춘 디버그 정보의 수집이 가능하게 된다. 또한, 측정하는 프로브수를 실행 장치측에서 한정하는 방법을 병용하여도 된다. 이 경우에는, 실행 장치마다 측정 프로브수를 다르게 하기 때문에, 소프트웨어 배포 장치(102)로부터 실행 장치에 측정 프로브수를 전달하고, 전달한 수의 프로브로부터만 정보를 취득함으로써, CPU 성능에 따른 정보 수집을 실현할 수 있다.
(3) 그 밖의 프로브수 결정 방법
유저가 소프트웨어를 사용하기 위해서 체결하는 계약의 내용에 기초하는 결정 방법, GPS 측위에 의한 디바이스의 위치 정보에 기초하는 결정 방법, 네트워크 대역이나 네트워크 접속이 항시인지의 여부에 기초하는 결정 방법 등도 가능하다. 또한, 전술한 결정 방법을 포함시켜, 복수의 결정 방법을 조합해도 된다. 각 결정 방법으로부터 산출되는 프로브수 중, 최소의 프로브수를 선택하는 결정 방법이어도 된다.
스텝 S603: 바이너리 변경부(125)는, 또한 프로브 정보(123), 디버그 정보(132)를 참조하여, 프로브 삽입 개소의 전체 집합에 관한 정보를 취득한다.
스텝 S604: 삽입할 프로브를 선택할 때에, 선택 대상으로 되는 프로브의 모집단을 결정한다. 이 모집단은, 프로브 정보(123)로부터 취득한 프로브 전체 집합의 부분 집합이다. 즉 선택하는 프로브는 전체 집합으로부터가 아니라, 모집단으로부터 결정한다.
여기서, 프로브의 삽입 이력으로부터 모집단을 결정하는 몇 개의 구체적 방법을 설명한다.
(4) 각 프로브의 삽입 횟수에 따라서 결정하는 방법
프로브 정보(123)로부터 얻어지는 삽입 횟수의 최대값을 갖는 프로브를 제외하고, 그 이외의 프로브를 모집단으로 한다. 바꿔 말하면, 삽입 횟수가 적은 프로브로 모집단을 구성한다. 예를 들면, 도 2의 경우에는 ID=2는 삽입 횟수가 최대(4회)이므로 모집단으로부터 제외한다. 이 조작에 의해 삽입 횟수가 적은 프로브가 선택되고, 각 프로브의 삽입 횟수의 치우침을 없애고 균일화할 수 있다. 프로브의 삽입 횟수에 치우침이 있으면, 특정한 프로브에 대해서 수집되는 정보가 적어지기 때문에, 장해 원인 개소의 추정에 필요한 정보를 얻기 위한 대기 시간이 길어진다. 삽입 횟수의 치우침을 없앰으로써, 보다 단시간에 장해 원인 개소를 추정할 수 있 다.
(5) 과거의 디버그 정보에 따라서 결정하는 방법
각 프로브의 실행 횟수, 및 에러 발생 시의 실행 횟수에 의한 방법이다. 도 4에 도시한 디버그 정보(132)는, 프로브 ID=1이 4회 실행되고, 그 중 에러가 1회 발생하고 있다. 한편,프로브 ID=2는 2회 실행되고, 그 중 에러가 1회 발생하고 있다. 프로브의 모집단으로서, 실행 횟수가 적은 프로브를 선택함으로써, 그들의프로브의 정보를 보다 단시간에 수집하기 쉬워진다. 혹은 에러 발생 횟수가 적은프로브를 선택함으로써, 에러 발생 시의 정보를 보다 수집하기 쉬워진다. 이에 의해, 각 프로브에 대해서 실행 횟수의 치우침이 없어져, 추정에 필요로 되는 정보 수집의 대기 시간이 단축된다.
(6) 그 밖의 모집단의 결정 방법
모듈마다의 프로브 실행 횟수를 비교하고, 모듈 단위로 모집단을 선택하는 방법이나, 프로브의 삽입 이력으로부터 1회의 배포에서 삽입하는 프로브의 조합을 체크하고, 프로브의 조합의 치우침을 평균화하는 방법 등도 가능하다. 또한, 전술한 결정 방법을 포함시켜, 복수의 결정 방법을 조합해도 된다. 예를 들면, 각 결정 방법으로부터 얻어지는 모집단의 합집합이나 곱집합을, 모집단으로 하는 방법이 있다.
스텝 S605: 상기 결정한 프로브의 모집단으로부터 난수 등을 이용하여 프로브를 1개 선택한다. 선택한 프로브에 대해서는, 프로브 정보(123)의 「삽입 횟수(209)」에 1을 가산한다.
스텝 S606: 선택한 프로브의 수가, 스텝 S602에서 결정한 삽입 프로브수에 도달하고 있으면, 프로브의 선택을 완료한다. 도달하고 있지 않은 경우에는, 스텝 S603으로 되돌아가서 재차 프로브를 선택한다.
이와 같이 본 실시예에 따르면, 실행 장치의 성능에 따라서 삽입할 프로브수를 결정하므로 실행 장치측의 부담이 과대하게 되는 경우가 없다. 또한,프로브의 삽입 이력을 반영하여 모집단을 결정하므로, 삽입하는 프로브에 치우침이 없어진다. 그 결과, 디바이스측의 부담과 개발자측의 부담을 동시에 경감하고, 또한 디버그 정보를 균일하게 취득할 수 있게 되어, 소프트웨어의 장해 원인 해석의 신속화에 기여한다.
상기 실시예에서는, 단일의 바이너리에 대해서 디버그 정보를 수집하는 예를 설명하였지만, 복수의 바이너리를 대상으로 하여 적용하는 것도 가능하다. 또한 상기 실시예에서는, 바이너리에 대하여 프로브를 삽입하는 예를 나타냈지만, 소스 코드에 프로브를 삽입하여도 된다. 그 경우에는, 소프트웨어 배포 장치(102)는 바이너리 대신에 소스 코드를 배치하고, 컴파일 처리부를 갖게 하면 된다.
상기 실시예에서는, 인터넷 등의 공공 네트워크를 통해서 소프트웨어 배포 장치(102), 디버그 정보 수집 장치(103), 실행 장치(104, 105, 106) 등을 접속하는 경우를 나타냈지만, 이들은 인트라넷 등의 조직 내 네트워크를 이용하여 접속하여도 된다.
즉, 실행 장치(104) 등을 출하하기 전의 소프트웨어 개선에 대해서도, 본 발명은 적용 가능하다. 또한, 소프트웨어의 배포는 실행 장치(104)의 출하 전에 인 트라넷 경유로 실시하고, 디버그 정보의 수집을 실행 장치(104)의 출하 후에 인터넷 경유로 실시하는 형태이어도 된다. 즉, 소프트웨어 배포의 서비스를 제공하지 않는 경우에도, 본 발명은 적용 가능하다.
본 실시예에서는 소프트웨어 개발 장치(101), 소프트웨어 배포 장치(102), 디버그 정보 수집 장치(103) 등이 인트라넷 등의 조직 내 네트워크에 의해 접속하는 예를 나타냈지만, 이들은 인터넷 등의 공공 네트워크를 이용하여 접속하여도 된다. 즉, 소프트웨어 배포 장치(102), 및 디버그 정보 수집 장치(103)에 의한, 소프트웨어의 배포와 디버그 정보 수집의 기능을, 소프트웨어 개발자에 대하여 유상 혹은 무상의 서비스로서 제공하는 경우에도, 본 발명은 적용 가능하다.
도 1은 본 발명에 따른 소프트웨어 배포 시스템의 전체 구성을 도시하는 도면.
도 2는 소프트웨어 배포 장치가 유지하는 프로브 정보(123)의 일례를 도시하는 도면.
도 3은 소프트웨어 배포 장치의 유지하는 실행 장치 정보(124)의 일례를 도시하는 도면.
도 4는 디버그 정보 수집 장치의 유지하는 디버그 정보(132)의 일례를 도시하는 도면.
도 5는 디버그 정보 수집 처리의 전체의 플로우차트의 일례를 도시하는 도면.
도 6은 도 5에서의 삽입 프로브 선택 처리의 상세한 플로우차트도.
<도면의 주요 부분에 대한 부호의 설명>
101: 소프트웨어 개발 장치
102: 소프트웨어 배포 장치
104: 실행 장치(디바이스)
105: 실행 장치
106: 실행 장치
111: 소스 코드
112, 121: 바이너리
113: 소스 편집 처리부
114: 컴파일 처리부
122: 바이너리 해석부
123: 프로브 정보

Claims (16)

  1. 디버그 정보를 수집하기 위해 소프트웨어에 프로브를 삽입하여 복수의 디바이스에 배포하고, 그 디바이스에서 그 소프트웨어를 실행함으로써 얻어지는 디버그 정보를 수집하는 디버그 정보 수집 방법으로서,
    상기 소프트웨어에 프로브를 삽입 가능한 삽입 위치의 전체 집합을 구하고,
    상기 전체 집합으로부터 부분 집합을 취출하여 상기 소프트웨어에 삽입하는 프로브의 삽입 위치의 모집단을 결정하고,
    상기 디바이스마다 삽입하는 프로브의 삽입수를 결정하고,
    상기 모집단으로부터 상기 삽입수만큼 프로브의 삽입 위치를 선택하여 상기 소프트웨어에 삽입하고,
    프로브가 삽입된 소프트웨어를 상기 디바이스에 배포하는 것을 특징으로 하는 디버그 정보 수집 방법.
  2. 제1항에 있어서,
    상기 디바이스에 삽입하는 프로브의 삽입수는, 그 디바이스의 기억 용량 또는 CPU 성능에 기초하여, 디바이스마다 삽입수를 결정하고,
    상기 모집단으로부터 상기 삽입수만큼 프로브의 삽입 위치를 난수를 이용해서 선택하여 상기 소프트웨어에 삽입하는 것을 특징으로 하는 디버그 정보 수집 방법.
  3. 제1항에 있어서,
    상기 프로브의 삽입 위치의 모집단은, 과거에 배포한 소프트웨어에 삽입한 프로브의 삽입 횟수를 참조하여, 그 삽입 횟수가 적은 삽입 위치의 부분 집합으로부터 결정하는 것을 특징으로 하는 디버그 정보 수집 방법.
  4. 제1항에 있어서,
    상기 프로브의 삽입 위치의 모집단은, 과거에 배포한 소프트웨어에 삽입한 프로브로부터 수집한 디버그 정보를 참조하여, 그 디버그 정보로부터 각 프로브의 실행 횟수를 구하고, 그 실행 횟수가 적은 프로브 삽입 위치의 부분 집합으로부터 결정하는 것을 특징으로 하는 디버그 정보 수집 방법.
  5. 제4항에 있어서,
    상기 프로브의 삽입 위치의 모집단은, 상기 디버그 정보로부터 각 프로브의 실행 횟수를 구하고, 그 중에서 장해 발생 시에 실행된 실행 횟수가 적은 프로브 삽입 위치의 부분 집합으로부터 결정하는 것을 특징으로 하는 디버그 정보 수집 방법.
  6. 복수의 내장 디바이스에서 실행되는 소프트웨어의 디버그 정보 수집 방법으로서,
    프로브의 삽입 위치를 기록하는 프로브 정보와 내장 디바이스의 장치 정보와 디버그 정보로부터 상기 소프트웨어에 프로브를 삽입하여 배포하는 소프트웨어를 생성하는 스텝과,
    복수의 내장 디바이스의 각각에 서로 다른 프로브를 삽입한 소프트웨어를 배포하는 스텝과,
    상기 복수의 내장 디바이스로부터 배포된 소프트웨어의 프로브 수집 정보를 취득하는 스텝과,
    상기 취득한 프로브 수집 정보에 의해 상기 디버그 정보를 갱신하는 스텝
    을 포함하는 디버그 정보 수집 방법.
  7. 제6항에 있어서,
    상기 프로브를 삽입하여 배포하는 소프트웨어를 생성하는 스텝은,
    상기 디바이스에 삽입하는 프로브의 삽입수는, 그 디바이스의 기억 용량 또는 CPU 성능에 기초하여, 디바이스마다 삽입수를 결정하고,
    상기 삽입수만큼 프로브의 삽입 위치를 난수를 이용해서 선택하여 상기 소프트웨어에 프로브를 삽입하는 스텝을 포함하는 디버그 정보 수집 방법.
  8. 제6항에 있어서,
    상기 프로브를 삽입하여 배포하는 소프트웨어를 생성하는 스텝은,
    과거에 배포한 소프트웨어에 삽입한 프로브의 삽입 횟수를 참조하여, 그 삽 입 횟수가 적은 삽입 위치의 프로브를 삽입하는 스텝을 포함하는 디버그 정보 수집 방법.
  9. 제6항에 있어서,
    상기 프로브를 삽입하여 배포하는 소프트웨어를 생성하는 스텝은,
    과거에 배포한 소프트웨어에 삽입한 프로브로부터 수집한 디버그 정보를 참조하여, 그 디버그 정보로부터 각 프로브의 실행 횟수를 구하고, 그 실행 횟수가 적은 프로브 삽입 위치에 프로브를 삽입하는 스텝을 포함하는 디버그 정보 수집 방법.
  10. 제6항에 있어서,
    상기 프로브를 삽입하여 배포하는 소프트웨어를 생성하는 스텝은,
    상기 디버그 정보로부터 각 프로브의 실행 횟수를 구하고, 그 중에서 장해 발생 시에 실행된 실행 횟수가 적은 프로브 삽입 위치에 프로브를 삽입하는 스텝을 포함하는 디버그 정보 수집 방법.
  11. 소프트웨어의 디버그 정보를 수집하는 디버그 정보 수집 시스템으로서,
    디버그할 소프트웨어를 실행하여 디버그 정보를 생성하는 복수의 실행 장치와,
    상기 소프트웨어를 개발하여 실행 가능한 바이너리 데이터를 작성하는 소프 트웨어 개발 장치와,
    상기 바이너리 데이터에 프로브를 삽입하여 상기 디버그할 소프트웨어를 작성한 후에 상기 실행 장치에 상기 디버그할 소프트웨어를 배포하는 소프트웨어 배포 장치와,
    상기 실행 장치에 배포되어 실행된 소프트웨어의 디버그 정보를 상기 실행 장치로부터 수집하는 디버그 정보 수집 장치
    로 이루어지는 디버그 정보 수집 시스템.
  12. 제11항에 있어서,
    상기 소프트웨어 배포 장치는,
    디버그할 소프트웨어를 해석하여 프로브를 삽입 가능한 개소를 추출하는 바이너리 해석부와,
    상기 바이너리 해석부에서 추출한 프로브의 삽입 위치를 기록하는 프로브 정보 유지부와,
    프로브를 삽입한 소프트웨어를 배포하는 실행 장치의 리스트를 기록하는 실행 장치 정보 유지부와,
    상기 프로브 정보 유지부에 기록된 정보와 상기 실행 장치 정보 유지부에 기록된 정보와 상기 디버그 정보 수집 장치가 수집한 상기 디버그 정보를 참조하여, 상기 바이너리 데이터에 프로브를 삽입하여 상기 디버그할 소프트웨어를 생성하는 바이너리 변경부를 포함하는 디버그 정보 수집 시스템.
  13. 제12항에 있어서,
    상기 프로브 정보 유지부에는, 삽입되는 프로브의 ID마다,
    각 프로브가 삽입되는 모듈명과,
    각 프로브가 관찰하는 내용을 나타내는 프로브 종별과,
    각 프로브의 삽입 개소를 특정하는 삽입 위치 정보와,
    각 프로브가 기대하는 값을 기록하는 비교 대상값과,
    각 프로브가 모듈에 삽입된 횟수를 카운트하는 삽입 횟수값을 기록하는 영역을 포함하는 디버그 정보 수집 시스템.
  14. 제13항에 있어서,
    상기 프로브 정보 유지부의 프로브 종별에는,
    함수의 되돌림값을 관측할지, 변수에의 대입값을 관측할지, 조건문의 진위값을 관측할지, 분기 개소의 분기 방향을 관측할지의 종별이 기록되는 디버그 정보 수집 시스템.
  15. 제12항에 있어서,
    상기 실행 장치 정보 유지부에는, 상기 실행 장치마다,
    실행 장치의 기종을 나타내는 종별 정보와,
    CPU의 성능을 나타내는 CPU 종별 정보와,
    배포 소프트웨어의 사이즈 제한을 나타내는 사이즈 정보와,
    삽입 가능한 프로브수의 상한값을 나타내는 프로브 상한값을 포함하는 디버그 정보 수집 시스템.
  16. 제11항에 있어서,
    상기 디버그 정보 수집 장치가 수집하는 디버그 정보에는, 프로브 ID와 프로브 종별과 실행 장치 종별로 이루어지는 계측 조건마다, 프로브에 의해 수집되는 소프트웨어의 종료 시의 상태를 나타내는 정보와 프로브에서의 비교의 결과의 각각의 횟수를 포함하는 계측 결과가 기록되는 디버그 정보 수집 시스템.
KR1020070122825A 2006-12-01 2007-11-29 디버그 정보 수집 방법 및 디버그 정보 수집 시스템 KR100990777B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2006-00325922 2006-12-01
JP2006325922A JP2008140162A (ja) 2006-12-01 2006-12-01 デバッグ情報収集方法

Publications (2)

Publication Number Publication Date
KR20080050331A true KR20080050331A (ko) 2008-06-05
KR100990777B1 KR100990777B1 (ko) 2010-10-29

Family

ID=39499836

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070122825A KR100990777B1 (ko) 2006-12-01 2007-11-29 디버그 정보 수집 방법 및 디버그 정보 수집 시스템

Country Status (4)

Country Link
US (1) US20080141224A1 (ko)
JP (1) JP2008140162A (ko)
KR (1) KR100990777B1 (ko)
CN (1) CN100533398C (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111586475A (zh) * 2020-05-27 2020-08-25 飞思达技术(北京)有限公司 一种iptv和ott直播音视频质量和感知评价系统

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8301605B2 (en) * 2007-12-17 2012-10-30 International Business Machines Corporation Managing maintenance tasks for computer programs
US8291399B2 (en) * 2008-03-26 2012-10-16 Avaya Inc. Off-line program analysis and run-time instrumentation
JP4833326B2 (ja) 2009-09-28 2011-12-07 株式会社三菱東京Ufj銀行 コード編集用プログラム及びコード編集装置
US20130246736A1 (en) * 2010-11-25 2013-09-19 Toyota Jidosha Kabushiki Kaisha Processor, electronic control unit and generating program
US9575871B2 (en) * 2012-09-04 2017-02-21 Salesforce.Com, Inc. System and method for dynamically debugging data in a multi-tenant database environment
US9268598B2 (en) * 2012-09-13 2016-02-23 International Business Machines Corporation Recording and profiling transaction failure source addresses and states of validity indicator corresponding to addresses of aborted transaction in hardware transactional memories
US20140289572A1 (en) 2013-03-22 2014-09-25 International Business Machines Corporation Dynamically Altering Error Logging Activities In A Computing System
JP6015849B2 (ja) * 2013-03-26 2016-10-26 日本電気株式会社 ログ出力制御装置、方法及びプログラム
CN105281967B (zh) * 2014-06-20 2019-06-28 北京神州泰岳软件股份有限公司 一种数据采集方法和系统
JP6247237B2 (ja) * 2015-01-30 2017-12-13 日本電信電話株式会社 オートリソースロギングシステム、オートリソースロギング方法及びプログラム
CN105681410B (zh) * 2016-01-07 2019-07-19 深圳市金证科技股份有限公司 一种跟踪记录调试信息的方法和装置
US11093374B2 (en) 2016-08-09 2021-08-17 SeaLights Technologies LTD System and method for continuous testing and delivery of software
IL264050B (en) 2018-01-01 2021-12-01 Rookout Ltd System and method for controlled extraction of information in computer networks
US11086759B2 (en) 2018-09-27 2021-08-10 SeaLights Technologies LTD System and method for probe injection for code coverage
US11573885B1 (en) 2019-09-26 2023-02-07 SeaLights Technologies LTD System and method for test selection according to test impact analytics

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5826005A (en) * 1996-03-22 1998-10-20 Sun Microsystems, Inc. System and method for diagnosing computer program faults through the provision of program probe points and referenceable diagnostic program probes
JPH10214203A (ja) * 1997-01-29 1998-08-11 Nec Corp 情報処理装置
US6826717B1 (en) * 2000-06-12 2004-11-30 Altera Corporation Synchronization of hardware and software debuggers
US20040111707A1 (en) * 2000-12-15 2004-06-10 Bliss Andrew L. Debugger for multiple processors and multiple debugging types
CA2345416C (en) * 2001-04-27 2005-05-03 Ibm Canada Limited-Ibm Canada Limitee High performance debugging in a message flow environment
US7475303B1 (en) * 2003-12-29 2009-01-06 Mips Technologies, Inc. HyperJTAG system including debug probe, on-chip instrumentation, and protocol
US7590521B2 (en) * 2004-04-07 2009-09-15 Microsoft Corporation Method and system for probe optimization while instrumenting a program
US7950001B2 (en) * 2006-09-08 2011-05-24 International Business Machines Corporation Method and apparatus for instrumentation in a multiprocessing environment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111586475A (zh) * 2020-05-27 2020-08-25 飞思达技术(北京)有限公司 一种iptv和ott直播音视频质量和感知评价系统

Also Published As

Publication number Publication date
JP2008140162A (ja) 2008-06-19
US20080141224A1 (en) 2008-06-12
CN100533398C (zh) 2009-08-26
CN101201782A (zh) 2008-06-18
KR100990777B1 (ko) 2010-10-29

Similar Documents

Publication Publication Date Title
KR100990777B1 (ko) 디버그 정보 수집 방법 및 디버그 정보 수집 시스템
CN106294120B (zh) 测试代码的方法、设备和计算机程序产品
CN108521353B (zh) 定位性能瓶颈的处理方法、设备及可读存储介质
CN106874187B (zh) 代码覆盖率收集方法和装置
US7028290B2 (en) Method and apparatus for prioritizing software tests
US7496904B2 (en) Mining dependencies for testing and risk management
US20150095892A1 (en) Systems and methods for evaluating a change pertaining to a service or machine
CN108959059B (zh) 一种测试方法以及测试平台
EP2095236B1 (en) Method, system and computer program for testing software applications based on multiple data sources
US20080163003A1 (en) Method and System for Autonomic Target Testing
US20100275062A1 (en) Functional Coverage Using Combinatorial Test Design
US20100199264A1 (en) Pattern inspection system, pattern inspection device, method and pattern inspection program
CN112241360B (zh) 一种测试用例生成方法、装置、设备及存储介质
CN113448854A (zh) 一种回归测试方法和装置
CN109783284A (zh) 信息获取方法、系统及服务器、计算机可读存储介质
CN110503297B (zh) 业务场景获取方法、装置、电子设备及介质
CN111984527A (zh) 软件的性能测试方法、装置、设备和介质
JP2012099108A (ja) 分散コンピューティング環境におけるソフトウェアの解析の並列化のための効率的な部分計算
KR102016472B1 (ko) 코드 커버리지 측정 방법 및 장치, 그리고 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체
CN110971478A (zh) 云平台服务性能的压测方法、装置及计算设备
CN114416546A (zh) 一种代码覆盖率确定方法及装置
US11449378B2 (en) Information processing apparatus and log control method
US20170060693A1 (en) Information-processing device, processing method, and recording medium in which program is recorded
CN117931175A (zh) 服务请求的处理方法和装置
CN117130895A (zh) 接口测试方法、装置、电子设备和介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee