KR20240006694A - 다수의 디바이스들을 테스트하기 위한 자동화된 테스팅 플랫폼 - Google Patents
다수의 디바이스들을 테스트하기 위한 자동화된 테스팅 플랫폼 Download PDFInfo
- Publication number
- KR20240006694A KR20240006694A KR1020237043256A KR20237043256A KR20240006694A KR 20240006694 A KR20240006694 A KR 20240006694A KR 1020237043256 A KR1020237043256 A KR 1020237043256A KR 20237043256 A KR20237043256 A KR 20237043256A KR 20240006694 A KR20240006694 A KR 20240006694A
- Authority
- KR
- South Korea
- Prior art keywords
- test
- under test
- device under
- mobile device
- remote procedure
- Prior art date
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 358
- 238000000034 method Methods 0.000 claims abstract description 91
- 230000004044 response Effects 0.000 claims abstract description 13
- 238000004891 communication Methods 0.000 claims description 71
- 230000015654 memory Effects 0.000 claims description 46
- 238000003860 storage Methods 0.000 claims description 23
- 230000008569 process Effects 0.000 claims description 18
- 230000003993 interaction Effects 0.000 claims description 17
- 230000027455 binding Effects 0.000 claims description 11
- 238000009739 binding Methods 0.000 claims description 11
- 230000000694 effects Effects 0.000 claims description 7
- 230000009471 action Effects 0.000 claims description 6
- 238000010998 test method Methods 0.000 claims description 5
- 230000008676 import Effects 0.000 claims description 2
- 238000003825 pressing Methods 0.000 claims description 2
- 230000003287 optical effect Effects 0.000 description 67
- 230000006870 function Effects 0.000 description 22
- 210000003128 head Anatomy 0.000 description 16
- 230000004886 head movement Effects 0.000 description 16
- 238000012545 processing Methods 0.000 description 14
- 230000033001 locomotion Effects 0.000 description 11
- 238000005259 measurement Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 230000004424 eye movement Effects 0.000 description 8
- 230000005291 magnetic effect Effects 0.000 description 8
- 230000000712 assembly Effects 0.000 description 7
- 238000000429 assembly Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 238000011161 development Methods 0.000 description 6
- 239000011159 matrix material Substances 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- XBBRGUHRZBZMPP-UHFFFAOYSA-N 1,2,3-trichloro-4-(2,4,6-trichlorophenyl)benzene Chemical compound ClC1=CC(Cl)=CC(Cl)=C1C1=CC=C(Cl)C(Cl)=C1Cl XBBRGUHRZBZMPP-UHFFFAOYSA-N 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 239000000243 solution Substances 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000005236 sound signal Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000008921 facial expression Effects 0.000 description 2
- 238000011990 functional testing Methods 0.000 description 2
- 230000005484 gravity Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 229910044991 metal oxide Inorganic materials 0.000 description 2
- 150000004706 metal oxides Chemical class 0.000 description 2
- 150000003071 polychlorinated biphenyls Chemical class 0.000 description 2
- 230000002207 retinal effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 239000004984 smart glass Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 101000822695 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C1 Proteins 0.000 description 1
- 101000655262 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C2 Proteins 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 101000655256 Paraclostridium bifermentans Small, acid-soluble spore protein alpha Proteins 0.000 description 1
- 101000655264 Paraclostridium bifermentans Small, acid-soluble spore protein beta Proteins 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000036772 blood pressure Effects 0.000 description 1
- 230000036760 body temperature Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000000576 coating method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000005670 electromagnetic radiation Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 210000000887 face Anatomy 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000005476 soldering Methods 0.000 description 1
- 230000003595 spectral effect Effects 0.000 description 1
- 210000004243 sweat Anatomy 0.000 description 1
- 239000012085 test solution Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 230000001755 vocal effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3696—Methods or tools to render software testable
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/535—Tracking the activity of the user
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/564—Enhancement of application control based on intercepted application data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W24/00—Supervisory, monitoring or testing arrangements
- H04W24/06—Testing, supervising or monitoring using simulated traffic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/80—Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Eye Examination Apparatus (AREA)
Abstract
테스팅 시스템은, 인터페이스를 포함하는 테스트 프레임워크로부터 명령들이 직접 발행(issue)되도록 허용하기 위해 원격 프로시저 호출들에 대한 프록시로서의 역할을 하는 클라이언트 라이브러리를 포함하고, 인터페이스는, 모바일 디바이스 및 테스트 대상 디바이스가 서로 다른 운영 체제를 갖는 경우에도, 원격 프로시저 호출 명령들이 모바일 디바이스로부터 테스트 대상 디바이스로 송신될 수 있게 하고 그리고 테스트 대상 디바이스로부터의 응답들이 수신되고 모바일 디바이스로 포워딩(forward)될 수 있게 한다. 테스트 대상 디바이스 상에서 실행되도록 구성된 클라이언트 프로그램은 원격 프로시저 호출 명령들을 테스트 대상 디바이스로부터 테스트 서버로 송신하고 그리고 테스트 서버로부터 수신하며, 테스트 서버는 테스트 프레임워크를 구현하고, 테스트 대상 디바이스의 상태를 관리한다. 페어링 테스트시, 원격 프로시저 호출 명령들은, 모바일 디바이스와 테스트 대상 디바이스 사이의 페어링을 개시하기 위한 버튼 누름을 에뮬레이트하도록 구성된 명령들을 포함한다.
Description
[0001] 본 출원은 2021년 5월 17일자로 출원된 미국 출원 제17/322,426호에 대한 우선권을 주장하며, 그 내용들은 인용에 의해 본원에 완전히 포함된다.
[0002] 본 개시내용에 제시된 예들은 웨어러블 전자 디바이스들을 포함한 다수의 디바이스들을 테스트하기 위한 자동화된 테스팅 플랫폼(testing platform)에 관한 것이다. 보다 구체적으로, 본 개시내용은 다수의 물리적 디바이스들(스마트 안경들과 같은 웨어러블 전자 디바이스들을 포함) 및 소프트웨어 플랫폼들의 테스트들을 실행하기 위한 자동화된 테스트 인프라에 대해 설명한다(그러나, 이에 제한되지 않음).
[0003] 전자 안경류 디바이스들과 같은 웨어러블 전자 디바이스들은 사용자의 스마트폰과 같은 모바일 디바이스들 상에서 실행되는 애플리케이션 프로그램들과 통신할 수 있고, 경우들에 따라서는 서버와 직접 통신할 수 있다. 어떤 경우든 전자 안경류 디바이스는 캘리포니아주 산타모니카 소재의 스냅사(Snap, Inc.)로부터 입수 가능한 렌즈 딜리버리(Lens delivery), 스캔(Scan), 센드-투-프렌즈(Send-to-friends), 세이브 투 메모리즈(Save to memories), 텔레미트리(Telemetry), 스토리즈(Stories), 디스커버(Discover) 및 게임즈(Games)와 같은 통신 애플리케이션 서비스들뿐만 아니라 텍스트 음성 변환, 샤잠 플레이어(등록상표)(SHAZAM PLAYER®) 앱 등과 같은 제3 자 애플리케이션 프로그래밍 인터페이스들(API들)과의 직접적인 디바이스 통합을 지원할 수 있다. 이러한 통신들은 블루투스(등록상표)(BLUETOOTH®)와 같은 저전력 연결들을 통해 이루어질 수 있다.
[0004] 개시된 다양한 구현예들의 특징들은 첨부된 도면들을 참조하는 이하의 상세한 설명으로부터 쉽게 이해될 것이다. 참조 번호는 설명 내 각각의 요소와 함께, 그리고 여러 도면들 전체에 걸쳐 사용된다. 복수의 유사한 요소들이 존재하는 경우, 하나의 참조 숫자가 유사한 요소들에 할당될 수 있으며, 특정 요소를 지칭하는 소문자가 추가될 수 있다.
[0005] 도면들에 도시된 다양한 요소들은 달리 명시되지 않는 한 실척대로 그려져 있지 않다. 다양한 요소들의 치수들은 명확성을 위해 확대되거나 축소될 수 있다. 여러 도면들은 하나 이상의 구현예들을 묘사하며, 단지 예시적으로 제시된 것으로서 제한적인 것으로 해석되어서는 안된다. 도면에는 이하의 도면들이 포함된다.
[0006] 도 1a는 이미지 디스플레이를 갖는 우측 광학 조립체를 도시하는 전자 안경류 디바이스의 예시적인 하드웨어 구성의 측면도를 예시한다.
[0007] 도 1b는 도 1a의 전자 안경류 디바이스의 템플의 최상부 단면도를 예시한다.
[0008] 도 2a는 예시적인 하드웨어 구성에서 전자 안경류 디바이스의 예시적인 하드웨어 구성의 배면도를 예시한다.
[0009] 도 2b는 예시적인 하드웨어 구성에서 다른 전자 안경류 디바이스의 예시적인 하드웨어 구성의 배면도를 예시한다.
[0010] 도 2c 및 도 2d는 2 개의 서로 다른 유형들의 이미지 디스플레이들을 포함하는 전자 안경류 디바이스의 예시적인 하드웨어 구성들의 배면도들을 예시한다.
[0011] 도 3은 전자 안경류 디바이스의 전자 구성요소들의 블록도를 예시한다.
[0012] 도 4는 샘플 구성에서 전자 안경류 디바이스와 함께 사용하기 위한 모바일 디바이스의 샘플 구성을 예시한다.
[0013] 도 5는 모바일 디바이스와 전자 안경류 디바이스의 페어링을 위한 페어링 솔루션을 테스트하기 위한 샘플 테스트 구성을 예시한다.
[0014] 도 6은 테스팅 소프트웨어 스택(testing software stack)을 실행하고, 테스트 실행이 모바일 디바이스 상에서 타겟팅될 수 있도록 하는 테스트 서버를 포함한 테스트 인프라를 예시한다.
[0015] 도 7은 샘플 구성에서 테스트 인프라에 대한 샘플 페어링 흐름(pairing flow)의 흐름도를 예시한다.
[0016] 도 8은 파이썬 gRPC 서버의 클라이언트 라이브러리(client library)에 통합된 펌웨어 저장소에 대한 통신 애플리케이션 운영 체제(OS)의 표준 펌웨어 테스트를 위한 샘플 구성에서의 주요 자동화 흐름을 예시한다.
[0017] 도 9a는 테스트 대상 모듈로서 전자 안경류 디바이스의 전자 안경류 애플리케이션을 포함한 샘플 구성에서의 수정된 자동화 흐름을 예시한다.
[0018] 도 9b는 테스트 대상 모듈로서 모바일 디바이스의 통신 애플리케이션을 포함한 샘플 구성에서의 자동화 흐름을 예시한다.
[0019] 도 10은 샘플 구성에서의 테스트 실행 흐름의 흐름도를 예시한다.
[0020] 도 11은 본 명세서에 설명된 시스템들 및 방법들에 따라 자동화된 테스팅 플랫폼을 구현하도록 구성된 컴퓨터 시스템의 샘플 구성을 예시한다.
[0005] 도면들에 도시된 다양한 요소들은 달리 명시되지 않는 한 실척대로 그려져 있지 않다. 다양한 요소들의 치수들은 명확성을 위해 확대되거나 축소될 수 있다. 여러 도면들은 하나 이상의 구현예들을 묘사하며, 단지 예시적으로 제시된 것으로서 제한적인 것으로 해석되어서는 안된다. 도면에는 이하의 도면들이 포함된다.
[0006] 도 1a는 이미지 디스플레이를 갖는 우측 광학 조립체를 도시하는 전자 안경류 디바이스의 예시적인 하드웨어 구성의 측면도를 예시한다.
[0007] 도 1b는 도 1a의 전자 안경류 디바이스의 템플의 최상부 단면도를 예시한다.
[0008] 도 2a는 예시적인 하드웨어 구성에서 전자 안경류 디바이스의 예시적인 하드웨어 구성의 배면도를 예시한다.
[0009] 도 2b는 예시적인 하드웨어 구성에서 다른 전자 안경류 디바이스의 예시적인 하드웨어 구성의 배면도를 예시한다.
[0010] 도 2c 및 도 2d는 2 개의 서로 다른 유형들의 이미지 디스플레이들을 포함하는 전자 안경류 디바이스의 예시적인 하드웨어 구성들의 배면도들을 예시한다.
[0011] 도 3은 전자 안경류 디바이스의 전자 구성요소들의 블록도를 예시한다.
[0012] 도 4는 샘플 구성에서 전자 안경류 디바이스와 함께 사용하기 위한 모바일 디바이스의 샘플 구성을 예시한다.
[0013] 도 5는 모바일 디바이스와 전자 안경류 디바이스의 페어링을 위한 페어링 솔루션을 테스트하기 위한 샘플 테스트 구성을 예시한다.
[0014] 도 6은 테스팅 소프트웨어 스택(testing software stack)을 실행하고, 테스트 실행이 모바일 디바이스 상에서 타겟팅될 수 있도록 하는 테스트 서버를 포함한 테스트 인프라를 예시한다.
[0015] 도 7은 샘플 구성에서 테스트 인프라에 대한 샘플 페어링 흐름(pairing flow)의 흐름도를 예시한다.
[0016] 도 8은 파이썬 gRPC 서버의 클라이언트 라이브러리(client library)에 통합된 펌웨어 저장소에 대한 통신 애플리케이션 운영 체제(OS)의 표준 펌웨어 테스트를 위한 샘플 구성에서의 주요 자동화 흐름을 예시한다.
[0017] 도 9a는 테스트 대상 모듈로서 전자 안경류 디바이스의 전자 안경류 애플리케이션을 포함한 샘플 구성에서의 수정된 자동화 흐름을 예시한다.
[0018] 도 9b는 테스트 대상 모듈로서 모바일 디바이스의 통신 애플리케이션을 포함한 샘플 구성에서의 자동화 흐름을 예시한다.
[0019] 도 10은 샘플 구성에서의 테스트 실행 흐름의 흐름도를 예시한다.
[0020] 도 11은 본 명세서에 설명된 시스템들 및 방법들에 따라 자동화된 테스팅 플랫폼을 구현하도록 구성된 컴퓨터 시스템의 샘플 구성을 예시한다.
[0021] 다수의 물리적 디바이스들(스마트 안경들과 같은 웨어러블 전자 디바이스들 포함) 및 소프트웨어 플랫폼들의 테스트들을 실행하기 위한 자동화된 테스트 인프라들의 예들이 설명된다. 웨어러블 전자 디바이스들은 웨어러블 전자 디바이스의 기능을 구현하기 위해 모바일 디바이스와 같은 모바일 디바이스 또는 서버(프록시 서버를 포함할 수 있음) 중 적어도 하나와 통신할 수 있다. 예를 들어, 전자 안경류 디바이스는 캘리포니아주 산타모니카 소재의 스냅사로부터 입수 가능한 스냅챗 애플리케이션과 같은 통신 애플리케이션과 상호작용할 수 있다. 이러한 구성에서 통신 애플리케이션은 모바일 디바이스에서 구현되어 렌즈들과의 동기화 및 전자 안경류 디바이스의 시야 영역에 표시하기 위해 전자 안경류 디바이스로 통신할 수 있는 통신들의 송신과 같은 특정 기능을 잠금 해제할 수 있다. 이러한 시스템에서 주요 사용자 흐름들을 적절하게 검증하기 위해, 다수의 물리적 디바이스들(예시에서, 전자 안경류 디바이스 및 모바일 디바이스) 및 소프트웨어 플랫폼들(예시에서, 통신 애플리케이션의 운영 체제 및 모바일 디바이스의 운영 체제)을 사용하여 테스트를 실행할 수 있는 자동화된 테스트 인프라가 개발되었다.
[0022] 다양한 개발 팀들은 테스트 인프라를 사용하여 그들의 시나리오들을 테스트할 수 있다. 이전에는, 통신 애플리케이션의 운영 체제와 인터페이스하기 위해 잘 지원되는 방법은 펌웨어/운영 체제 저장소에서 파이썬 프로그래밍 언어로 테스트를 작성하거나, 시스템이 블루투스(등록상표)를 통해 원격으로 셸 명령을 수신할 수 있도록 하는 블루투스(등록상표) 노르딕 범용 비동기 수신기 송신기(UART) 서비스 셸 전송의 데이터베이스 및 nRF 셸과 인터페이스하는 파이썬 스크립트들을 작성하는 것이다. 그러나 이는 개발 팀들이 모바일 디바이스들 상에서 실행되는 통신 애플리케이션들의 운영 체제들에 대해 테스트할 수 있는 지속 가능하거나 확장 가능한 방법이 아니다. 통신 애플리케이션의 개개의 개발 팀들은 다양한 서로 다른 언어들로 작성하며 선호하는 작업 흐름을 확립하고 있다. 코드가 서로 다른 저장소들에 있을 수 있고; 테스트에 사용하는 선호하는 작업 흐름과 프레임워크가 서로 다를 수 있으며, 서로 다른 시나리오들에 관심이 있을 수 있다. 또한, 개발 팀들은 각각 테스트 하네스(test harness)들 및 테넌시들 및 테스트 로직에 대해 서로 다른 언어들을 가질 수 있는데, 여기서 테스트 하네스들 및 테넌시들은 테스트 실행을 래핑하고 환경 설정, 보고, 재시도 등과 같은 것들을 제공하는 호스트 머신에서 실제로 실행되는 스크립트들의 집합이고, 테스트 로직은 실제 테스트 실행 및 거동의 유효성이다.
[0023] 기능을 지원하기 위해 모바일 디바이스 또는 서버(또는 프록시 서버) 중 적어도 하나와 통신하는 웨어러블 전자 디바이스들에 대한 시나리오들에서, 다중 디바이스 사용자 흐름을 테스트해야 할 수 있다. 예를 들어, 블루투스(등록상표)를 사용하여 전자 안경류 디바이스와 통신 애플리케이션(예를 들어, 캘리포니아주 산타모니카 소재의 스냅사로부터 입수 가능한 스냅챗 앱)의 페어링을 테스트하거나 전자 안경류 디바이스로부터 통신 애플리케이션으로 매체 전송(예를 들어, 스냅챗 앱으로부터의 스냅 송신)을 테스트하는 것이 바람직할 수 있다. 페어링 및 전송과 같은 엔드 투 엔드 사용자 흐름들에는 통신 애플리케이션과 전자 안경류 디바이스 사이의 상호작용이 필요할 수 있다. 본 개시내용에서는 모바일 디바이스의 통신 애플리케이션과 전자 안경류 디바이스들의 통신 애플리케이션이 동시에 다른 디바이스들을 찾고 적절한 신호 강도를 가진 올바른 디바이스와 연결하도록 선택하는 페어링 테스트(pairing test)들을 위한 코드 테스트를 위한 낮은 수준의 명령들을 제공하는 테스트 인프라를 제공하는 페어링 사용자 흐름에 대한 솔루션을 개략적으로 설명한다. 또한 버튼 누름 명령들과 같은 수동 기능들을 자동화하여 페어링 프로세스를 완전히 자동화할 수 있다. 그러나, 당업자들에게는 동일한 인프라가 테스트에 약간의 수정들을 가하여 전송과 같은 다른 사용자 흐름들을 검증하는 데에도 사용될 수 있음을 인식할 것이다. 추가로, 개시된 시스템은 선택된 컴퓨팅 언어 및 운영 체제 환경에서 전자 안경류 디바이스와 같은 디바이스의 테스트를 가능하게 하도록 설계된다.
[0024] 이러한 문제들을 해결하기 위해, 본 개시내용은 모바일 디바이스와 테스트 대상 디바이스(device under test)가 서로 다른 운영 체제들을 갖는 경우에도, 모바일 디바이스로부터 테스트 대상 디바이스로 원격 프로시저 호출 명령(remote procedure call command)들을 송신하고, 테스트 대상 디바이스로부터의 응답들을 수신하여 모바일 디바이스로 포워딩(forward)할 수 있는 인터페이스를 포함하는 테스트 프레임워크로부터 직접 명령들을 실행할 수 있게 하는 원격 프로시저 호출들의 프록시로 기능하는 클라이언트 라이브러리를 포함하는 테스팅 시스템에 관한 것이다. 테스트 대상 디바이스에서 실행되도록 구성된 클라이언트 프로그램은 테스트 프레임워크를 구현하고 테스트 대상 디바이스의 디바이스 상태를 관리하는 테스트 서버와 테스트 대상 디바이스에서 원격 프로시저 호출 명령들을 송수신한다. 페어링 테스트에서, 원격 프로시저 호출 명령들은 모바일 디바이스와 테스트 대상 디바이스 사이의 페어링을 개시하기 위한 버튼 누름(button press)을 에뮬레이트(emulate)하도록 구성된 명령들을 포함한다.
[0025] 본 개시내용은 추가로, 모바일 디바이스와 테스트 대상 디바이스 사이의 상호작용들을 테스트하는 방법에 관한 것이다. 이 방법은 모바일 디바이스에 대한 운영 체제 마스터(operating system master) 및 테스트 대상 디바이스에서 통신 애플리케이션을 실행하는 운영 체제의 버전(version)을 테스트 서버에 다운로드하는 단계를 포함한다. 테스트 대상 디바이스를 부팅(booting)하여, 테스트 대상 디바이스의 적어도 하나의 무선 회로에서 원격 프로시저 호출 명령들을 수신하기 시작한다. 원격 프로시저 호출 명령들이 실행되어 모바일 디바이스와 테스트 대상 디바이스 사이에 테스트를 생성한다. 샘플 구성들에서 원격 프로시저 호출 명령들에는 모바일 디바이스와 테스트 대상 디바이스 사이의 상호작용들을 시작하기 위한 사용자 활동(user activity)을 에뮬레이트(emulate)하도록 구성된 명령이 포함된다. 에뮬레이트된 사용자 활동에 의해 시작된 상호작용들의 결과들이 측정된다. 샘플 구성들에서 원격 프로시저 호출 명령들은 모바일 디바이스와 테스트 대상 디바이스 사이의 페어링 테스트를 생성하도록 구성되며, 원격 프로시저 호출 명령들은 페어링 프로세스를 시작하기 위해 모바일 디바이스 또는 테스트 대상 디바이스 중 적어도 하나로부터 버튼 누름 명령을 에뮬레이트하도록 구성된 명령들을 포함한다. 샘플 구성들에서, 테스트 대상 디바이스에 로딩된 클라이언트 프로그램은 에뮬레이트된 버튼 누름 명령을 테스트 서버에 송신하고, 테스트 서버는 에뮬레이트된 버튼 누름 명령을 테스트 대상 디바이스에 송신하여 모바일 디바이스와 테스트 대상 디바이스 사이의 페어링을 개시한다.
[0026] 이하의 상세한 설명은 본 개시내용에서 제시되는 예들을 예시하는 시스템들, 방법들, 기술들, 명령어 시퀀스들 및 컴퓨터 프로그램 제품들을 포함한다. 개시된 주제 및 주제와 관련된 교시내용들에 대한 완전한 이해를 제공하기 위한 목적으로 수많은 세부 사항들 및 예들이 포함된다. 그러나 관련 기술의 당업자들은 이러한 세부 사항들 없이도 관련 교시내용들을 적용하는 방법을 이해할 수 있다. 관련 교시내용들은 다양한 방식들로 적용되거나 실행될 수 있기 때문에, 개시된 주제의 양상들은 설명된 특정 디바이스들, 시스템들 및 방법들에 한정되지 않는다. 본 명세서에 사용된 용어 및 명명법은 특정 양상들을 설명하기 위한 목적일 뿐이며, 이를 제한하기 위한 것이 아니다. 일반적으로, 잘 알려진 명령어 인스턴스들, 프로토콜들, 구조들 및 기술들은 반드시 상세하게 제시되지 않는다.
[0027] 본 명세서에서 사용되는 바와 같은 "연결하다", "연결되는", "결합하다" 및 "결합되는"이라는 용어는 하나의 시스템 요소에 의해 생성되거나 공급되는 전기적 또는 자기적 신호들이 다른 결합되거나 연결된 시스템 요소에 부여되는 링크 등을 포함하는 임의의 논리적, 광학적, 물리적 또는 전기적 연결을 지칭한다. 달리 설명되지 않는 한, 결합되거나 연결된 요소들 또는 디바이스들은 반드시 서로 직접적으로 연결될 필요는 없으며 중간 구성요소들, 요소들 또는 연통 매체들에 의해 분리될 수 있으며, 중간 구성요소들, 요소들 또는 연통 매체들 중 하나 이상은 전기 신호들을 수정, 조작 또는 전달할 수 있다. "상에"라는 용어는 요소에 의해 직접적으로 지지되거나, 요소에 통합되거나 요소에 의해 지지되는 다른 요소를 통해 요소에 의해 간접적으로 지지되는 것을 의미한다.
[0028] 예들의 추가적인 목적들, 장점들 및 새로운 특징들은 이하의 설명에 부분적으로 제시될 것이고, 부분적으로는 이하 및 첨부된 도면들을 검토함으로써 당업자들에게 명백해지거나, 예들의 생산 또는 작동에 의해 학습될 수 있을 것이다. 본 주제의 목적들 및 장점들은 첨부된 청구항들에 구체적으로 지적된 방법론들, 수단들 및 조합들에 의해 실현 및 달성될 수 있다.
[0029] 도면들 중 임의의 도면에 도시된 바와 같은 안구 스캐너 및 카메라를 통합하는 전자 안경류 디바이스, 연관된 구성요소들 및 임의의 완전한 디바이스들의 배향들은 예시 및 논의 목적들로만 오직 예로서 제공된다. 특정 가변 광학 프로세싱 애플리케이션을 위해 작동할 때, 전자 안경류 디바이스는 전자 안경류 디바이스의 특정 애플리케이션에 적합한 임의의 다른 방향, 예를 들어, 위, 아래, 옆 또는 임의의 다른 배향으로 배향될 수 있다. 또한, 본 명세서에서 사용되는 범위 내에서, 전방, 후방, 내측, 외측, 지향, 좌측, 우측, 측면, 종방향, 상하, 상부, 하부, 최상부, 저부 및 측과 같은 임의의 방향성 용어는 단지 예시로서만 사용되며, 본 명세서에 달리 설명되는 바와 같이 구성된 임의의 광학기 또는 광학기의 구성요소의 방향 또는 배향을 제한하는 것은 아니다.
[0030] 이제 첨부된 도면들에 예시되고 후술되는 예들을 상세히 참조한다. 자동화된 테스팅 플랫폼의 샘플 구성에서 테스트될 수 있는 샘플 전자 안경류 디바이스들은 도 1 내지 도 3과 관련하여 설명될 것이고, 테스팅 시스템의 나머지 부분은 도 4 내지 도 11과 관련하여 설명될 것이다.
[0031] 도 1a는 이미지 디스플레이(180D)(도 2a)를 갖는 우측 광학 조립체(180B)를 포함하는 전자 안경류 디바이스(100)의 예시적인 하드웨어 구성의 측면도를 예시한다. 전자 안경류 디바이스(100)는 스테레오 카메라를 형성하는 다수의 가시광 카메라들(114A-B)을 포함하며, 그 중 우측 가시광 카메라(114B)는 우측 템플(110B) 상에 위치하며, 좌측 가시광 카메라(114A)는 좌측 템플(110A) 상에 위치한다.
[0032] 좌측 및 우측 가시광 카메라들(114A-B)은 가시광 범위의 파장에 민감한 이미지 센서를 포함할 수 있다. 가시광 카메라들(114A-B)은 각각 정면을 향한 서로 다른 커버리지 각도를 갖는데, 예를 들어, 가시광 카메라(114B)는 묘사된 커버리지 각도(111B)를 갖는다. 커버리지 각도는 가시광 카메라(114A-B)의 이미지 센서가 전자기 복사를 포착하여 이미지들을 생성하는 각도 범위이다. 이러한 가시광 카메라(114A-B)의 예들에는 고해상도 상보형 금속 산화막 반도체(CMOS) 이미지 센서 및 640 p(예를 들어, 총 0.3 메가픽셀용 640 x 480 픽셀들), 720 p 또는 1080 p와 같은 비디오 그래픽 어레이(VGA) 카메라가 포함된다. 가시광 카메라들(114A-B)로부터의 이미지 센서 데이터는 지리적 위치 데이터와 함께 캡처되고, 이미지 프로세서에 의해 디지털화되어, 메모리에 저장될 수 있다.
[0033] 입체 영상을 제공하기 위해, 가시광 카메라들(114A-B)은 장면의 이미지가 캡처되는 타임스탬프와 함께 디지털 프로세싱을 위한 이미지 프로세서(도 3의 요소(312))에 결합될 수 있다. 이미지 프로세서(312)는, 가시광 카메라(114A-B)로부터 신호들을 수신하고 가시광 카메라들(114A-B)로부터의 이들 신호들을 메모리(도 3의 요소(334))에 저장하기에 적합한 포맷으로 처리하는 회로를 포함할 수 있다. 타임스탬프는 가시광 카메라들(114A-B)의 작동을 제어하는 이미지 프로세서(312) 또는 다른 프로세서에 의해 추가될 수 있다. 가시광 카메라들(114A-B)은 스테레오 카메라가 인간의 양안 시력을 시뮬레이션할 수 있도록 한다. 스테레오 카메라들은 또한 각각 동일한 타임스탬프를 갖는 가시광 카메라들(114A-B)로부터 캡처된 2 개의 이미지들에 기초하여 3 차원 이미지들을 재생할 수 있는 기능을 제공한다. 이러한 3 차원 이미지들은 몰입감 있는 실제 경험, 예를 들어 가상 현실 또는 비디오 게임을 가능하게 한다. 입체 영상의 경우, 이미지들(558A-B)의 쌍은 주어진 순간에 좌측 및 우측 가시광 카메라들(114A-B) 각각에 대해 하나의 이미지로 생성될 수 있다. 좌측 및 우측 가시광 카메라들(114A-B)의 전방 지향 시야(FOV)(111A-B)로부터 생성된 이미지들(558A-B)의 쌍이 (예를 들어, 이미지 프로세서(312)에 의해) 함께 스티칭될 때, 광학 조립체(180A-B)에 의해 깊이 인식이 제공된다.
[0034] 일 예에서, 전자 안경류 디바이스(100)는 프레임(105), 우측 림(107B), 프레임(105)의 우측 측면 측(170B)으로부터 연장되는 우측 템플(110B) 및 사용자에게 그래픽 사용자 인터페이스를 제시하기 위해 광학 조립체(180B)를 포함하는 시스루 이미지 디스플레이(180D)(도 2a 내지 도 2b)를 포함한다. 전자 안경류 디바이스(100)는 장면의 제1 이미지를 캡처하기 위해 프레임(105) 또는 좌측 템플(110A)에 연결된 좌측 가시광 카메라(114A)를 포함한다. 전자 안경류 디바이스(100)는 제1 이미지와 부분적으로 중첩되는 장면의 제2 이미지를 (예를 들어, 좌측 가시광 카메라(114A)와 동시에) 캡처하기 위해 프레임(105) 또는 우측 템플(110B)에 연결된 우측 가시광 카메라(114B)를 더 포함한다. 도 1a 내지 도 1b에는 도시되지 않았지만, 프로세서(332)(도 3)는 전자 안경류 디바이스(100)에 결합되고 가시광 카메라들(114A-B)에 연결되며, 프로세서(332)에 액세스 가능한 메모리(334)(도 3) 및 메모리(334) 내 프로그래밍은 전자 안경류 디바이스(100) 자체에 제공될 수 있다.
[0035] 도 1a에는 도시되지 않았지만, 전자 안경류 디바이스(100)는 또한, 머리 움직임 추적기(도 1b의 요소(109)) 또는 안구 움직임 추적기(도 2a의 요소(113) 또는 도 2b 내지 도 2c의 요소(213))를 포함할 수 있다. 전자 안경류 디바이스(100)는, 각각 디스플레이된 이미지들의 시퀀스를 제시하기 위한 광학 조립체(180A-B)의 시스루 이미지 디스플레이들(180C-D) 및 디스플레이된 이미지들의 시퀀스를 제시하기 위해 광학 조립체(180A-B)의 시스루 이미지 디스플레이들(180C-D)에 결합되어 광학 조립체(180A-B)의 이미지 디스플레이들(180C-D)을 제어하는 이미지 디스플레이 드라이버(도 3의 요소(342))를 더 포함할 수 있으며, 이들에 대해서는 추가로 후술된다. 전자 안경류 디바이스(100)는 메모리(334) 및 이미지 디스플레이 드라이버(342) 및 메모리(334)에 액세스하는 프로세서(332)뿐만 아니라 메모리(334) 내의 프로그래밍을 더 포함할 수 있다. 프로세서(332)에 의한 프로그래밍의 실행은 시스루 이미지 디스플레이들(180C-D)을 통해, 디스플레이된 이미지들의 시퀀스의 초기 디스플레이된 이미지, 초기 머리 방향 또는 초기 시선 방향에 대응하는 초기 시야를 갖는 초기 디스플레이된 이미지를 제시하는 기능들을 포함하는 기능들을 수행하도록 전자 안경류 디바이스(100)를 구성한다.
[0036] 프로세서(332)에 의한 프로그래밍의 실행은 추가로, (ⅰ) 머리 움직임 추적기(도 1b의 요소(109))를 통해, 사용자 머리의 머리 움직임을 추적하거나, 또는 (ⅱ) 안구 움직임 추적기(도 2a의 요소(113) 또는 도 2b 내지 도 2c의 요소(213))를 통해, 전자 안경류 디바이스(100)의 사용자 눈의 안구 움직임을 추적함으로써 전자 안경류 디바이스(100) 사용자의 움직임을 검출하도록 전자 안경류 디바이스(100)를 구성할 수 있다. 프로세서(332)에 의한 프로그래밍의 실행은 추가로 사용자의 검출된 움직임에 기초하여 초기 디스플레이된 이미지의 초기 시야에 대한 시야 조정을 결정하도록 전자 안경류 디바이스(100)를 구성할 수 있다. 시야 조정은 연속적인 머리 방향 또는 연속적인 눈의 방향에 대응하는 연속적인 시야를 포함할 수 있다. 프로세서(332)에 의한 프로그래밍의 실행은 추가로 시야 조정에 기초하여 디스플레이된 이미지들의 시퀀스의 연속적인 디스플레이된 이미지를 생성하도록 전자 안경류 디바이스(100)를 구성할 수 있다. 프로세서(332)에 의한 프로그래밍의 실행은 추가로 광학 조립체(180A-B)의 시스루 이미지 디스플레이들(180C-D)을 통해 연속적으로 디스플레이된 이미지들을 제시하도록 전자 안경류 디바이스(100)를 구성한다.
[0037] 도 1b는 우측 가시광 카메라(114B), 머리 움직임 추적기(109) 및 회로 기판(140)을 묘사하는 도 1a의 전자 안경류 디바이스(100)의 템플의 최상부 단면도를 예시한다. 좌측 가시광 카메라(114A)의 구성 및 배치는 연결부들 및 결합이 좌측 측면 측(170A)(도 2a)에 있다는 점을 제외하고는 우측 가시광 카메라(114B)와 실질적으로 유사하다. 도시된 바와 같이, 전자 안경류 디바이스(100)는 우측 가시광 카메라(114B) 및 연성 인쇄 회로 기판(PCB)(140)일 수 있는 회로 기판을 포함한다. 우측 힌지(126B)는 우측 템플(110B)을 전자 안경류 디바이스(100)의 힌지 암(125B)에 연결한다. 일부 예들에서, 우측 가시광 카메라(114B), 연성 PCB(140) 또는 다른 전기 커넥터들 또는 접점들의 구성요소들은 우측 템플(110B) 또는 우측 힌지(126B)에 위치할 수 있다.
[0038] 도시된 바와 같이, 전자 안경류 디바이스(100)는 머리 움직임 추적기(109)를 포함할 수 있으며, 머리 움직임 추적기(109)는 예를 들어 관성 측정 유닛(IMU)을 포함한다. 관성 측정 유닛은 가속도계들 및 자이로스코프들, 때로는 자력계들도 포함한 조합을 사용하여 신체의 특정 힘, 각도 속도, 그리고 때로는 신체를 둘러싼 자기장을 측정하고 보고하는 전자 디바이스이다. 관성 측정 유닛은 하나 이상의 가속도계들을 사용하여 선형 가속도를 검출하고, 하나 이상의 자이로스코프들을 사용하여 회전 속도를 검출하는 방식으로 작동한다. 관성 측정 유닛들의 전형적인 구성들은 좌-우 움직임에 대한 수평축(X), 최상부-저부 움직임에 대한 수직축(Y), 상-하 움직임에 대한 깊이 또는 거리축(Z)의 세 축들 각각에 대해 축마다 가속도계, 자이로, 자력계가 하나씩 포함된다. 가속도계는 중력 벡터를 검출한다. 자력계는 방향 기준을 생성하는 나침반과 같이 자기장의 회전(예를 들어, 남쪽, 북쪽 등을 향함)을 정의한다. 3 개의 가속도계들은 위에서 정의된 수평축, 수직축 및 깊이축을 따라 가속도를 검출하며, 이는 지면, 전자 안경류 디바이스(100) 또는 전자 안경류 디바이스(100)를 착용하는 사용자를 기준으로 정의될 수 있다.
[0039] 전자 안경류 디바이스(100)는 머리 움직임 추적기(109)를 통해 사용자 머리의 머리 움직임을 추적함으로써 전자 안경류 디바이스(100) 사용자의 움직임을 검출할 수 있다. 머리 움직임은 이미지 디스플레이 상에 초기 디스플레이된 이미지가 제시되는 동안 초기 머리 방향으로부터 수평축, 수직축 또는 이들의 조합에 따른 머리 방향의 변화를 포함한다. 일 예에서, 머리 움직임 추적기(109)를 통해 사용자 머리의 머리 움직임을 추적하는 것은 관성 측정 유닛(109)을 통해 수평축(예를 들어, X 축), 수직축(예를 들어, Y 축) 또는 이들의 조합(예를 들어, 가로 또는 대각선 움직임) 상에서의 초기 머리 방향을 측정하는 것을 포함한다. 머리 움직임 추적기(109)를 통해, 사용자 머리의 머리 움직임을 추적하는 것은 관성 측정 유닛(109)을 통해 초기 디스플레이된 이미지가 제시되는 동안 수평축, 수직축 또는 이들의 조합 상에서의 연속적인 머리 방향을 측정하는 것을 더 포함한다.
[0040] 머리 움직임 추적기(109)를 통해 사용자 머리의 머리 움직임을 추적하는 것은, 초기 머리 방향 및 연속적인 머리 방향 모두에 기초하여 머리 방향의 변화를 결정하는 것을 더 포함할 수 있다. 전자 안경류 디바이스(100) 사용자의 움직임을 검출하는 것은, 머리 움직임 추적기(109)를 통해 사용자 머리의 머리 움직임을 추적하는 것에 대응하여, 머리 방향의 변화가 수평축, 수직축 또는 이들의 조합 상에서 편차 각도 임계값을 초과하는 지를 결정하는 것을 더 포함할 수 있다. 샘플 구성들에 있어서, 편차 각도 임계값은 약 3°내지 10°이다. 본 명세서에서 사용되는 바와 같이, 각도를 지칭할 때 "약"이라는 용어는 명시된 수량으로부터 ± 10 %를 의미한다.
[0041] 수평축을 따른 변화는 예를 들어, 3 차원 객체의 가시성을 숨기거나, 숨기지 않거나, 또는 다른 방식으로 조정함으로써, 캐릭터들, 비트모지들(Bitmojis), 애플리케이션 아이콘들 등과 같은 3 차원 객체들을 시야 안팎으로 슬라이드한다. 예를 들어 사용자가 위쪽을 바라볼 때 수직축을 따른 변화는, 일 예에서는 날씨 정보, 시간, 날짜, 캘린더 약속들 등을 디스플레이한다. 다른 예에서, 사용자가 수직축을 따라 아래쪽을 바라볼 때, 전자 안경류 디바이스(100)의 전원이 꺼질 수 있다.
[0042] 도 1b에 도시된 바와 같이, 우측 템플(110B)은 템플 본체(211) 및 템플 캡을 포함하며, 도 1b의 단면에서는 템플 캡이 생략되어 있다. 우측 템플(110B) 내부에 배치된 다양한 상호연결 회로 기판들, 예를 들어, PCB들 또는 연성 PCB들(140)은 우측 가시광 카메라(114B), 마이크(들)(130), 스피커(들)(132), 저전력 무선 회로(예를 들어, 블루투스(등록상표)를 통한 무선 근거리 네트워크 통신용) 및 고속 무선 회로(예를 들어, 와이파이(등록상표)를 통한 무선 로컬 영역 네트워크 통신용)를 포함한다.
[0043] 우측 가시광 카메라(114B)는 연성 PCB(140) 상에 결합되거나 배치되고, 우측 템플(110B)에 형성된 개구부(들)를 통해 조준되는 가시광 카메라 커버 렌즈에 의해 커버된다. 일부 예들에서, 우측 템플(110B)에 연결된 프레임(105)은 가시광 카메라 커버 렌즈용 개구부(들)를 포함한다. 프레임(105)은 사용자의 눈으로부터 외측을 향하도록 구성된 전방 지향 측을 포함할 수 있다. 가시광 카메라 커버 렌즈용 개구부는 전방 지향 측 상에서 이를 관통하여 형성될 수 있다. 예에서, 우측 가시광 카메라(114B)는 전자 안경류 디바이스(100) 사용자의 우측 눈의 시선 또는 관점에 대해 외측을 향하는 커버리지 각도(111B)를 갖는다. 가시광 카메라 커버 렌즈는 또한 외측을 향하는 커버리지 각도를 갖는 개구부가 형성되는 우측 템플(110B)의 외측 지향 표면에 부착될 수 있지만, 서로 다른 외측 방향으로 부착될 수 있다. 결합은 또한, 중간 구성요소들을 통해 간접적으로 이루어질 수 있다.
[0044] 좌측(제1) 가시광 카메라(114A)는 좌측 광학 조립체(180A)의 좌측 시스루 이미지 디스플레이(180C)에 연결되어, 제1 연속적으로 디스플레이된 이미지의 제1 배경 장면을 생성할 수 있다. 우측(제2) 가시광 카메라(114B)는 우측 광학 조립체(180B)의 우측 시스루 이미지 디스플레이(180D)에 연결되어 제2 연속적으로 디스플레이된 이미지의 제2 배경 장면을 생성할 수 있다. 제1 배경 장면 및 제2 배경 장면은 부분적으로 중첩되어 연속적으로 디스플레이된 이미지의 3 차원 관찰 가능 영역을 제시할 수 있다.
[0045] 연성 PCB(140)는 우측 템플(110B) 내부에 배치될 수 있고, 우측 템플(110B)에 수용된 하나 이상의 다른 구성요소들에 결합될 수 있다. 우측 템플(110B)의 회로 기판들(140) 상에 형성되는 것으로 도시되어 있지만, 우측 가시광 카메라(114B)는 좌측 템플(110A), 힌지 암들(125A-B) 또는 프레임(105)의 회로 기판들(140) 상에 형성될 수 있다.
[0046] 도 2a는 전자 안경류 디바이스(100)의 일 예의 하드웨어 구성의 배면도를 예시한다. 도 2a에 도시된 바와 같이, 전자 안경류 디바이스(100)는 사용자가 착용하도록 구성된 형태이며, 도 2a의 예에서는 안경이다. 전자 안경류 디바이스(100)는 다른 형태들을 취할 수 있는데, 예를 들어, 헤드기어, 헤드셋 또는 헬멧과 같은 다른 유형들의 프레임워크들을 통합할 수 있다.
[0047] 안경 예에서, 전자 안경류 디바이스(100)는 사용자의 코에 맞게 조정된 브리지(106)를 통해 우측 림(107B)에 연결된 좌측 림(107A)을 포함하는 프레임(105)을 포함한다. 좌측 및 우측 림들(107A-B)은 렌즈 및 시스루 디스플레이들(180C-D)과 같은 개개의 광학 요소(180A-B)를 보유지지하는 개개의 애퍼처들(175A-B)을 포함한다. 본 명세서에서 사용되는 바와 같이, 렌즈라는 용어는 광이 수렴/발산을 일으키거나 또는 수렴/발산을 거의 또는 전혀 일으키지 않는 곡면 및 평평한 표면들을 갖는 유리 또는 플라스틱의 투명 또는 반투명 부재들을 포함하고자 하는 의도를 갖는다.
[0048] 비록 2 개의 광학 요소들(180A-B)을 갖는 것으로 도시되어 있지만, 전자 안경류 디바이스(100)는 전자 안경류 디바이스(100)의 적용예 또는 의도된 사용자에 따라 단일 광학 요소와 같은 다른 배열체들을 포함할 수 있다. 추가로 도시된 바와 같이, 전자 안경류 디바이스(100)는 프레임(105)의 좌측 측면 측(170A)에 인접한 좌측 템플(110A) 및 프레임(105)의 우측 측면 측(170B)에 인접한 우측 템플(110B)을 포함한다. 템플들(110A-B)은 개개의 측면들(170A-B) 상의 프레임(105)에 통합(예시된 바와 같음)되거나, 또는 개개의 측면들(170A-B)의 프레임(105)에 부착된 별도의 구성요소들로 구현될 수 있다. 대안적으로, 템플들(110A-B)은 프레임(105)에 부착된 힌지 암들(125A-B)에 통합될 수 있다.
[0049] 도 2a의 예에서, 적외선 방출기(115) 및 적외선 카메라(120)를 포함하는 안구 스캐너(113)가 제공될 수 있다. 가시광 카메라들은 전형적으로 적외선 검출을 차단하기 위한 청색 광 필터를 포함한다. 일 예에서, 적외선 카메라(120)는 청색 필터가 제거된 저해상도 비디오 그래픽 어레이(VGA) 카메라(예를 들어, 총 0.3 메가픽셀용 640 x 480 픽셀들)와 같은 가시광 카메라이다. 적외선 방출기(115) 및 적외선 카메라(120)는 프레임(105) 상에 공동 배치될 수 있다. 예를 들어, 둘 다 좌측 림(107A)의 상부 부분에 연결된 것으로 도시된다. 프레임(105) 또는 좌측 및 우측 템플들(110A-B) 중 하나 이상은 적외선 방출기(115) 및 적외선 카메라(120)를 포함하는 회로 기판(도시되지 않음)을 포함할 수 있다. 적외선 방출기(115) 및 적외선 카메라(120)는 예를 들어, 납땜에 의해 회로 기판에 연결될 수 있다.
[0050] 적외선 방출기(115) 및 적외선 카메라(120)가 모두 우측 림(107B) 상에 있거나, 프레임(105) 상의 서로 다른 위치들에 있는 배열들을 포함하여, 적외선 방출기(115) 및 적외선 카메라(120)의 다른 배열들이 구현될 수 있다. 예를 들어, 적외선 방출기(115)가 좌측 림(107A) 상에 있을 수 있고, 적외선 카메라(120)가 우측 림(107B) 상에 있을 수 있다. 다른 예에서, 적외선 방출기(115)는 프레임(105) 상에 있을 수 있고, 적외선 카메라(120)는 템플들(110A-B) 중 하나에 있을 수 있으며, 그 반대의 경우도 가능하다. 적외선 방출기(115)는 본질적으로 프레임(105), 좌측 템플(110A) 또는 우측 템플(110B) 상의 임의의 위치에 연결되어 적외선의 패턴을 방출할 수 있다. 마찬가지로, 적외선 카메라(120)는 본질적으로 방출된 적외선의 패턴에서 적어도 하나의 반사 변화를 캡처하기 위해 프레임(105), 좌측 템플(110A) 또는 우측 템플(110B) 상의 임의의 위치에 연결될 수 있다.
[0051] 적외선 방출기(115) 및 적외선 카메라(120)는 개개의 눈 포지션 및 시선 방향을 식별하기 위해, 눈의 일부 또는 전체 시야로 사용자의 눈을 향해 내측을 향하도록 배열될 수 있다. 예를 들어, 적외선 방출기(115) 및 적외선 카메라(120)는 눈 바로 앞, 프레임(105)의 상부 또는 프레임(105)의 양쪽 단부들에 있는 템플들(110A-B)에 포지셔닝될 수 있다.
[0052] 도 2b는 다른 전자 안경류 디바이스(200)의 예시적인 하드웨어 구성의 배면도를 예시한다. 이 예시적인 구성에서, 전자 안경류 디바이스(200)는 우측 템플(210B) 상에 안구 스캐너(213)를 포함하는 것으로 묘사되어 있다. 도시된 바와 같이, 적외선 방출기(215) 및 적외선 카메라(220)가 우측 템플(210B) 상에 공동 배치된다. 안구 스캐너(213) 또는 안구 스캐너(213)의 하나 이상의 구성요소들은 좌측 템플(210A) 상에, 그리고 전자 안경류 디바이스(200)의 다른 위치들, 예를 들어 프레임(105) 상에 위치할 수 있다는 것을 이해해야 한다. 적외선 방출기(215) 및 적외선 카메라(220)는 도 2a의 것과 유사하지만, 안구 스캐너(213)는 앞서 도 2a에서 설명한 바와 같이 서로 다른 광 파장들에 민감하도록 변화될 수 있다. 도 2a와 유사하게, 전자 안경류 디바이스(200)는 브리지(106)를 통해 우측 림(107B)에 연결되는 좌측 림(107A)을 포함하는 프레임(105)을 포함한다. 좌측 및 우측 림들(107A-B)은 시스루 디스플레이(180C-D)를 포함하는 개개의 광학 요소들(180A-B)을 보유지지하는 개개의 애퍼처들을 포함할 수 있다.
[0053] 도 2c 내지 도 2d는 두 가지 서로 다른 유형들의 시스루 이미지 디스플레이들(180C-D)을 포함하는 전자 안경류 디바이스(100)의 예시적인 하드웨어 구성들의 배면도들을 예시한다. 일 예에서, 광학 조립체(180A-B)의 이러한 시스루 이미지 디스플레이들(180C-D)은 통합 이미지 디스플레이를 포함한다. 도 2c에 도시된 바와 같이, 광학 조립체들(180A-B)은 액정 디스플레이(LCD), 유기 발광 다이오드(OLED) 디스플레이, 도파관 디스플레이 또는 임의의 다른 이러한 디스플레이와 같은 임의의 적합한 유형의 적합한 디스플레이 매트릭스(180C-D)를 포함한다.
[0054] 광학 조립체(180A-B)는 또한, 렌즈들, 광학 코팅들, 프리즘들, 미러들, 도파관들, 광학 스트립들 및 임의의 조합의 다른 광학 구성요소들을 포함할 수 있는 광학 층 또는 층들(176)을 포함한다. 광학 층들(176A-N)은, 적절한 크기 및 구성을 갖고 디스플레이 매트릭스로부터 광을 수신하기 위한 제1 표면 및 사용자의 눈으로 광을 방출하기 위한 제2 표면을 포함하는 프리즘을 포함할 수 있다. 광학 층들(176A-N)의 프리즘은 사용자의 눈이 대응하는 좌측 및 우측 림들(107A-B)을 통해 볼 때 사용자가 프리즘의 제2 표면을 볼 수 있도록 좌측 및 우측 림들(107A-B)에 형성된 개개의 애퍼처들(175A-B)의 전부 또는 적어도 일부에 걸쳐 연장될 수 있다. 광학 층들(176A-N)의 프리즘의 제1 표면은 프레임(105)으로부터 상부로 향하고, 디스플레이 매트릭스는 프리즘을 덮어 디스플레이 매트릭스에 의해 방출된 광자들 및 광이 제1 표면과 충돌하도록 한다. 프리즘은 광이 프리즘 내에서 굴절되어 광학 층들(176A-N)의 프리즘의 제2 표면에 의해 사용자의 눈을 향하도록 크기 설정 및 형상화될 수 있다. 이와 관련하여, 광학 층들(176A-N)의 프리즘의 제2 표면은 볼록하여 광을 눈의 중앙으로 향하게 할 수 있다. 프리즘은 선택적으로, 시스루 이미지 디스플레이들(180C-D)에 의해 투사된 이미지를 확대하도록 크기 설정 및 형상화될 수 있고, 광은 프리즘을 통과하여 제2 표면에서 보이는 이미지가 시스루 이미지 디스플레이들(180C-D)로부터 방출되는 이미지보다 하나 이상의 치수들에서 더 커지도록 이동한다.
[0055] 다른 예에서, 광학 조립체(180A-B)의 시스루 이미지 디스플레이들(180C-D)은 도 2d에 도시된 바와 같이 투사 이미지 디스플레이를 포함할 수 있다. 광학 조립체(180A-B)는 프로젝터(150)를 포함하는데, 프로젝터는 스캐닝 미러, 검류계, 레이저 프로젝터 또는 다른 유형들의 프로젝터들을 사용하는 3 색 프로젝터일 수 있다. 작동 중에, 프로젝터(150)와 같은 광학 소스는 전자 안경류 디바이스(100)의 템플들(110A-B) 중 하나에 또는 그 위에 배치된다. 광학 조립체(180A-B)는 광학 조립체(180A-B)의 렌즈의 폭에 걸쳐 또는 렌즈의 전면 표면과 배면 표면 사이의 렌즈의 깊이에 걸쳐 이격된 하나 이상의 광학 스트립들(155A-N)을 포함할 수 있다.
[0056] 프로젝터(150)에 의해 투사된 광자들이 광학 조립체(180A-B)의 렌즈에 걸쳐 이동함에 따라, 광자들은 광학 스트립들(155A-N)과 마주친다. 특정 광자가 특정 광학 스트립을 만나면, 그 광자는 사용자의 눈 쪽으로 방향이 변경되거나 다음 광학 스트립으로 전달된다. 프로젝터(150)의 변조와 광학 스트립들의 변조의 조합은 특정 광자들 또는 광 빔들을 제어할 수 있다. 일 예로, 프로세서는 기계적, 음향 또는 전자기 신호들을 개시하여 광학 스트립들(155A-N)을 제어한다. 2 개의 광학 조립체들(180A-B)을 갖는 것으로 도시되어 있지만, 전자 안경류 디바이스(100)는 단일 또는 3 개의 광학 조립체들과 같은 다른 배열체들을 포함할 수 있거나, 광학 조립체(180A-B)는 전자 안경류 디바이스(100)의 적용예 또는 의도된 사용자에 따라 서로 다른 배열을 가질 수 있다.
[0057] 도 2c 내지 도 2d에 추가로 도시된 바와 같이, 전자 안경류 디바이스(100)는 프레임(105)의 좌측 측면 측(170A)에 인접한 좌측 템플(110A) 및 프레임(105)의 우측 측면 측(170B)에 인접한 우측 템플(110B)을 포함한다. 템플들(110A-B)은 개개의 측방 측면들(170A-B) 상의 프레임(105)에 통합(예시되는 바와 같음)되거나, 또는 개개의 측면들(170A-B)의 프레임(105)에 부착된 별도의 구성요소들로서 구현될 수 있다. 대안적으로, 템플들(110A-B)은 프레임(105)에 부착된 힌지 암들(125A-B)에 통합될 수 있다.
[0058] 일 예에서, 시스루 이미지 디스플레이들은 제1 시스루 이미지 디스플레이(180C) 및 제2 시스루 이미지 디스플레이(180D)를 포함한다. 전자 안경류 디바이스(100)는 개개의 제1 및 제2 광학 조립체(180A-B)를 보유지지하는 제1 및 제2 애퍼처들(175A-B)을 포함할 수 있다. 제1 광학 조립체(180A)는 제1 시스루 이미지 디스플레이(180C)(예를 들어, 도 2c의 디스플레이 매트릭스 또는 광학 스트립들 및 좌측 템플(110A) 내 프로젝터(도시되지 않음))를 포함할 수 있다. 제2 광학 조립체(180B)는 제2 시스루 이미지 디스플레이(180D)(예를 들어, 도 2c의 디스플레이 매트릭스 또는 광학 스트립들 및 우측 템플(110B) 내 프로젝터(150))를 포함할 수 있다. 연속적으로 디스플레이된 이미지의 연속 시야는 수평으로, 수직으로 또는 대각선으로 측정된 약 15° 내지 30°, 보다 구체적으로 24°의 시야각을 포함할 수 있다. 연속적인 시야를 갖는 연속적으로 디스플레이된 이미지는 제1 및 제2 이미지 디스플레이들 상에 제시된 2 개의 디스플레이된 이미지들을 함께 스티칭하여 볼 수 있는 결합된 3 차원 관찰 가능 영역을 나타낸다.
[0059] 본 명세서에서 사용되는 바와 같이, "시야각"은 광학 조립체(180A-B)의 좌측 및 우측 이미지 디스플레이들(180C-D) 각각에 제시된 디스플레이된 이미지들과 연관된 시야의 각도 범위를 나타낸다. "커버리지 각도"는 가시광 카메라들(114A-B) 또는 적외선 카메라(220)의 렌즈가 이미지화할 수 있는 각도 범위를 나타낸다. 전형적으로, 렌즈에 의해 생성되는 이미지 원은 필름 또는 센서를 완전히 덮을 수 있을 정도로 충분히 크며, 일부 비네팅(즉, 이미지 중앙에 비해 주변부로 갈수록 이미지의 밝기 또는 채도가 감소하는 현상)을 포함할 수 있다. 렌즈의 커버리지 각도가 센서를 완전히 채우지 못하면, 전형적으로 에지를 향해 강한 비네팅이 있는 이미지 원을 보게 될 것이고, 유효 시야각은 커버리지 각도로 제한된다. "시야"는 전자 안경류 디바이스(100)의 사용자가 광학 조립체(180A-B)의 좌측 및 우측 이미지 디스플레이들(180C-D) 상에 제시된 디스플레이된 이미지들을 통해 사용자의 눈들로 볼 수 있는 관찰 가능한 영역의 범위를 설명하기 위한 것이다. 광학 조립체(180A-B)의 이미지 디스플레이(180C)는 15° 내지 30°, 예를 들어 24°의 커버리지 각도를 갖는 시야를 가질 수 있고, 480 x 480 픽셀들의 해상도를 가질 수 있다.
[0060] 도 3은 전자 안경류 디바이스(100 또는 200)에 배치된 예시적인 전자 구성요소들을 포함하는 고수준의 기능 블록도를 예시한다. 예시된 전자 구성요소들은 프로세서(332), 메모리(334) 및 시스루 이미지 디스플레이(180C 및 180D)를 포함한다.
[0061] 메모리(334)는 결과적인 이미지에서의 제어를 위한 프로세서(332)의 명령어들을 포함하여, 전자 안경류 디바이스들(100 및 200)의 기능을 구현하기 위한 프로세서(332)에 의한 실행 명령어들을 포함한다. 프로세서(332)는 배터리(350)로부터 전력을 공급받고, 메모리(334)에 저장되거나 프로세서(332)에 온칩으로 통합된 명령어들을 실행하여 전자 안경류 디바이스들(100 및 200)의 기능을 수행하고, 무선 연결들을 통해 외부 디바이스들과 통신을 수행한다.
[0062] 전자 안경류 디바이스들(100 및 200)은 안구 움직임 추적기(예를 들어, 도 2b에서 적외선 방출기(215) 및 적외선 카메라(220)로서 도시됨)를 통합할 수 있고, 다양한 네트워크들을 통해 연결된 모바일 디바이스(390) 및 서버 시스템(398)을 통해 사용자 인터페이스 조정들을 제공할 수 있다. 모바일 디바이스(390)는 스마트폰, 태블릿, 랩톱 컴퓨터, 액세스 포인트 또는 저전력 무선 연결(low-power wireless connection)(325) 및 고속 무선 연결(high-speed wireless connection)(337)을 모두 사용하여 웨어러블 전자 안경류 디바이스들(100 및 200)과 연결할 수 있는 임의의 다른 디바이스일 수 있다. 모바일 디바이스(390)는 추가로 네트워크(395)를 통해 서버 시스템(398)에 연결된다. 네트워크(395)는 유선 및 무선 연결들의 임의의 조합을 포함할 수 있다.
[0063] 전자 안경류 디바이스들(100 및 200)은 적어도 2 개의 가시광 카메라들(114A-B)(하나는 좌측 측면 측(170A)과 연관되고, 하나는 우측 측면 측(170B)과 연관됨)을 포함할 수 있다. 전자 안경류 디바이스(100 및 200)는 광학 조립체(180A-B)의 2 개의 시스루 이미지 디스플레이들(180C-D)(하나는 좌측 측면 측(170A)과 연관되고, 하나는 우측 측면 측(170B)과 연관됨)을 더 포함한다. 전자 안경류 디바이스(100 및 200)는 이미지 디스플레이 드라이버(342), 이미지 프로세서(312), 저전력 회로(320) 및 고속 회로(330)를 더 포함한다. 도 3에 도시된 전자 안경류 디바이스들(100 및 200)에 대한 구성요소들은 템플들 내의 하나 이상의 회로 기판들, 예를 들어, PCB 또는 연성 PCB(140) 상에 위치한다. 대안적으로 또는 추가적으로, 묘사된 구성요소들은 전자 안경류 디바이스들(100 및 200)의 템플들, 프레임들, 힌지들, 힌지 암들 또는 브리지에 위치할 수 있다. 좌측 및 우측 가시광 카메라들(114A-B)은 상보성 금속 산화물 반도체(CMOS) 이미지 센서, 전하 결합 디바이스, 렌즈 또는 미지의 객체들이 있는 장면들의 이미지들을 포함하여, 데이터를 캡처하는 데 사용될 수 있는 임의의 다른 개개의 가시 또는 광 캡처 요소들과 같은 디지털 카메라 요소들을 포함할 수 있다.
[0064] 안구 움직임 추적 프로그래밍은 전자 안경류 디바이스들(100 또는 200)이 안구 움직임 추적기(213)를 통해 전자 안경류 디바이스들(100 또는 200)의 사용자 눈의 눈 움직임을 추적하도록 하는 명령어들을 포함하여, 사용자 인터페이스 시야 조정 명령어들을 구현한다. 다른 구현된 명령어들(기능들)은 전자 안경류 디바이스들(100 및 200)이 연속적인 눈 방향에 대응하는 사용자의 검출된 눈의 움직임에 기초하여 초기 FOV(111A-B)에 대한 FOV 조정을 결정하게 한다. 추가로 구현된 명령어들은 시야 조정에 기초하여 일련의 디스플레이된 이미지들의 연속적인 디스플레이된 이미지를 생성한다. 연속적으로 디스플레이된 이미지는 사용자 인터페이스를 통해 사용자에게 가시적 출력으로서 생성된다. 이러한 가시적 출력은 광학 조립체(180A-B)의 시스루 이미지 디스플레이들(180C-D) 상에 나타나며, 이미지 디스플레이 드라이버(342)에 의해 구동되어 초기 시야를 갖는 초기 디스플레이된 이미지 및 연속 시야를 갖는 연속 디스플레이된 이미지를 포함하는 디스플레이된 이미지들의 시퀀스를 제시한다.
[0065] 도 3에 도시된 바와 같이, 고속 회로(330)는 고속 프로세서(332), 메모리(334) 및 고속 무선 회로(336)를 포함한다. 예에서, 이미지 디스플레이 드라이버(342)는 고속 회로(330)에 결합되고 고속 프로세서(332)에 의해 작동되어 광학 조립체(180A-B)의 좌측 및 우측 이미지 디스플레이들(180C-D)을 구동한다. 고속 프로세서(332)는 웨어러블 전자 안경류 디바이스(100 또는 200)에 필요한 임의의 일반 컴퓨팅 시스템의 고속 통신들 및 작동을 관리할 수 있는 임의의 프로세서일 수 있다. 고속 프로세서(332)는 고속 무선 회로(336)를 사용하여 고속 무선 연결(337) 상에서 무선 로컬 영역 네트워크(WLAN)로의 고속 데이터 전송을 관리하는 데 필요한 프로세싱 리소스들을 포함한다. 특정 예들에서, 고속 프로세서(332)는 리눅스 운영 체제 또는 웨어러블 전자 안경류 디바이스(100 또는 200)의 다른 운영 체제와 같은 운영 체제를 실행하고, 운영 체제는 실행을 위해 메모리(334)에 저장된다. 임의의 다른 역할들 이외에, 웨어러블 전자 안경류 디바이스(100 또는 200)를 위한 소프트웨어 아키텍처를 실행하는 고속 프로세서(332)는 고속 무선 회로(336)와의 데이터 전송을 관리하는 데 사용된다. 특정 예들에서, 고속 무선 회로(336)는 본 명세서에서 와이파이(등록상표)로도 지칭되는 전기전자기술자협회(IEEE) 802.11 통신 표준들을 구현하도록 구성된다. 다른 예들에서, 다른 고속 통신 표준들은 고속 무선 회로(336)에 의해 구현될 수 있다.
[0066] 전자 안경류 디바이스들(100 및 200)의 저전력 무선 회로(324) 및 고속 무선 회로(336)는 단거리 트랜시버들(블루투스(등록상표)) 및 무선 광역, 로컬 또는 광역 네트워크 트랜시버들(예를 들어, 셀룰러 또는 와이파이(등록상표))을 포함할 수 있다. 저전력 무선 연결(325) 및 고속 무선 연결(337)을 통해 통신하는 트랜시버들을 포함하는 모바일 디바이스(390)는, 네트워크(395)의 다른 요소들과 마찬가지로, 웨어러블 전자 안경류 디바이스(100 및 200)의 아키텍처의 상세들을 사용하여 구현될 수 있다.
[0067] 메모리(334)는 다양한 데이터 및 애플리케이션들을 저장할 수 있는 임의의 저장 디바이스를 포함하며, 여기에는 특히, 컬러 맵들, 좌측 및 우측 가시광 카메라들(114A-B) 및 이미지 프로세서(312)에 의해 생성된 카메라 데이터 및 이미지 디스플레이 드라이버(342)에 의해 광학 조립체(180A-B)의 시스루 이미지 디스플레이들(180C-D) 상에 디스플레이하기 위해 생성된 이미지들이 포함될 수 있다. 메모리(334)가 고속 회로(330)와 통합된 것으로 도시되어 있지만, 다른 예들에서, 메모리(334)는 전자 안경류 디바이스(100 또는 200)의 독립적인 자립형 요소일 수 있다. 이러한 특정 예들에서, 전기 라우팅 라인들은 이미지 프로세서(312) 또는 저전력 프로세서(322)로부터 메모리(334)로의 고속 프로세서(332)를 포함하는 시스템 온 칩을 통한 연결을 제공할 수 있다. 다른 예들에서, 고속 프로세서(332)는 메모리(334)를 수반하는 읽기 또는 쓰기 동작이 필요할 때마다 저전력 프로세서(322)가 고속 프로세서(332)를 부팅할 수 있도록 메모리(334)의 어드레싱을 관리할 수 있다.
[0068] 서버 시스템(398)은 예를 들어, 네트워크(395)를 통해 모바일 디바이스(390) 및 전자 안경류 디바이스들(100 및 200)과 통신할 수 있는 프로세서, 메모리 및 네트워크 통신 인터페이스를 포함하는 서비스 또는 네트워크 컴퓨팅 시스템의 일부로서의 하나 이상의 컴퓨팅 디바이스들일 수 있다. 예를 들어, 전자 안경류 디바이스들(100 및 200)은 고속 무선 연결(337)을 통해 모바일 디바이스(390)와 페어링되거나, 네트워크(395)를 통해 서버 시스템(398)에 직접 페어링될 수 있다.
[0069] 전자 안경류 디바이스들(100 및 200)의 출력 구성요소들은 도 2c 내지 도 2d에 설명된 바와 같이 광학 조립체(180A-B)의 좌측 및 우측 이미지 디스플레이들(180C-D)과 같은 시각적 구성요소들(예를 들어, 액정 디스플레이(LCD), 플라스마 디스플레이 패널(PDP), 발광 다이오드(LED) 디스플레이, 프로젝터 또는 도파관과 같은 디스플레이)을 포함한다. 광학 조립체(180A-B)의 이미지 디스플레이들(180C-D)은 이미지 디스플레이 드라이버(342)에 의해 구동된다. 전자 안경류 디바이스들(100 및 200)의 출력 구성요소들은 음향 구성요소들(예를 들어, 스피커들), 햅틱 구성요소들(예를 들어, 진동 모터), 기타 신호 발생기들 등을 더 포함한다. 전자 안경류 디바이스들(100 및 200), 모바일 디바이스(390) 및 서버 시스템(398)의 입력 구성요소들은 영숫자 입력 구성요소들(예를 들어, 키보드, 영숫자 입력을 수신하도록 구성된 터치 스크린, 광-광학 키보드, 또는 다른 영숫자 입력 구성요소들), 포인트 기반 입력 구성요소들(예를 들어, 마우스, 터치 패드, 트랙볼, 조이스틱, 모션 센서, 또는 다른 포인팅 기구들), 촉각 입력 구성요소들(예를 들어, 물리적 버튼, 터치들 또는 터치 제스처들의 위치 및 힘을 제공하는 터치 스크린 또는 다른 촉각 입력 구성요소들), 오디오 입력 구성요소들(예를 들어, 마이크) 등을 포함할 수 있다.
[0070] 전자 안경류 디바이스들(100 및 200)은 선택적으로 주변 광 및 스펙트럼 센서들, 생체인식 센서들, 열 센서(340) 또는 전자 안경류 디바이스(100 또는 200)와 통합된 다른 디스플레이 요소들과 같은 추가적인 주변 디바이스 요소들을 포함할 수 있다. 예를 들어, 주변 디바이스 요소들은 출력 구성요소들, 모션 구성요소들, 포지션 구성요소들 또는 본 명세서에 설명된 임의의 다른 요소들을 포함하는 임의의 I/O 구성요소들을 포함할 수 있다. 전자 안경류 디바이스들(100 및 200)은 다른 형태들을 취할 수 있으며, 예를 들어, 헤드기어, 헤드셋 또는 헬멧과 같은 다른 유형들의 프레임워크들을 통합할 수 있다.
[0071] 예를 들어, 전자 안경류 디바이스들(100 및 200)의 생체인식 구성요소들은 표정들(예를 들어, 손 표정들, 얼굴 표정들, 음성 표정들, 신체 제스처들, 또는 시선 추적)을 검출하고, 생체 신호들(예를 들어, 혈압, 심박수, 체온, 땀 또는 뇌파들)을 측정하고, 사람을 식별(예를 들어, 음성 식별, 망막 식별, 안면 식별, 지문 식별 또는 뇌파 기반 식별)하는 등의 기능을 수행하는 구성요소들을 포함할 수 있다. 모션 구성요소들은 가속도 센서 구성요소들(예를 들어, 가속도계), 중력 센서 구성요소들, 회전 센서 구성요소들(예를 들어, 자이로스코프) 등을 포함한다. 포지션 구성요소들은 위치 좌표들을 생성하는 위치 센서 구성요소들(예를 들어, 글로벌 포지셔닝 시스템(GPS) 수신기 구성요소), 포지셔닝 시스템 좌표들을 생성하는 와이파이(등록상표) 또는 블루투스(등록상표) 트랜시버들, 고도 센서 구성요소들(예를 들어, 고도를 도출할 수 있는 기압을 검출하는 고도계들 또는 기압계들), 배향 센서 구성요소들(예를 들어, 자력계들) 등을 포함한다. 이러한 포지셔닝 시스템 좌표들은 또한 저전력 무선 회로(324) 또는 고속 무선 회로(336)를 거쳐 모바일 디바이스(390)로부터 무선 연결들(325 및 337)을 통해 수신될 수 있다.
[0072] 도 4는 예시적인 모바일 디바이스(390)의 고수준의 기능 블록도를 예시한다. 모바일 디바이스(390)는 모바일 디바이스(390)의 모든 기능들 또는 기능들의 서브세트를 수행하기 위해 CPU(410)에 의해 실행될 프로그래밍을 저장하는 플래시 메모리(405)를 포함할 수 있다. 모바일 디바이스(390)는 하나 이상의 가시광 카메라들(시야들이 겹치는 제1 및 제2 가시광 카메라들) 또는 실질적으로 겹치는 시야들을 갖는 적어도 하나의 가시광 카메라 및 깊이 센서를 포함하는 카메라(425)를 더 포함할 수 있다. 플래시 메모리(405)는 카메라(425)를 통해 생성되는 다수의 이미지들 또는 비디오를 더 포함할 수 있다.
[0073] 모바일 디바이스(390)는 이미지 디스플레이(430), 이미지 디스플레이(430)를 제어하기 위한 모바일 디스플레이 드라이버(435) 및 디스플레이 제어기(440)를 더 포함할 수 있다. 도 4의 예에서, 이미지 디스플레이(430)는 이미지 디스플레이(430)에 의해 사용되는 스크린의 최상부에 계층화되거나 스크린에 통합되는 사용자 입력 레이어(445)(예를 들어, 터치스크린)를 포함할 수 있다. 사용될 수 있는 터치스크린형 모바일 디바이스들의 예들로는 스마트폰, 개인 디지털 비서(PDA), 태블릿 컴퓨터, 랩톱 컴퓨터 또는 기타 휴대용 디바이스가 포함된다(그러나, 이에 제한되지 않음). 그러나, 터치스크린형 디바이스들의 구조 및 작동은 예시적으로 제공된 것으로서; 본 명세서에 설명된 바와 같은 대상 기술은 이에 제한되지 않는다. 따라서, 본 논의의 목적들을 위해, 도 4는 (손, 스타일러스 또는 다른 도구에 의한 터치, 다중 터치, 제스처 등에 의한) 입력을 수신하기 위한 터치스크린 입력 레이어(445) 및 콘텐츠를 디스플레이하기 위한 이미지 디스플레이(430)를 포함하는 사용자 인터페이스를 갖는 예시적인 모바일 디바이스(390)의 블록도 예시를 제공한다.
[0074] 도 4에 도시된 바와 같이, 모바일 디바이스(390)는 광역 무선 이동 통신 네트워크를 통한 디지털 무선 통신들을 위해, WWAN XCVR들로 도시된 적어도 하나의 디지털 트랜시버(XCVR)(450)를 포함할 수 있다. 모바일 디바이스(390)는 또한 예를 들어, NFC, VLC, DECT, 지그비, 블루투스(등록상표) 또는 와이파이(등록상표)를 통한 단거리 네트워크 통신을 위한 단거리 트랜시버들(XCVR들)(455)과 같은 추가적인 디지털 또는 아날로그 트랜시버들을 포함할 수 있다. 예를 들어, 단거리 XCVR들(455)은 IEEE 802.11에 따른 와이파이(등록상표) 표준들 중 하나와 같이 무선 로컬 영역 네트워크들에서 구현되는 하나 이상의 표준 통신 프로토콜들과 호환되는 유형의 임의의 이용 가능한 양방향 무선 로컬 영역 네트워크(WLAN) 트랜시버의 형태를 취할 수 있다.
[0075] 모바일 디바이스(390)의 포지셔닝을 위한 위치 좌표들을 생성하기 위해, 모바일 디바이스(390)는 글로벌 포지셔닝 시스템(GPS) 수신기를 더 포함할 수 있다. 대안적으로 또는 추가적으로, 모바일 디바이스(390)는 포지셔닝을 위한 위치 좌표들을 생성하기 위해 단거리 XCVR들(455) 및 WWAN XCVR들(450) 중 하나 또는 둘 모두를 활용할 수 있다. 예를 들어, 셀룰러 네트워크, 와이파이(등록상표) 또는 블루투스(등록상표) 기반 포지셔닝 시스템들은 특히 조합하여 사용될 때 매우 정확한 위치 좌표들을 생성할 수 있다. 이러한 위치 좌표들은 XCVR들(450, 455)을 거쳐 하나 이상의 네트워크 연결들을 통해 모바일 디바이스(390)로 전송될 수 있다.
[0076] 트랜시버들(450, 455)(즉, 네트워크 통신 인터페이스)은 현대 모바일 네트워크들에 의해 이용되는 다양한 디지털 무선 통신 표준들 중 하나 이상을 준수할 수 있다. WWAN 트랜시버들(450)의 예들로는, 예를 들어, 3GPP 타입 2(또는 3GPP2) 및 LTE(때때로 "4G"로 지칭됨)를 포함하는(그러나, 이에 제한되지 않음) 코드 분할 다중 액세스(CDMA) 및 3 세대 파트너십 프로젝트(3GPP) 네트워크 기술들에 따라 작동하도록 구성된 트랜시버들을 포함한다(그러나, 이에 제한되지 않음). 트랜시버들은 또한 "5G"로 지칭되는 광대역 셀룰러 네트워크 기술들을 통합할 수 있다. 예를 들어, 트랜시버들(450, 455)은 디지털화된 오디오 신호들, 정지 이미지 및 비디오 신호들, 디스플레이용 웹 페이지 정보뿐만 아니라 웹 관련 입력들 및 모바일 디바이스(390)로/로부터의 다양한 유형들의 모바일 메시지 통신들을 포함하는 정보의 양방향 무선 통신을 제공한다.
[0077] 모바일 디바이스(390)는 중앙 처리 장치(CPU)(410)로서 기능하는 마이크로프로세서를 더 포함할 수 있다. 프로세서는 하나 이상의 프로세싱 기능들, 전형적으로 다양한 데이터 프로세싱 기능들을 수행하도록 구조화되고 배열된 요소들을 갖는 회로이다. 개별 논리 구성요소들이 사용될 수 있지만, 예들에서는 프로그래밍 가능한 CPU를 형성하는 구성요소들을 활용한다. 예를 들어, 마이크로프로세서는 CPU(410)의 기능들을 수행하기 위해 전자 요소들을 통합하는 하나 이상의 집적 회로(IC) 칩들을 포함한다. 예를 들어, CPU(410)는 오늘날 모바일 디바이스들 및 기타 휴대용 전자 디바이스들에서 통상적으로 사용되는 것과 같이 ARM 아키텍처를 사용하는 축소 명령어 집합 컴퓨팅(RISC)과 같은 임의의 공지되거나 이용 가능한 마이크로프로세서 아키텍처에 기초할 수 있다. 물론, 프로세서 회로의 다른 배열들이 스마트폰, 랩탑 컴퓨터 및 태블릿에서 CPU(410) 또는 프로세서 하드웨어를 형성하는 데 사용될 수 있다.
[0078] CPU(410)는, 예를 들어 CPU(410)에 의해 실행 가능한 명령어들 또는 프로그래밍에 따라 다양한 동작들을 수행하도록 모바일 디바이스(390)를 구성함으로써, 모바일 디바이스(390)를 위한 프로그램 가능한 호스트 제어기로서 기능한다. 예를 들어, 그러한 동작들은 모바일 디바이스(390)의 다양한 일반 작업들뿐만 아니라, 본 명세서에 설명된 메모리들, 렌즈 및 스캔과 같은 특징부들을 포함하는 통신 애플리케이션을 위한 프로그래밍과 관련된 동작들을 포함할 수 있다. 프로세서는 하드와이어드 로직을 사용하여 구성될 수 있지만, 모바일 디바이스들의 전형적인 프로세서들은 프로그래밍의 실행에 의해 구성된 일반적인 프로세싱 회로들이다.
[0079] 모바일 디바이스(390)는 프로그래밍 및 데이터를 저장하기 위한 메모리 또는 저장 시스템을 더 포함한다. 도 4에 도시된 예에서, 메모리 시스템은 필요에 따라 플래시 메모리(405), 랜덤 액세스 메모리(RAM)(460) 및 다른 메모리 구성요소들(465)을 포함할 수 있다. RAM(460)은 CPU(410)에 의해 처리되는 명령어들 및 데이터를 위한 단기 저장소로서, 예를 들어, 작동 데이터 프로세싱 메모리(working data processing memory)로서 사용될 수 있다. 플래시 메모리(405)는 전형적으로 장기 저장소를 제공한다.
[0080] 따라서, 모바일 디바이스(390)의 예에서, 플래시 메모리(405)는 CPU(410)에 의한 실행을 위한 프로그래밍 또는 명령어들을 저장하는 데 사용될 수 있다. 디바이스의 유형에 따라, 모바일 디바이스(390)는 특정 애플리케이션들이 실행되는 모바일 운영 체제를 저장 및 실행한다. 모바일 운영 체제들의 예들로는 구글 안드로이드, 애플 iOS(아이폰 또는 아이패드 디바이스용), 윈도우즈 모바일, 아마존 파이어 OS, RIM 블랙베리 OS 등이 포함된다.
[0081] 마지막으로, 모바일 디바이스(390)는 마이크(도시되지 않음)를 통해 환경으로부터 오디오 신호들을 수신하고, 스피커(도시되지 않음)를 통해 오디오 출력을 제공할 수 있는 오디오 트랜시버(470)를 포함할 수 있다. 오디오 신호들은 모바일 디바이스(390)에 구현된 메시징 애플리케이션 또는 소셜 미디어 애플리케이션에 의해 비디오 신호들 및 기타 메시지들과 결합될 수 있다.
자동화된 테스팅 플랫폼
[0082] 상술한 이유들 때문에, 페어링 사용자 흐름들을 검증하고, 테스트에 약간의 수정들을 가하여 데이터 전송과 같은 다른 사용자 흐름들을 검증하기 위한 테스트 인프라가 요구된다. 또한, 테스트 인프라는 선택된 컴퓨팅 언어 및 운영 체제 환경에서 전자 안경류 디바이스와 같은 디바이스를 테스트할 수 있도록 하는 것이 바람직하다.
[0083] 기능 테스트 큐잉 및 관리를 위한 백엔드 서비스들을 포함하는 기존의 클라이언트 테스트 프레임워크들은 전형적으로 사용자 인터페이스 흐름들의 통신 애플리케이션에 의한 테스트를 허용한다. 본 명세서에 설명된 인프라는 페어링 사용자 흐름들뿐만 아니라 다른 흐름들의 유효성을 검사하기 위해 다수의 디바이스들을 테스트하기 위해 기존의 테스트 프레임워크들을 확장한다. 이러한 사용자 흐름들은, 예를 들어, 전자 안경류 디바이스의 상태를 관리하기 위한 메커니즘이 필요하다는 점에서 더욱 복잡하다.
[0084] 테스트 인프라의 샘플 구성에서, 펌웨어 및 운영 체제 코드는 전자 안경류 디바이스에 대한 저장소에 제공된다. 샘플 구성에서, 테스트 라이브러리는 저전력 무선 회로(324), 고속 무선 회로(336), 전력 측정들, 메트릭스 업로드 등에 대한 추상화(abstraction)를 제공하는 파이썬 패키지에 저장될 수 있다. 이 테스트 라이브러리는 예를 들어, 전자 안경류 디바이스(100) 및 모바일 디바이스(390)의 운영 체제 코드에 대한 모든 테스트 바인딩(test binding)들의 중앙 위치일 수 있다. 테스트 하네스는 파이썬으로 작성될 수 있고 테스트 로직은 샘플 구성에서 파이썬으로 작성될 수 있다. 실제로, 대부분의 테스트 로직은 셸 인터페이스를 통해 저전력 무선 회로(324)(예를 들어, 노르딕 UART 서비스 칩) 또는 고속 무선 회로(336)(예를 들어, 블루투스(등록상표) 센서 허브 칩)에 대한 호출들을 발동한다. 이러한 목적을 위해 게시되고 재사용될 수 있는 다수의 파이썬 패키지들이 있다. 특정 예에서, 본 명세서에 설명된 유형들의 모바일 디바이스(390)와 전자 안경류 디바이스(100)에 대한 페어링 흐름들은 테스트 인프라 상에서 사용자 인터페이스 테스트의 X코드 빌드를 포함할 수 있다. 페어링 흐름은 소프트웨어를 테스트하고 성공적인(또는 실패한) 페어링을 측정하기 위한 메트릭스를 제공할 것이다.
[0085] 전자 안경류 디바이스(100)를 지원하는 모바일 디바이스(390)의 통신 애플리케이션을 위한 펌웨어 및 운영 체제 코드는 모바일 디바이스(390)의 저장소, 특히 모바일 디바이스 저장소의 통신 애플리케이션 부분에 제공될 수 있다. 일 예에서, 테스트 하네스는 파이썬으로 작성될 수 있고, 테스트 로직은 자바 또는 코틀린 프로그래밍 언어들 중 적어도 하나로 작성될 수 있다. 코틀린 프로그래밍 언어는 표준 모바일 디바이스 운영 체제들(예를 들어, iOS 및 Android)의 주요 사용 사례들을 포함하여, 다수의 플랫폼들에서 네이티브 컴파일을 지원한다. 공유 네이티브 인터페이스는 코틀린 네이티브로 작성하여 많은 플랫폼들에서 공유할 수 있다. 당업자들은 애플리케이션 프로그래밍 인터페이스(API)의 일부로 블루투스(등록상표) 센서 허브 칩의 디바이스 상태를 조작할 수 있지만; 노르딕 UART 서비스 칩에 버튼 명령들을 쉽게 발행(issue)할 수 있는 방법은 없다는 점을 잘 알고 있을 것이다. 이하에서 설명되는 바와 같이, 테스트 시나리오들의 일부로서 노르딕 UART 서비스 칩에 자동화된 버튼 명령들을 발행하기 위한 다른 메커니즘이 제공된다.
[0086] 통신 애플리케이션을 위한 운영 체제 클라이언트에 대한 코드는 다른 저장소에 제공될 수 있다. 이 운영 체제 클라이언트는 테스트 서버와의 통신을 가능하게 한다. 통신 애플리케이션에 사용된 것과 동일한 테스트 하네스가 연관된 테스트 로직과 함께 사용될 수 있다. 샘플 테스트 구성에서 운영 체제 클라이언트용 코드는 범용 직렬 버스(USB)를 통해 테스트 서버에 연결된 모바일 디바이스에서 실행될 수 있다. 샘플 구성들에서, 테스트는 운영 체제 관점에서 페어링 및 전송 흐름들을 테스트할 수 있다.
[0087] 클라우드에서 통신 애플리케이션의 백엔드 서비스들을 위한 코드는 다양한 저장소들에서 제공될 수 있고, 다양한 언어들로 작성될 수 있다. 일부 시나리오들(예를 들어, 공중 무선 통신(OTA) 백엔드)에서는, 테스트 간 및 테스트 내 디바이스 상태 모두의 조작을 필요로 하는 다양한 네트워크 조건들 하에서 OTA 업데이트들을 테스트하는 것이 바람직할 수 있다.
[0088] 테스트 인프라를 위한 설계는 테스트 대상 디바이스와 관련된 모든 개발 팀들이 선호하는 작업 흐름을 사용하여 테스트를 타겟팅하고, 유지보수 비용들을 낮게 유지하면서 가능한 경우 기존 테스트 솔루션들을 재사용할 수 있도록 한다. 테스트 인프라에는 테스트 중 일반 디바이스 인터페이스에 사용되는 공유 크로스 플랫폼 클라이언트 라이브러리가 통합되어 있다. 클라이언트 라이브러리는 소프트웨어 스택의 여러 레이어들에 걸쳐 있을 수 있다. 샘플 구성에서, 자동화(또는 로컬) 머신에서 실행되는 서버는 펌웨어 테스트들 동안 사용될 전자 안경류 디바이스(100)의 기존 인터페이스에 대한 액세스를 제공하기 위해 노출(expose)된다. 공유 클라이언트는 C++ 또는 일부 다른 언어로 구현될 수 있으며, 모바일 디바이스의 운영 체제에서 서버에 접속할(hit) 수 있는 기능으로 소비될 수 있다. C++는 클라이언트들 간에 코드를 공유하는 데 적합하며 테스트 환경에서 바람직하다. 테스트 실행은 테스트 서버 범용 리소스 식별자(URI)를 포함하는 시스템 테스트들에 런타임 변수를 전달하도록 조정될 수 있다.
[0089] 샘플 구성에서, 테스트 서버의 클라이언트 라이브러리는 자동화 저장소에 제공된다. 이 클라이언트 라이브러리는 모든 자동화 작업자들에 걸쳐 배포되고 전자 안경류 디바이스의 테넌시를 위한 주요 진입 포인트(entry point)인 gRPC 서비스를 통해 전자 안경류 디바이스(100)의 저장소로부터 바인딩(bindings)들 및 기능(functionality)을 노출할 것이다. 본 명세서에서 사용되는 바와 같이, gRPC는 방법이 로컬 객체인 것처럼 테스트 서버에서 방법을 직접 호출할 수 있는 오픈 소스 원격 프로시저 호출(RPC) 프레임워크를 지칭한다. 테스트 서버는 사용자들이 테스트 대상 디바이스(DUT)에 명령들을 송신하고 응답을 받을 수 있는 인터페이스와 방법들을 구현한다. 클라이언트는 모바일 디바이스에서 실행되며 테스트 서버와 동일한 방법들을 제공하는 스텁(stub)을 가지고 있다. 이 클라이언트/서버 모델을 사용하면 모바일 디바이스 상에서 실행되는 클라이언트로부터 DUT에서 명령들을 실행하는 테스트 서버로 직접 명령을 송신하여 상태를 관리할 수 있다. 특히, 다른 노드에서 디바이스 상태를 관리하기 위한 네트워크 솔루션들의 경우, gRPC를 사용하는 것이 바람직하다.
[0090] 테스트 서버의 클라이언트는, 사용자가 테스트 서버에 접속하여 결과들을 구문 분석할 수 있도록 테스트 대상 디바이스에 설치되는 gRPC 클라이언트의 C++ 구현으로서 클라이언트 저장소에 유지될 수 있다. 통신 애플리케이션 및 모바일 디바이스 운영 체제 소프트웨어 저장소들은 테스트 컴파일에서 C++ 클라이언트를 가져오고(import) 호출하는 데 사용될 수 있으며, 이는 사용자가 테스트 대상 디바이스(예를 들어, 전자 안경류 디바이스(100))의 C++ 클라이언트로부터 테스트 서버의 gRPC 서버로 gRPC 호출들을 다시 발행할 수 있게 한다.
[0091] 또한, 백엔드를 통해 라우팅되는 테스트 작업들이 테스트 대상 디바이스에 런타임 파라미터들을 전달할 수 있도록 모바일 디바이스 테스트 하네스가 수정될 필요가 있을 수 있다. 모바일 디바이스 운영 체제 테스트들은 테스트 실행의 일부로서 환경 변수들을 전달하는 확립된 패턴을 갖는다.
[0092] 도 5는 모바일 디바이스(390)와 전자 안경류 디바이스(100)의 페어링을 위한 페어링 솔루션을 테스트하기 위한 샘플 테스트 구성을 예시한다. 테스트 구성은 모바일 디바이스 테스트 하네스(510)를 구현하고, 모바일 디바이스(390)의 통신 애플리케이션 실행을 위한 크로스 플랫폼 클라이언트 라이브러리 및 운영 체제(OS) 바인딩들(530)을 포함하는 파이썬 gRPC 서버(520)를 구현하는 테스트 서버(500)를 포함한다. 파이썬 gRPC 서버(520)의 크로스 플랫폼 클라이언트 라이브러리는 통신 애플리케이션의 일부로 구축되며, 테스트 프레임워크로부터 직접 gRPC 명령들이 발행될 수 있도록 RPC 호출들의 프록시로 기능한다. 대응하는 파이썬 gRPC 서버(520)는 전자 안경류 디바이스(100)에 바인딩되어 테스트 서버(500)에서 실행되며, 명령들을 실행하고 전자 안경류 디바이스(100)의 상태를 관리할 수 있도록 한다. 클라이언트 라이브러리는 또한 전자 안경류 디바이스(100)와 모바일 디바이스(390) 간의 페어링 흐름을 검증할 수 있는 다중 디바이스/플랫폼 테스트 인프라의 구현을 가능하게 한다. 샘플 구성들에서, 테스트 프레임워크의 주요 진입 포인트는 테스트 실행 중 모바일 디바이스 테스트 하네스(510)이다.
[0093] 디바이스 테스트 랩은 부착된 DUT들(예를 들어, 전자 안경류 디바이스(100))이 있는 다수의 테스트 리그들을 호스팅할 수 있기 때문에, 주변의 모든 DUT들이 또한 블루투스(등록상표) 페어링 프로세스 동안 자신들을 알릴 수 있기 때문에 RSSI 신호 강도가 문제가 될 수 있다. 테스트 환경에서, 이 문제는 전자 안경류 디바이스(100)를 분리하고 신뢰할 수 있는 신호 강도를 제공하도록 무선 주파수 간섭을 제거하기 위해 도 6에 도시된 바와 같이, 램지 RF 박스와 같은 무선 주파수(RF) 박스(600) 내에 페어링 리그를 배치함으로써 해결될 수 있다.
[0094] 도 6에 도시된 바와 같이, 테스트 인프라는 테스팅 소프트웨어 스택을 실행하고 테스트 실행이 모바일 디바이스(390)에서 타겟팅될 수 있도록 하는 테스트 서버(500)를 포함할 수 있다. 페어링을 위한 샘플 테스트에서, 모바일 디바이스(390)는 모바일 디바이스의 운영 체제의 페어링 테스트를 실행할 것이다. DUT가 도 1 내지 도 3과 관련하여 전술한 유형의 전자 안경류 디바이스(100)인 예에서, 하드와이어드 UART 직렬 인터페이스들을 통해 DUT를 충전 및 관리하기 위한 맞춤형 PCB(피카부스트(Pikaboost))(610)가 또한 제공될 수 있다. 예를 들어, 피카부스트(610)는 USB 또는 USBC 직렬 연결을 통해 전자 안경류 디바이스(100)의 저전력 무선 회로(324)(예를 들어, 노르딕 UART 서비스 칩) 또는 고속 무선 회로(336)(예를 들어, 블루투스(등록상표) 센서 허브 칩)에 맞춤형 직렬 바인딩들을 제공할 수 있다. 특히, 피카부스트(610)는 모바일 디바이스(390) 및 저전력 무선 회로(324) 칩 및 고속 무선 회로(336) 칩의 개개의 칩들 간에 gRPC 명령들이 전달될 수 있도록 개개의 하드웨어 통신 채널들(예를 들어, USB 직렬 채널들)을 제공할 수 있다. 샘플 구성에서, 피카부스트(610)는 두 하드웨어 채널들 ― 저전력 무선 회로(324)용으로 하나 및 고속 무선 회로(336)용으로 하나 ―로 gRPC 통신을 분할할 수 있다. 예를 들어, 피카부스트(610)는 통신 라인들을 분할하여 개개의 무선 회로 칩들에 직렬 통신들을 제공하고, 수신 시 명령들을 역직렬화하여 적절한 저레벨 gRPC 명령들이 개개의 칩들에 제공됨으로써, 페어링을 위해 테스트되는 디바이스들 사이의 통신 라우팅을 완전 자동화할 수 있는 UART 프로토콜을 테스트 중인 전자 안경류 디바이스(100)에 통신할 수 있다.
[0095] 테스트 인프라에 대한 샘플 페어링 흐름(700)이 도 7에 예시되어 있다. 예시된 바와 같이, 페어링 테스트는 모바일 디바이스(390)를 전자 안경류 디바이스(100)와 페어링하기 위해 702에서 시작된다. 자동화된 테스트 장치(500)는 모바일 디바이스(390) 상에서 실행되는 통신 애플리케이션에 로그인하고, 사용자 인터페이스 테스트는 전자 안경류 디바이스(100)의 설정들의 페이지로 이동하여 704에서 모바일 디바이스(390)와의 페어링을 개시한다. 자동화된 테스트 장치(500)는 전자 안경류 디바이스(100)를 새로운 디바이스와 페어링하도록 선택하고, 전자 안경류 디바이스(100)는 706에서 블루투스(등록상표)를 통해 공고를 시작한다. 마찬가지로, 모바일 디바이스(390)의 통신 애플리케이션은 블루투스(등록상표)를 통해 페어링할 전자 안경류 디바이스(100)를 찾는다. 708에서, 사용자 인터페이스(UI) 테스트는 테스트 환경의 전자 안경류 디바이스(DUT)(100) 상에서 실행되는 C++ 클라이언트를 사용하여 DUT(100)의 "버튼 누름" 명령을 실행한다. "버튼 누름" 명령은 일정 시간(예를 들어, 7 초) 동안 버튼을 누르는 것을 시뮬레이션하여, 블루투스(등록상표)를 통해 DUT(100)와 주변 모바일 디바이스(390)의 페어링을 개시한다. C++ 클라이언트는 모의 "버튼 누름"을 710에서 자동화된 테스트 장치(500)에 gRPC 명령으로 전송하고, 자동화된 테스트 장치(500)의 파이썬 gRPC 서버(520)는 712에서 gRPC 명령을 수신한다. 파이썬 gRPC 서버(520)는 714에서 "버튼 누름" 명령을 인식하여 DUT(100)의 해당 무선 회로 칩(예를 들어, 노르딕 UART 서비스 칩)에 송신하고, 716에서 모바일 디바이스(390)와 DUT(100) 간의 페어링 및 본딩 프로세스가 시작된다. 파이썬 gRPC 서버(520)는 "버튼 누름" 응답을 수신하고, 718에서 DUT(100) 상에서 실행되는 C++ 클라이언트에 gRPC 명령 형태로 응답을 송신한다. C++ 클라이언트는 응답을 수신하고, UI 테스트는 720에서 "성공적인" 페어링 또는 "실패한" 페어링을 나타내는 결과들을 확인한다.
[0096] 722에서 페어링이 성공한 것으로 판단되면, UI 테스트는 724에서 DUT(100)와 모바일 디바이스(390) 사이의 페어링 및 본딩이 확립되었음을 검증한다. 726에서 페어링 및 본딩이 성공한 것으로 판단되면, 728에서 테스트의 결과가 "합격"으로 표시된다. 그러나 722 또는 726에서 페어링이 실패한 것으로 판단되면, 테스트의 결과는 730에서 "실패"로 표시된다. "합격" 또는 "실패"의 경우 테스트 결과들이 732에 업로드되고 페어링 테스트는 734에서 종료된다. 일 예로, 테스트 결과들은 실패한 페어링들에 대해 임의의 오류들이 발생한 위치를 식별하는 오류 코드들을 포함할 수 있다.
[0097] 도 7에 예시된 페어링 흐름으로부터, 전자 안경류 디바이스(100)의 상태는 페어링 테스트의 일부로서 관리될 수 있음이 명백하다. 도 7의 예에서, 전자 안경류 디바이스(100)의 페어링 버튼은 블루투스(등록상표) 검색 및 본딩을 시작하기 위해 일정 시간(예를 들어, 7 초) 동안 전자 안경류 디바이스의 708에서 누를 필요가 있을 것이다. 그러나 이 버튼 누름은 테스트 프로세스의 자동화를 위해 사람의 조작 없이 수행해야 한다. 버튼 누름을 시뮬레이션하기 위한 샘플 코드는 아래 예시되는 것과 같이 gRPC 명령들을 사용하여 제공된다:
공유 C++ 라이브러리를 호출하는 객체 C 코드(아래 굵게 표시):
테스트 서버 코드:
이러한 명령들은 페어링 프로세스의 테스트가 테스트 인터페이스(위 예에서 "맨하탄")에 의해 완전히 자동화될 수 있도록 DUT(100)의 버튼 누름을 에뮬레이트한다.
[0098] 도 8은 파이썬 gRPC 서버(520)의 클라이언트 라이브러리에 통합된 전자 안경류 디바이스(100)의 펌웨어 저장소에 대한 통신 애플리케이션 운영 체제(OS)의 표준 펌웨어 테스트를 위한 샘플 구성의 주요 자동화 흐름을 예시한다. (1)에서, 테스팅 시스템(800)의 테스트 자동화 소프트웨어(810)(클라우드에 있을 수 있음)는 작업을 처리하여 테스팅 시스템(800)의 테스트 실행 플랫폼으로 디스패치한다. (2)에서, 테스트 실행 플랫폼은 파이썬 운영 체제 바인딩들(530)을 호출하여 테스트 대상 디바이스(DUT)(820)(이 경우 전자 안경류 디바이스(100)) 및 기타 하드웨어 주변 장치들(사용 가능한 경우)에 액세스한다. 샘플 구성들에서 테스트는 OS 바인딩들(530)이 DUT(820) 및 하드웨어 주변 장치들과 조정하는 일련의 단계들로 이루어진다. OS 바인딩들(530)은 DUT(820) 플래싱, 저전력 무선 회로(324)(예를 들어, 노르딕 UART 서비스 칩) 또는 고속 무선 회로(336)(예를 들어, 블루투스(등록상표) 센서 허브 칩)와의 통신, 전원 장비(830) 액세스, 메트릭스 업로드 및 다양한 기타 기능에 대한 추상화를 제공한다.
[0099] 도 9a는 테스트 실행 플랫폼이 테스트 대상 모듈로서 DUT(820)(예를 들어, 전자 안경류 디바이스(100))를 위한 전자 안경류 앱(920)을 포함하는 샘플 구성에서 수정된 자동화 흐름을 예시하고 있다. 이 경우, 테스팅 시스템(900)으로부터의 진입 포인트는 테스트 실행 플랫폼(910)이다. (1)에서, 테스트 실행 플랫폼(910)은 파이썬 서버(520)가 실행 중인지 확인하고, URI(IP 및 포트)를 저장하고, 이 정보를 (2)에서 DUT(820)로 전달하는 역할을 담당한다. DUT(820)의 안경류 앱(920)은 C++ 클라이언트(930)를 올바르게 인스턴스화하고 파이썬 서버(520)와 통신하기 위해 C++ 클라이언트(930)에 C++ 라이브러리를 포함하도록 구성된다. (3)에서, 파이썬 서버(520)는 도 8의 예시에서의 OS 흐름과 동일한 파이썬 OS 바인딩들(530)을 노출한다. DUT(820)의 전자 안경류 앱(920)은 저전력 무선 회로(324)(예를 들어, 노르딕 UART 서비스 칩) 또는 고속 무선 회로(336)(블루투스(등록상표) 센서 허브 칩)의 디바이스 인터페이스들을 사용하여 DUT(820)의 상태를 조작할 수 있지만; DUT(820)의 전자 안경류 앱(920)은 다른 주변 디바이스들과 통신하고, 데이터 흐름을 캡처하기 전에 전류를 측정하기 위해 (4)의 전력 장비(830)와 같은 일부 모듈들에 크게 의존할 수 있다.
[0100] 도 9b는 테스트 대상 모듈(820)로서 모바일 디바이스의 통신 애플리케이션을 포함하는 샘플 구성에서의 자동화 흐름을 예시한다. 전자 안경류 디바이스(100)의 전자 안경류 앱(920)을 테스트하기 위한 도 9a의 흐름과 마찬가지로, 테스팅 시스템(900)으로의 (1)의 진입 포인트는 테스트 실행 플랫폼(910)이며, 동일한 임무를 수행한다. 전자 안경류 디바이스(100)의 전자 안경류 앱(920)을 테스트하기 위한 도 9a의 흐름과 마찬가지로, C++ 클라이언트(940)는 모바일 디바이스(390)에 포함되어 (2)에서 테스트에 컴파일되고, (3)에서 파이썬 서버(520)와 다시 통신하게 된다. 모바일 디바이스 통신 앱과 전자 안경류 디바이스(100)의 주요 흐름은 페어링이며, 이는 두 디바이스들이 적절한 시간에 적절한 상태에 있어야 한다는 전적인 의존성을 갖는다. 이 시나리오에서는 전자 안경류 디바이스(100)에 대한 OS 바인딩들(530)을 사용하는 전체 인터페이스가 사용된다. C++ 클라이언트(940)는 (4)에서 저전력 무선 회로(324)(예를 들어, 노르딕 UART 서비스 칩) 또는 고속 무선 회로(336)(예를 들어, 블루투스(등록상표) 센서 허브 칩)의 상태와 메트릭 파싱 및 전력 측정 장비(830)를 사용한 전력 측정을 결정하기 위해 gRPC 명령을 전송한다. 이러한 측정들은 통신 애플리케이션의 작동의 전체적인 검증의 일부로서 실행 및 평가될 수 있는 모든 차원들이다.
[0101] 이러한 구성들은 서로 다른 코드 베이스들(예를 들어, 통신 애플리케이션 및 전자 안경류 디바이스)을 가진 서로 다른 개발 팀들이 테스트 목적들로 간단한 gRPC 명령들을 송신하기 위한 일반화된 인터페이스를 제공할 수 있도록 허용한다는 것을 알 수 있을 것이다. 테스트 로직은 테스트 성공 여부를 나타내는 반환 코드들이 있는 셸 인터페이스를 통해 저전력 무선 회로(324)(예를 들어, 노르딕 UART 서비스 칩) 또는 고속 무선 회로(336)(예를 들어, 블루투스(등록상표) 센서 허브 칩)로의 호출을 발동할 수 있다.
테스트 실행 흐름
[0102] 테스트 실행 플랫폼(910)은 기능 테스트 프레임워크로서 페어링 흐름을 실행하기 위한 테스트 러너를 구현할 수 있다. 테스트 작업들은 페어링 테스트를 생성하기 위한 명령들을 수신하도록 구성된 테스팅 시스템(900)을 사용하여 페어링 리그로 라우팅될 수 있다. 테스팅 시스템(900)은 모바일 디바이스(390)의 최신 운영 체제 마스터에 대한 페어링 테스트를 개시하며, 12 시간 동안 실행된다. 테스팅 시스템(900)은 페어링 테스트를 위한 작업을 선택하고 페어링 흐름을 실행하기 위한 테스트 러너를 시작한다. 테스트 실행 플랫폼(910)은 모바일 디바이스(390)에 대한 최신 운영 체제 마스터를 다운로드하고 클라우드 저장소 버킷으로부터 테스트 아티팩트를 빌드한다. 테스트 빌드는 모바일 디바이스(390)로 다운로드되고, 테스트 서버(520)는 모바일 디바이스(390) 및 전자 안경류 디바이스(100)에 대해 알려진 빌드에 대해 전자 안경류 디바이스(100)의 최신 버전의 펌웨어를 가져오기 위해 시작된다. 또한, 테스트 서버(520)는 통신 애플리케이션을 실행하는 운영 체제의 최신 마스터를 다운로드하고, 전자 안경류 디바이스(100)를 부팅하여, 저전력 무선 회로(324)(예를 들어, 노르딕 UART 서비스 칩) 및 고속 무선 회로(336)(예를 들어, 블루투스(등록상표) 센서 허브 칩)를 시작하여 gRPC 명령들을 수신하기 시작한다. 서버(520)는 통신 애플리케이션의 최신 마스터로 저전력 무선 회로(324) 및 고속 무선 회로(336)를 플래싱하고, 개발자 모드에서 설정 명령들(예를 들어, adb 대기-디바이스 루트, 비활성화-버티 및 재부팅 명령들을 로딩)을 전송하여 테스트를 위한 고속 무선 회로(336)를 구성하고, 고속 무선 회로가 완전히 부팅되도록 한다. 테스트 실행 플랫폼(910)은 모바일 디바이스(390)에 최신 운영 체제 마스터를 설치하고, 모바일 디바이스(390)에서 페어링 테스트 실행을 위한 빌드를 설치하여 페어링 테스트를 실행한다(예를 들어, 무 빌딩 엑스코드빌드 테스트(xcodebuild test-without-building)).
[0103] 페어링 테스트 동안, 테스트 대상 디바이스(820)에 로딩된 C++ 클라이언트를 이용하여 파이썬 서버(520)로 '모의_버튼' 명령이 송신된다. 전술한 바와 같이, 모의 버튼 명령은 전자 안경류 디바이스(100)에 의해 페어링 프로세스를 시작하는 데 사용되는 버튼 누름을 에뮬레이트하기 위해 gRPC 명령들을 사용하여 생성된다. 해당 gRPC 명령은 전자 안경류 디바이스(100)의 펌웨어와 통신하는 OS 바인딩들(530)로부터의 바인더 RPC 명령을 통해 모바일 디바이스(390)로부터 전자 안경류 디바이스(100)에 송신된다. 테스트 실행 플랫폼(910)은 통신 애플리케이션에 대한 사용자 인터페이스 테스트를 업로드하고 로그에서 결과들을 측정한다. 파이썬 서버(520)는 종료 프로세스의 일부로 고속 무선 회로(336)를 종료하고, 테스팅 시스템(900)은 다음 작업을 대기한다. 페어링 성공률이 설정된 임계값(예를 들어, 페어링 성공률 80 %)보다 큰 경우 이메일 알림이 생성되고 성공 티켓이 생성된다. 페어링 성공률은 전자 안경류 디바이스(100)와 통신 애플리케이션의 서로 다른 빌드들 간의 페어링을 추적하기 위한 핵심 성과 지표로서 추적될 수 있다.
[0104] 도 10은 샘플 구성에서의 테스트 실행 흐름의 흐름도를 예시한다. 도 10에서, 테스트 실행 흐름은 모바일 디바이스와 전자 안경류 디바이스와 같은 테스트 대상 디바이스 사이의 페어링 테스트를 제공하기 위한 흐름도이다. 테스트 실행 흐름은 페어링 테스트들 외에 다른 테스트 상호작용들을 위한 것일 수 있음을 이해할 수 있을 것이다. 예를 들어, 테스트 실행 흐름은 또한 디바이스들 간의 데이터 전송들을 테스트할 수 있다.
[0105] 도 10에 예시된 바와 같이, 테스트 실행 흐름(1000)은 1010에서 테스트 서버(500)에 모바일 디바이스(390)의 운영 체제 마스터 및 테스트 대상 디바이스(100)에서 통신 애플리케이션을 실행하는 운영 체제 버전을 다운로드하는 것으로 시작된다. 1020에서, 테스트 대상 디바이스(100)가 부팅되어 테스트 대상 디바이스(100)의 적어도 하나의 무선 회로에서 원격 프로시저 호출 명령들을 수신하기 시작한다. 1030에서, 원격 프로시저 호출 명령들은 모바일 디바이스(390)와 테스트 대상 디바이스(100) 사이의 테스트를 생성하기 위해 실행된다. 샘플 구성에서, 원격 프로시저 호출 명령들은 모바일 디바이스(390)와 테스트 대상 디바이스(100) 사이의 페어링 테스트를 생성하도록 구성되고, 모바일 디바이스(390)와 테스트 대상 디바이스(100) 사이의 상호작용들을 개시하기 위한 사용자 활동을 에뮬레이트하도록 구성된 명령들을 포함한다. 예를 들어, 원격 프로시저 호출 명령들은 페어링 프로세스를 개시하기 위해 모바일 디바이스(390) 또는 테스트 대상 디바이스(100) 중 적어도 하나로부터의 버튼 누름 명령을 에뮬레이트하도록 구성된 명령들을 포함할 수 있다. 전술한 바와 같이, 테스트 서버(500)의 사용자 인터페이스는 테스트 대상 디바이스(100)에 로딩된 클라이언트 프로그램(예를 들어, C++ 클라이언트(930), 도 9a)을 사용하여 버튼 누름 명령을 에뮬레이트하기 위한 명령들을 실행하도록 구성될 수 있다. 테스트 서버(500)는 에뮬레이트된 버튼 누름 명령을 테스트 대상 디바이스에 송신하여 모바일 디바이스와 테스트 대상 디바이스 사이의 페어링을 개시하고, 테스트 대상 디바이스로부터 에뮬레이트된 버튼 누름 명령에 대한 응답을 수신하고, 그 응답을 테스트 대상 디바이스에 로딩된 클라이언트 프로그램에 송신할 수 있다. 1040에서, 에뮬레이트된 사용자 활동에 의해 개시되는 상호작용들의 결과들(예를 들어, 성공적인 페어링의 백분율)이 측정된다.
[0106] 당업자들은 플랫폼(자바/코틀린 또는 객체 지향-C) 테스트 레이어 또는 공유 테스트 러너(테스트 인프라) 레이어에서 테스트 인프라의 일부로서 테스트 인터페이스를 롤아웃하는 것이 가능하다는 것을 인식할 것이다. 플랫폼에서 구현하면 팀 소유권을 높일 수 있으며(엔지니어가 매일 접하는 코드베이스에 로직이 존재함) 플랫폼에 익숙하기 때문에 구현하기가 더 쉽다는 이점이 있다. 또한, 테스트 대상인 모든 디바이스들은 피카부스트(610)에서 USB를 통해 호스트 머신에 연결할 수 있으므로(도 6), USB를 사용하여 호스트 머신과 다시 통신할 수 있는 것을 생각할 수 있다. 리브유에스비(libusb)와 같은 제3 자 라이브러리도 C++ 클라이언트와 통합될 수 있으며 다양한 플랫폼들에서 지원된다. 그러나 전자 안경류 디바이스의 운영 체제를 통해 호스트 머신으로 다시 명령들을 발행하는 것은 지원되는 작업 흐름이 아니므로 명령들의 포워딩을 관리하기 위해 플랫폼별로 구현해야 할 가능성이 있다. 또한, 호스트 머신으로 명령들을 다시 포워딩하기 위해서는, 호스트 머신에서 명령들을 가로채서 실행하기 위한 일부 프로세스가 여전히 필요할 수 있다.
시스템 구성
[0107] 본 명세서에 설명된 기술들은 본 명세서에 설명된 컴퓨터 시스템들 중 하나 이상 또는 하나 이상의 다른 시스템들과 함께 사용될 수 있다. 예를 들어, 본 명세서에 설명된 다양한 절차들은 하드웨어 또는 소프트웨어, 또는 이 둘의 조합으로 구현될 수 있다. 예를 들어, 아래에 설명되는 프로세서, 메모리, 저장부, 출력 디바이스(들), 입력 디바이스(들) 또는 통신 연결들 중 적어도 하나는 각각 하나 이상의 하드웨어 구성요소들의 적어도 일부일 수 있다. 전용 하드웨어 로직 구성요소들은 본 명세서에 설명된 기술들 중 하나 이상의 적어도 일부를 구현하도록 구성될 수 있다. 예를 들어, 이러한 하드웨어 논리 구성요소들은 필드 프로그래머블 게이트 어레이들(FPGA들), 프로그램 특정 집적 회로들(ASIC들), 프로그램 특정 표준 제품들(ASSP들), 시스템 온 칩 시스템들(SOC들), 복합 프로그래머블 논리 소자들(CPLD들) 등을 포함할 수 있다(그러나, 이에 제한되지 않음). 다양한 양상들의 장치들 및 시스템들을 포함할 수 있는 적용예들에는 다양한 전자 및 컴퓨터 시스템들이 광범위하게 포함될 수 있다. 기술들은 모듈들 사이 및 모듈들을 통해 연통할 수 있는 관련 제어 및 데이터 신호들이 있는 둘 이상의 특정 상호연결 하드웨어 모듈들 또는 디바이스들을 사용하여 구현하거나, 주문형 집적 회로의 일부들로서 구현할 수 있다. 또한, 본 명세서에 설명된 기술들은 컴퓨터 시스템에 의해 실행 가능한 소프트웨어 프로그램들에 의해 구현될 수 있다. 일 예로서, 구현예들은 분산 처리, 구성요소/객체 분산 처리 및 병렬 처리가 포함될 수 있다. 또한, 가상 컴퓨터 시스템 처리는 본 명세서에 설명된 바와 같이, 기술들 또는 기능들 중 어느 하나 이상을 구현하도록 구성될 수 있다.
[0108] 예로서, 도 11은 본 명세서에 설명된 시스템들 및 방법들에 따라 자동화된 테스팅 플랫폼을 구현하도록 구성된 컴퓨터 시스템(1100)의 샘플 구성을 예시한다. 특히, 도 11은 하나 이상의 구성들이 구현될 수 있는 기계(1100)의 일 예의 구성의 블록도를 예시한다. 대안적인 구성들에서, 기계(1100)는 독립형 디바이스로서 작동하거나 다른 기계들에 연결(예를 들어, 네트워크로 연결)될 수 있다. 네트워크 배치에서, 기계(1100)는 서버-클라이언트 네트워크 환경들에서 서버 기계, 클라이언트 기계 또는 이들 둘 모두의 용량으로 작동할 수 있다. 일 예로, 기계(1100)는 피어-투-피어(P2P)(또는 다른 분산) 네트워크 환경에서 피어 기계로 작동할 수 있다. 샘플 구성들에서, 기계(1100)는 개인용 컴퓨터(PC), 태블릿 PC, 셋톱 박스(STB), 개인 디지털 비서(PDA), 휴대 전화, 스마트폰, 웹 어플라이언스, 서버, 네트워크 라우터, 스위치 또는 브리지 또는 해당 기계에 의해 수행될 동작들을 지정하는 명령어들을 (순차적으로 또는 다른 방식으로) 실행할 수 있는 임의의 기계일 수 있다. 예를 들어, 기계(1100)는 통신 시스템의 워크스테이션, 프론트-엔드 서버, 또는 백-엔드 서버 역할을 할 수 있다. 기계(1100)는 본 명세서에 설명된 바와 같이 생성된 봇(bot)들을 구현하는 데 사용되는 소프트웨어를 실행하여 본 명세서에 설명된 방법들을 구현할 수 있다. 또한, 단일 기계(1100)만 예시되어 있지만, "기계"이라는 용어는 또한, 클라우드 컴퓨팅, 서비스형 소프트웨어(SaaS), 기타 컴퓨터 클러스터 구성들과 같이 본 명세서에 논의된 방법론들 중 임의의 하나 이상을 수행하기 위한 명령어들의 세트(또는 복수의 세트들)를 개별적으로 또는 공동으로 실행하는 기계들의 임의의 모음을 포함하는 것으로 간주되어야 한다.
[0109] 본 명세서에 설명된 바와 같이, 예들은 프로세서들, 로직 또는 다수의 구성요소들, 모듈들, 또는 메커니즘들(이하, "모듈들")을 포함할 수 있거나 또는 이들 상에서 동작할 수 있다. 모듈들은 지정된 작업들을 수행할 수 있는 유형의 실체들(예를 들어, 하드웨어)이며 특정 방식으로 구성 또는 배열될 수 있다. 일 예에서, 회로들은 모듈로서 지정된 방식으로 (예를 들어, 내부적으로 또는 다른 회로들과 같은 외부 실체들과 관련하여) 배열될 수 있다. 일 예에서, 하나 이상의 컴퓨터 시스템들(예를 들어, 독립형, 클라이언트 또는 서버 컴퓨터 시스템) 또는 하나 이상의 하드웨어 프로세서들의 전체 또는 일부는 지정된 작업들을 수행하도록 작동하는 모듈로서 펌웨어 또는 소프트웨어(예를 들어, 명령어들, 적용예 일부 또는 적용예)에 의해 구성될 수 있다. 일 예로, 소프트웨어는 기계 판독가능 매체에 상주할 수 있다. 소프트웨어는, 모듈의 기본 하드웨어에 의해 실행될 때, 하드웨어가 지정된 작업들을 수행하게 한다.
[0110] 따라서, "모듈"이라는 용어는 유형의 하드웨어 또는 소프트웨어 실체 중 적어도 하나를 포함하는 것으로 이해되며, 물리적으로 구성되거나, 구체적으로 구성(예를 들어, 하드와이어링) 또는 일시적으로(예를 들어, 임시적으로) 구성(예를 들어, 프로그래밍)되어 지정된 방식으로 작동하거나 본 명세서에 설명된 작동의 일부 또는 전부를 수행하도록 구성되는 실체가 된다. 모듈들이 일시적으로 구성되는 예들을 고려할 때, 모듈들 각각은 어느 한 순간에 인스턴스화될 필요는 없다. 예를 들어, 모듈들이 소프트웨어를 사용하여 구성된 범용 하드웨어 프로세서를 포함하는 경우, 범용 하드웨어 프로세서는 서로 다른 시간들에 개개의 서로 다른 모듈들로 구성될 수 있다. 따라서, 소프트웨어는, 예를 들어, 한 인스턴스에서 특정 모듈을 구성하고 서로 다른 인스턴스에서 서로 다른 모듈을 구성하도록 하드웨어 프로세서를 구성할 수 있다.
[0111] 기계(예를 들어, 컴퓨터 시스템)(1100)는 하드웨어 프로세서(1102)(예를 들어, 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 하드웨어 프로세서 코어 또는 이들의 임의의 조합), 메인 메모리(1104) 및 정적 메모리(1106)를 포함할 수 있으며, 이들의 일부 또는 전부가 인터링크(예를 들어, 버스)(1108)를 통해 서로 연통할 수 있다. 기계(1100)는 디스플레이 유닛(1110)(비디오 디스플레이로서 도시됨), 영숫자 입력 디바이스(1112)(예를 들어, 키보드) 및 사용자 인터페이스(UI) 내비게이션 디바이스(navigation device)(1114)(예를 들어, 마우스)를 더 포함할 수 있다. 일 예에서, 디스플레이 유닛(1110), 입력 디바이스(1112) 및 UI 내비게이션 디바이스(1114)는 터치 스크린 디스플레이일 수 있다. 기계(1100)는 대용량 저장 디바이스(예를 들어, 구동 유닛)(1116), 신호 생성 디바이스(1118)(예를 들어, 스피커), 네트워크 인터페이스 디바이스(1120) 및 하나 이상의 센서들(1122)을 추가적으로 포함할 수 있다. 예시적인 센서들(1122)은 위성 위치 확인 시스템(GPS) 센서, 나침반, 가속도계, 온도, 조명, 카메라, 비디오 카메라, 물리적 상태들 또는 포지션들의 센서들, 압력 센서들, 지문 센서들, 망막 스캐너들 또는 다른 센서들 중 하나 이상을 포함한다. 기계(1100)는 하나 이상의 주변 디바이스들(예를 들어, 프린터, 카드 리더기 등)과 연통하거나 이들을 제어하기 위한 직렬(예를 들어, 범용 직렬 버스(USB)), 병렬 또는 기타 유선 또는 무선(예를 들어, 적외선(IR), 근거리 통신(NFC) 등) 연결과 같은 출력 제어기(1124)를 포함할 수 있다.
[0112] 대용량 저장 디바이스(1116)는, 본 명세서에 설명된 기술들 또는 기능들 중 임의의 하나 이상에 의해 구현되거나 활용되는 데이터 구조들 또는 명령어들(1128)(예를 들어, 소프트웨어)의 하나 이상의 세트들이 저장되는 기계 판독가능 매체(1126)를 포함할 수 있다. 명령어들(1128)은 또한 기계(1100)에 의해 실행되는 동안 메인 메모리(1104), 정적 메모리(1106) 또는 하드웨어 프로세서(1102) 내에 완전히 또는 적어도 부분적으로 존재할 수 있다. 일 예에서, 하드웨어 프로세서(1102), 메인 메모리(1104), 정적 메모리(1106) 또는 대용량 저장 디바이스(1116) 중 하나 또는 임의의 조합은 기계 판독가능 매체를 구성할 수 있다.
[0113] 기계 판독가능 매체(1126)는 단일 매체로서 예시되어 있지만, "기계 판독가능 매체"라는 용어는 하나 이상의 명령어들(1128)을 저장하도록 구성된 단일 매체 또는 복수의 매체들(예를 들어, 중앙 집중식 또는 분산식 데이터베이스 또는 연관된 캐시들 및 서버들 중 적어도 하나)을 포함할 수 있다. "기계 판독가능 매체"라는 용어는 기계(1100)에 의한 실행을 위한 명령어들을 저장, 인코딩 또는 운반할 수 있고, 기계(1100)가 본 개시내용의 기술들 중 어느 하나 이상을 수행하게 하거나, 그러한 명령어들에 의해 사용되거나 또는 명령들과 연관된 데이터 구조들을 저장, 인코딩 또는 운반할 수 있는 임의의 매체를 포함할 수 있다. 비제한적인 기계 판독가능 매체의 예들에는 고체 상태 메모리들, 및 광학 및 자기 매체들을 포함할 수 있다. 기계 판독가능 매체들의 구체적인 예들로는 반도체 메모리 디바이스들(예를 들어, 전기적 프로그램 가능 읽기 전용 메모리(EPROM), 전기적 지우기 가능 프로그램 가능 읽기 전용 메모리(EEPROM)) 및 플래시 메모리 디바이스들과 같은 비휘발성 메모리; 내장 하드 디스크들 및 이동식 디스크들과 같은 자기 디스크들; 자기 광학 디스크들; 랜덤 액세스 메모리(RAM); 솔리드 스테이트 드라이브들(SSD), CD-ROM 및 DVD-ROM 디스크들이 포함될 수 있다. 일부 예들에서, 기계 판독가능 매체들은 비-일시적인 기계 판독가능 매체들을 포함할 수 있다. 일부 예들에서, 기계 판독가능 매체들은 일시적 전파 신호가 아닌 기계 판독가능 매체들을 포함할 수 있다.
[0114] 명령어들(1128)은 네트워크 인터페이스 디바이스(1120)를 거쳐 전송 매체를 사용하여 통신 네트워크(1132)를 통해 추가로 송신 또는 수신될 수 있다. 기계(1100)는 다수의 전송 프로토콜들(예를 들어, 프레임 릴레이, 인터넷 프로토콜(IP), 전송 제어 프로토콜(TCP), 사용자 데이터그램 프로토콜(UDP), 하이퍼텍스트 전송 프로토콜(HTTP) 등) 중 임의의 하나를 이용하여 하나 이상의 다른 기계들과 통신할 수 있다. 예시적인 통신 네트워크들에는 특히, 근거리 통신망(LAN), 광역 통신망(WAN), 패킷 데이터 네트워크(예를 들어, 인터넷), 모바일 전화 네트워크들(예를 들어, 셀룰러 네트워크들), 일반 전화(POTS) 네트워크들 및 무선 데이터 네트워크들(예를 들어, 와이파이(등록상표)(Wi-Fi®)로 알려진 전기전자기술자협회(IEEE) 802.11 표준들의 군), IEEE 802.15.4 표준들의 군, 롱텀에볼루션(LTE) 표준들의 군, 범용 이동 통신 시스템(UMTS) 표준들의 군, 피어투피어(P2P) 네트워크들 등)이 포함될 수 있다. 일 예에서, 네트워크 인터페이스 디바이스(1120)는 통신 네트워크(1132)에 연결하기 위한 하나 이상의 물리적 잭들(예를 들어, 이더넷, 동축, 또는 전화 잭들) 또는 하나 이상의 안테나들(1130)을 포함할 수 있다. 일 예에서, 네트워크 인터페이스 디바이스(1120)는 단일 입력 다중 출력(SIMO), 다중 입력 다중 출력(MIMO) 또는 다중 입력 단일 출력(MISO) 기술들 중 적어도 하나를 사용하여 무선 통신하기 위한 복수의 안테나들(1130)을 포함할 수 있다. 일부 예들에서, 네트워크 인터페이스 디바이스(1120)는 다중 사용자 MIMO 기술들을 사용하여 무선 통신할 수 있다.
[0115] 본 명세서에 설명된 특징들 및 흐름도들은 방법 단계들로서 하나 이상의 방법들 또는 전술한 바와 같은 하나 이상의 애플리케이션들에서 구체화될 수 있다. 일부 구성들에 따르면, 일부 예들에 따르면, "애플리케이션" 또는 "애플리케이션들"은 프로그램들에서 정의된 기능들을 실행하는 프로그램(들)이다. 객체 지향 프로그래밍 언어들(예를 들어, 객체 지향-C, 자바, 또는 C++) 또는 절차적 프로그래밍 언어들(예를 들어, C 또는 조립체 언어)과 같은 다양한 방식들로 구조화된 애플리케이션들 중 하나 이상을 생성하기 위해 다양한 프로그래밍 언어들이 이용될 수 있다. 구체적인 예에서, 제3 자 애플리케이션(예를 들어, 특정 플랫폼의 공급업체가 아닌 다른 주체가 안드로이드™ 또는 IOS™ 소프트웨어 개발 키트(SDK)를 사용하여 개발한 애플리케이션)은 IOS™, 안드로이드™, 윈도우즈® 폰 또는 다른 모바일 운영 체제들과 같은 모바일 운영 체제에서 실행되는 모바일 소프트웨어일 수 있다. 이 예에서, 제3 자 애플리케이션은 본 명세서에 설명된 기능을 용이하게 하기 위해 운영 체제에 의해 제공되는 API 호출들을 발동할 수 있다. 애플리케이션들은 임의의 유형의 컴퓨터-판독가능 매체 또는 컴퓨터 저장 디바이스에 저장될 수 있으며 하나 이상의 범용 컴퓨터들에서 실행될 수 있다. 또한, 본 명세서에 개시된 방법들 및 프로세스들은 대안적으로 특수 컴퓨터 하드웨어 또는 애플리케이션 특정 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA) 또는 복합 프로그래머블 논리 소자(CPLD)에 구현될 수 있다.
[0116] 동 기술의 프로그램 양상들은 전형적으로 기계 판독가능 매체의 유형에 탑재되거나 구현되는 실행 코드 또는 연관된 데이터 중 적어도 하나의 형태의 "제품들" 또는 "제조물들"로 생각될 수 있다. 예를 들어, 프로그래밍 코드에는 터치 센서 또는 본 명세서에 설명된 기타 기능들에 대한 코드가 포함될 수 있다. "저장" 유형 매체는 컴퓨터들, 프로세서들 등의 유형 메모리 또는 이에 연관된 모듈들, 예를 들어, 다양한 반도체 메모리들, 테이프 드라이브들, 디스크 드라이브들 등의 일부 또는 전부를 포함하며, 소프트웨어 프로그래밍을 위해 언제든지 비-일시적인 저장소를 제공할 수 있다. 소프트웨어의 전부 또는 일부는 때때로 인터넷 또는 기타 다양한 통신 네트워크들을 통해 통신될 수 있다. 예를 들어, 그러한 통신들은 하나의 컴퓨터 또는 프로세서로부터 다른 컴퓨터 또는 프로세서로 소프트웨어를 로딩할 수 있게 할 수 있다. 따라서, 프로그래밍, 미디어 콘텐츠 또는 메타 데이터 파일들을 전달할 수 있는 또 다른 유형의 매체들에는 유선 및 광 지상통신 네트워크들을 통해 그리고 다양한 무선 링크들에 걸쳐 로컬 디바이스들 사이의 물리적 인터페이스들에서 사용되는 것과 같은 광학, 전기 및 전자기파들이 포함된다. 유선 또는 무선 링크들, 광학 링크들 등과 같이 이러한 전파들을 전달하는 물리적 요소들도 소프트웨어가 포함된 매체들로 간주될 수 있다. 본 명세서에서 사용되는 바와 같이, "비일시적", "유형적" 또는 "저장" 매체들로 제한되지 않는 한, 컴퓨터 또는 기계 "판독가능 매체"와 같은 용어들은 실행을 위해 프로세서에 명령어들 또는 데이터를 제공하는 데 기여하는 임의의 매체를 지칭한다.
[0117] 따라서, 기계 판독가능 매체는 많은 형태들의 유형적 저장 매체를 취할 수 있다. 비휘발성 저장 매체들에는 예를 들어, 도면들에 도시된 클라이언트 디바이스, 매체들의 게이트웨이, 트랜스코더 등을 구현하는 데 사용될 수 있는 것과 같은 임의의 컴퓨터(들) 등의 저장 디바이스들 중 임의의 것과 같은 광학 디스크 또는 자기 디스크가 포함된다. 휘발성 저장 매체들은 그러한 컴퓨터 플랫폼의 메인 메모리와 같은 동적 메모리를 포함한다. 유형적 전송 매체들에는 컴퓨터 시스템 내의 버스를 포함하는 전선들을 포함한 구리선 및 광섬유들; 동축 케이블들이 포함된다. 반송파 전송 매체들은 전기 또는 전자기 신호들 또는 무선 주파수(RF) 및 적외선(IR) 데이터 통신들 동안 생성되는 것들과 같은 음향 또는 광파들의 형태를 취할 수 있다. 따라서, 컴퓨터-판독가능 매체들의 통상적인 형태들에는 예를 들어, 플로피 디스크, 플렉시블 디스크, 하드 디스크, 자기 테이프, 임의의 다른 자기 매체, CD-ROM, DVD 또는 DVD-ROM, 임의의 다른 광학 매체, 펀치 카드 종이 테이프, 구멍들의 패턴들이 있는 임의의 다른 물리적 저장 매체, RAM, PROM 및 EPROM, 플래시-EPROM, 임의의 다른 메모리 칩 또는 카트리지, 데이터 또는 명령어들을 전달하는 반송파, 이러한 반송파를 전달하는 케이블들 또는 링크들 또는 컴퓨터가 프로그래밍 코드 또는 데이터 중 적어도 하나를 읽을 수 있는 임의의 다른 매체가 포함된다. 이러한 형태들의 컴퓨터-판독가능 매체들 중 다수는 실행을 위해 하나 이상의 명령어들의 하나 이상의 시퀀스들을 프로세서로 전달하는 데 관여할 수 있다.
[0118] 보호의 범위는 이제 이어지는 청구항들에 의해서만 제한된다. 그 범위는 본 명세서 및 이어지는 출원 경과에 비추어 해석될 때 청구항들에 사용된 언어의 통상적인 의미와 일치할 정도로 넓은 것으로, 그리고 모든 구조적 및 기능적 등가물들을 포함하는 것으로 해석될 수 있도록 의도되었으며, 또한 그렇게 해석되어야 한다. 그럼에도 불구하고, 청구항들 중 어느 것도 특허법 제101조, 제102조 또는 제103조의 요건을 충족하지 못하는 주제를 포함하도록 의도되지 않았으며, 그러한 방식으로 해석되어서도 안된다. 그러한 주제의 의도하지 않은 포용은 이에 의해 부인된다.
[0119] 직전에 언급된 것을 제외하고, 기재되거나 예시된 어떠한 것도 임의의 구성요소, 단계, 특징, 목적, 이점, 혜택, 또는 이와 동등한 것이 청구항들에 기재되어 있는지 여부에 관계없이, 공중에게 헌납되도록 의도되거나 해석되어서는 안된다.
[0120] 본 명세서에서 사용되는 용어들 및 표현들은, 본 명세서에서 특정한 의미들이 달리 규정된 경우를 제외하고, 대응하는 개개의 조사 및 연구 분야들과 관련하여 그러한 용어들 및 표현들에 부여되는 것과 같은 통상적인 의미들을 갖는 것으로 이해될 것이다. 제1, 제2 등과 같은 관계적 용어들은 그러한 개체들 또는 행위들 간에 임의의 실제 그러한 관계나 순서를 반드시 요구하거나 암시하지 않고 하나의 개체 또는 행위를 다른 개체 또는 행위와 구별하기 위해서만 사용될 수 있다. "포함하다", "포함하는" 또는 그 밖의 이들의 임의의 변형은 비-배타적 포함을 포함하기 위한 것으로, 요소들 또는 단계들의 목록을 포함하는 프로세스, 방법, 물품 또는 장치가 해당 요소들 또는 단계들만을 포함하지 않고 해당 프로세스, 방법, 물품 또는 장치에 명시적으로 나열되거나 내재되지 않은 다른 요소들 또는 단계들을 포함할 수 있다. 단수로 표현된 요소는, 추가적인 제약들 없이, 그 요소를 포함하는 프로세스, 방법, 물품 또는 장치에 추가적인 동일한 요소들의 존재를 배제하지 않는다.
[0121] 달리 명시되지 않는 한, 이하의 청구항들을 포함하여 본 명세서에 기재된 임의의 그리고 모든 측정들, 값들, 등급들, 포지션들, 규모들, 크기들 및 기타 사양들은 근사치이며, 정확한 것은 아니다. 이러한 수량들은 해당 수량들이 관련된 기능들 및 해당 기술 분야에서 통상적인 것과 일치하는 합리적인 범위를 갖도록 의도되었다. 예를 들어, 명시적으로 달리 언급되지 않는 한, 파라미터 값 등은 언급된 수량으로부터 ± 10 %만큼 다를 수 있다.
[0122] 또한, 전술한 발명을 실시하기 위한 구체적인 내용에서는, 본 개시내용의 간소화 목적으로 다양한 특징들이 다양한 예들에서 함께 그룹화되어 있음을 알 수 있다. 이러한 개시내용의 방법은 청구된 예들이 각각의 청구항에 명시적으로 기재된 것보다 더 많은 특징들을 필요로 한다는 의도를 반영하는 것으로 해석되어서는 안된다. 오히려, 이하의 청구항들에서 알 수 있듯이, 보호해야 할 주제는 개시된 임의의 단일 예의 모든 특징들에 한정되지 않는다. 따라서, 이하의 청구항들은 발명을 실시하기 위한 구체적인 내용에 통합되며, 각각의 청구항은 개별적으로 청구되는 주제로서 독립적으로 존재한다.
[0123] 전술한 바와 같이, 최상의 모드 및 다른 예들로 간주되는 것을 설명하였으나, 다양한 수정들이 이루어질 수 있으며, 본 명세서에 개시된 주제는 다양한 형태들 및 예들로 구현될 수 있고, 수많은 적용예들에 적용될 수 있으며, 그 중 일부만이 본 명세서에 설명되었다는 것이 이해될 수 있다. 이하의 청구항들은 본 개념들의 진정한 범위 내에 속하는 임의의 및 모든 수정들 및 변형들을 청구하는 것을 목적으로 한다.
Claims (20)
- 테스팅 시스템으로서,
원격 프로시저 호출 명령(remote procedure call command)들이 테스트 프레임워크로부터 직접 발행(issue)될 수 있도록 원격 프로시저 호출들에 대한 프록시로서의 역할을 하는 클라이언트 라이브러리(client library)를 저장하는 메모리;
상기 테스트 프레임워크를 구현하는 테스트 서버 ― 상기 테스트 프레임워크는, 원격 프로시저 호출 명령들이 모바일 디바이스로부터 테스트 대상 디바이스(device under test)로 송신될 수 있게 하고 그리고 상기 테스트 대상 디바이스로부터의 응답들이 수신되고 상기 모바일 디바이스로 포워딩(forward)될 수 있게 하는 인터페이스를 포함함 ―; 및
상기 테스트 대상 디바이스 상에서 실행되도록 구성된 클라이언트 프로그램을 포함하고, 상기 클라이언트 프로그램은, 상기 테스트 대상 디바이스의 디바이스 상태를 관리하기 위해 원격 프로시저 호출 명령들을 상기 테스트 대상 디바이스로부터 상기 테스트 서버로 송신하고 그리고 상기 테스트 서버로부터 수신하며,
상기 테스트 대상 디바이스 및 상기 모바일 디바이스는 서로 다른 운영 체제들을 갖는,
테스팅 시스템. - 제1 항에 있어서,
상기 원격 프로시저 호출 명령들은 상기 모바일 디바이스와 상기 테스트 대상 디바이스 사이의 자동화된 페어링 흐름(automated pairing flow)을 포함하는,
테스팅 시스템. - 제1 항에 있어서,
상기 원격 프로시저 호출 명령들은 상기 모바일 디바이스 또는 상기 테스트 대상 디바이스 중 적어도 하나의 작동 동안 사용자 동작(user action)들을 에뮬레이트(emulate)하는,
테스팅 시스템. - 제3 항에 있어서,
상기 에뮬레이트된 사용자 동작들은 상기 모바일 디바이스와 상기 테스트 대상 디바이스의 페어링을 개시하기 위한 버튼 누름(button press)을 포함하는,
테스팅 시스템. - 제1 항에 있어서,
상기 클라이언트 라이브러리는 상기 테스트 서버 상의 상기 테스트 프레임워크에 배치된 원격 프로시저 호출 서비스를 통해 상기 테스트 대상 디바이스의 바인딩(binding)들 및 기능(functionality)을 노출(expose)하는,
테스팅 시스템. - 제1 항에 있어서,
상기 테스트 프레임워크에 대한 진입 포인트(entry point)는 테스트 실행 동안 상기 모바일 디바이스의 테스트 하네스(test harness)인,
테스팅 시스템. - 제1 항에 있어서,
상기 클라이언트 프로그램은 상기 테스트 대상 디바이스에 설치된 원격 프로시저 호출 클라이언트의 C++ 구현을 포함하는,
테스팅 시스템. - 제1 항에 있어서,
상기 모바일 디바이스의 운영 체제는, 사용자가 상기 테스트 대상 디바이스의 클라이언트 프로그램으로부터 상기 테스트 서버로 원격 프로시저 호출들을 발행하도록 허용하는 테스트 컴파일(test compilation)에서 상기 클라이언트 프로그램을 가져오고(import) 호출하는,
테스팅 시스템. - 제1 항에 있어서,
상기 테스트 서버는 상기 모바일 디바이스 상에서의 테스트의 실행을 목표로 하는 테스팅 소프트웨어 스택(testing software stack)을 실행하는,
테스팅 시스템. - 제9 항에 있어서,
상기 모바일 디바이스 상에서의 상기 테스트의 실행은 상기 모바일 디바이스의 운영 체제의 페어링 테스트(pairing test)를 포함하는,
테스팅 시스템. - 제1 항에 있어서,
상기 테스트 대상 디바이스에 대한 원격 프로시저 호출 명령들의 흐름을 관리하기 위해 상기 테스트 서버와 상기 테스트 대상 디바이스 사이의 통신 경로를 제공하는 하드와이어드 직렬 인터페이스(hardwired serial interface)를 더 포함하는,
테스팅 시스템. - 제11 항에 있어서,
상기 직렬 인터페이스는, 상기 원격 프로시저 호출 명령들이 상기 테스트 대상 디바이스의 제1 회로 및 상기 테스트 대상 디바이스의 제2 회로에 전달되고 그리고 상기 제1 회로 및 상기 제2 회로로부터 전달되도록, 상기 제1 회로에 대한 제1 USB 직렬 채널 및 상기 제2 회로에 대한 제2 USB 직렬 채널을 제공하는,
테스팅 시스템. - 제1 항에 있어서,
상기 모바일 디바이스 상에서 실행되도록 구성된 제2 클라이언트 프로그램을 더 포함하고, 상기 제2 클라이언트 프로그램은, 상기 테스트 대상 디바이스의 디바이스 상태를 결정하기 위해 원격 프로시저 호출 명령들을 상기 모바일 디바이스로부터 상기 테스트 서버로 송신하고 그리고 상기 테스트 서버로부터 수신하는,
테스팅 시스템. - 모바일 디바이스와 테스트 대상 디바이스 사이의 상호작용들을 테스트하는 방법으로서,
상기 모바일 디바이스에 대한 운영 체제 마스터(operating system master) 및 상기 테스트 대상 디바이스 상에서 통신 애플리케이션을 실행하는 운영 체제의 버전(version)을 테스트 서버에 다운로드하는 단계;
상기 테스트 대상 디바이스를 부팅(booting)하여, 상기 테스트 대상 디바이스의 적어도 하나의 무선 회로에서 원격 프로시저 호출 명령들을 수신하기 시작하는 단계;
상기 모바일 디바이스와 상기 테스트 대상 디바이스 사이의 테스트를 생성하기 위해 원격 프로시저 호출 명령들을 실행하는 단계 ― 상기 원격 프로시저 호출 명령들은 상기 모바일 디바이스와 상기 테스트 대상 디바이스 사이의 상호작용들을 개시하기 위한 사용자 활동(user activity)을 에뮬레이트(emulate)하도록 구성된 명령들을 포함함 ―; 및
상기 에뮬레이트된 사용자 활동에 의해 개시되는 상호작용들의 결과들을 측정하는 단계를 포함하는,
모바일 디바이스와 테스트 대상 디바이스 사이의 상호작용들을 테스트하는 방법. - 제14 항에 있어서,
상기 원격 프로시저 호출 명령들을 실행하는 단계는, 상기 모바일 디바이스와 상기 테스트 대상 디바이스 사이의 페어링 테스트를 생성하도록 구성된 원격 프로시저 호출 명령들을 실행하는 단계를 포함하고, 상기 원격 프로시저 호출 명령들은 페어링 프로세스를 개시하기 위해 상기 모바일 디바이스 또는 상기 테스트 대상 디바이스 중 적어도 하나로부터의 버튼 누름 명령(button press command)을 에뮬레이트하도록 구성된 명령들을 포함하며, 상기 상호작용들의 결과들을 측정하는 단계는 상기 페어링 프로세스의 결과들을 측정하는 단계를 포함하는,
모바일 디바이스와 테스트 대상 디바이스 사이의 상호작용들을 테스트하는 방법. - 제15 항에 있어서,
사용자 인터페이스를 더 포함하며,
상기 사용자 인터페이스는, 상기 테스트 대상 디바이스에 로딩된 클라이언트 프로그램을 사용하여 버튼 누름 명령을 에뮬레이트하도록 구성된 명령들을 실행하고, 상기 모바일 디바이스와 상기 테스트 대상 디바이스 사이의 페어링을 개시하기 위해 상기 에뮬레이트된 버튼 누름 명령을 상기 테스트 대상 디바이스에 송신하는,
모바일 디바이스와 테스트 대상 디바이스 사이의 상호작용들을 테스트하는 방법. - 제16 항에 있어서,
상기 테스트 대상 디바이스로부터, 상기 에뮬레이트된 버튼 누름 명령에 대한 응답을 수신하는 단계, 및 상기 응답을 상기 테스트 대상 디바이스에 로딩된 상기 클라이언트 프로그램에 송신하는 단계를 더 포함하는,
모바일 디바이스와 테스트 대상 디바이스 사이의 상호작용들을 테스트하는 방법. - 명령어(instruction)들을 저장하는 비-일시적인 컴퓨터-판독가능 저장 매체로서,
상기 명령어들은 적어도 하나의 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 동작들을 수행함으로써 모바일 디바이스와 테스트 대상 디바이스 사이의 상호작용들을 테스트하는 방법을 수행하게 하고,
상기 동작들은:
상기 모바일 디바이스에 대한 운영 체제 마스터 및 상기 테스트 대상 디바이스 상에서 통신 애플리케이션을 실행하는 운영 체제의 버전을 테스트 서버에 다운로드하는 동작;
상기 테스트 대상 디바이스를 부팅하여, 상기 테스트 대상 디바이스의 적어도 하나의 무선 회로에서 원격 프로시저 호출 명령(remote procedure call command)들을 수신하기 시작하는 동작;
상기 모바일 디바이스와 상기 테스트 대상 디바이스 사이의 테스트를 생성하기 위해 원격 프로시저 호출 명령들을 실행하는 동작 ― 상기 원격 프로시저 호출 명령들은 상기 모바일 디바이스와 상기 테스트 대상 디바이스 사이의 상호작용들을 개시하기 위한 사용자 활동을 에뮬레이트하도록 구성된 명령(command)들을 포함함 ―; 및
상기 에뮬레이트된 사용자 활동에 의해 개시되는 상호작용들의 결과들을 측정하는 동작을 포함하는,
비-일시적인 컴퓨터-판독가능 저장 매체. - 제18 항에 있어서,
상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 프로세서로 하여금, 상기 모바일 디바이스와 상기 테스트 대상 디바이스 사이의 페어링 테스트를 생성하도록 구성된 원격 프로시저 호출 명령들을 실행하는 것을 포함하는 동작들을 수행하게 하는 명령어들 ― 상기 원격 프로시저 호출 명령들은 페어링 프로세스를 개시하기 위해 상기 모바일 디바이스 또는 상기 테스트 대상 디바이스 중 적어도 하나로부터의 버튼 누름 명령을 에뮬레이트하도록 구성된 명령들을 포함함 ―, 및 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 프로세서로 하여금, 상기 페어링 프로세스의 결과들을 측정하는 것을 포함하는 동작들을 수행하게 하는 명령어들을 더 포함하는,
비-일시적인 컴퓨터-판독가능 저장 매체. - 제19 항에 있어서,
상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 프로세서로 하여금, 상기 테스트 대상 디바이스에 로딩된 클라이언트 프로그램을 사용하여 버튼 누름 명령을 에뮬레이트하도록 구성된 명령들을 실행하고, 상기 모바일 디바이스와 상기 테스트 대상 디바이스 사이의 페어링을 개시하기 위해 상기 에뮬레이트된 버튼 누름 명령을 상기 테스트 대상 디바이스에 송신하고, 상기 테스트 대상 디바이스로부터, 상기 에뮬레이트된 버튼 누름 명령에 대한 응답을 수신하고, 그리고 상기 응답을 상기 테스트 대상 디바이스에 로딩된 상기 클라이언트 프로그램에 송신하는 것을 포함하는 동작들을 수행하게 하는 명령어들을 더 포함하는,
비-일시적인 컴퓨터-판독가능 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/322,426 US11748234B2 (en) | 2021-05-17 | 2021-05-17 | Automated testing platform for testing multiple devices |
US17/322,426 | 2021-05-17 | ||
PCT/US2022/028793 WO2022245611A1 (en) | 2021-05-17 | 2022-05-11 | Automated testing platform for testing multiple devices |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20240006694A true KR20240006694A (ko) | 2024-01-15 |
Family
ID=81927605
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020237043256A KR20240006694A (ko) | 2021-05-17 | 2022-05-11 | 다수의 디바이스들을 테스트하기 위한 자동화된 테스팅 플랫폼 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11748234B2 (ko) |
EP (1) | EP4341816A1 (ko) |
KR (1) | KR20240006694A (ko) |
CN (1) | CN117337433A (ko) |
WO (1) | WO2022245611A1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11789834B2 (en) * | 2019-01-02 | 2023-10-17 | Visa International Service Association | Computer and conduit for system testing |
US20230236943A1 (en) * | 2022-01-25 | 2023-07-27 | Tektronix, Inc. | Interface mechanism to control and access instrument settings and instrument data |
CN116756044B (zh) * | 2023-08-11 | 2023-11-21 | 杭州罗莱迪思科技股份有限公司 | 一种基于数据链路追踪的rpc远程调试方法、装置及应用 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005074613A2 (en) * | 2004-02-03 | 2005-08-18 | Nextest Systems Corporation | Method for testing and programming memory devices and system for same |
US8996921B2 (en) * | 2012-11-08 | 2015-03-31 | International Business Machines Corporation | Indicating coverage of Web application testing |
KR102030385B1 (ko) * | 2013-03-07 | 2019-10-10 | 삼성전자주식회사 | 자동 테스트 장비 및 그 제어방법 |
ITTO20130974A1 (it) * | 2013-11-29 | 2015-05-30 | Magneti Marelli Spa | Sistema per sottoporre a test l'interazione wireless fra un sistema di riproduzione di segnali audio e un telefono mobile, relativo procedimento e prodotto informatico |
US11307584B2 (en) * | 2018-09-04 | 2022-04-19 | Skydio, Inc. | Applications and skills for an autonomous unmanned aerial vehicle |
US11965927B2 (en) * | 2019-05-31 | 2024-04-23 | Apple Inc. | Systems and methods of testing adverse device conditions |
CN112463618B (zh) | 2020-12-04 | 2024-06-25 | 斑马网络技术有限公司 | 自动化测试方法、装置、介质及设备 |
-
2021
- 2021-05-17 US US17/322,426 patent/US11748234B2/en active Active
-
2022
- 2022-05-11 EP EP22727607.8A patent/EP4341816A1/en active Pending
- 2022-05-11 CN CN202280035876.2A patent/CN117337433A/zh active Pending
- 2022-05-11 KR KR1020237043256A patent/KR20240006694A/ko unknown
- 2022-05-11 WO PCT/US2022/028793 patent/WO2022245611A1/en active Application Filing
-
2023
- 2023-07-20 US US18/224,364 patent/US20230359545A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US11748234B2 (en) | 2023-09-05 |
US20220365867A1 (en) | 2022-11-17 |
CN117337433A (zh) | 2024-01-02 |
US20230359545A1 (en) | 2023-11-09 |
WO2022245611A1 (en) | 2022-11-24 |
EP4341816A1 (en) | 2024-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11748234B2 (en) | Automated testing platform for testing multiple devices | |
WO2020068455A1 (en) | Neural network system for gesture, wear, activity, or carry detection on a wearable or mobile device | |
US20240135926A1 (en) | Voice-controlled settings and navigation | |
US20240168285A1 (en) | Soft follow and pitch angle effects for vr/ar interface | |
WO2024049565A1 (en) | Extending user interfaces of mobile apps to ar eyewear | |
US12088781B2 (en) | Hyper-connected and synchronized AR glasses | |
EP4396650A1 (en) | Social connection through distributed and connected real-world objects | |
US11902107B2 (en) | Eyewear experience hub for network resource optimization | |
US20240095086A1 (en) | Mobile device resource optimized kiosk mode | |
US11886646B2 (en) | Personalized calibration of user interfaces | |
US11982808B2 (en) | Extended field-of-view capture of augmented reality experiences | |
US20230060838A1 (en) | Scan-based messaging for electronic eyewear devices | |
EP4396651A1 (en) | Snapshot messages for indicating user state |