시작하는 미니 프로그램은 WeChat의 공식 테스트 데모입니다. Android Api 데모와 마찬가지로 공식 미니 프로그램에서도 다양한 컨트롤의 사용법과 공통 인터페이스의 확장 기능을 보여줍니다. 개발자의 WeChat 계정을 추가한 후 QR 코드를 스캔하여 WeChat 애플릿을 열 수 있습니다.
1. 미니 프로그램 런타임 분석
1. 먼저 WeChat을 시작하고 어떤 프로세스가 있는지 확인하세요. 거기 있어요.
shell@HWNXT:/ $ ps | grep u0_a539 u0_a539 6688 533 1751392 84976 SyS_epoll_ 0000000000 S com.tencent.mm:push u0_a539 7593 533 2228476 252492 SyS_epoll_ 0000000000 S com.tencent.mm u0_a539 8047 533 1984672 854121 SyS_epoll_ 0000000000 S com.tencent.mm:tools u0_a539 8117 533 1770972 86280 SyS_epoll_ 0000000000 S com.tencent.mm:sandbox shell@HWNXT:/ $
현재 위챗 화면에 표시되는 프로세스를 보면 이름으로 보아 com.tencent.mm 이어야 합니다.
shell@HWNXT:/ $ dumpsys activity top | grep ACTIVITY ACTIVITY com.tencent.mm/.ui.LauncherUI 44c445f pid=7593
명령어를 통해 보면 현재 상위 프로세스는 7593이며, 실제로는 com.tencent.mm입니다.
2. 다음으로, 위챗 미니 프로그램 데모 공식 론칭 이후의 과정 변화를 살펴보겠습니다.
u0_a539 6688 533 1750852 84420 SyS_epoll_ 0000000000 S com.tencent.mm:push u0_a539 7593 533 2223164 272116 SyS_epoll_ 0000000000 S com.tencent.mm u0_a539 9853 533 2092872 117492 SyS_epoll_ 0000000000 S com.tencent.mm:tools u0_a539 9896 533 2351160 212336 SyS_epoll_ 0000000000 S com.tencent.mm:appbrand0 shell@HWNXT:/ $
com.tencent.mm:appbrand0라는 프로세스가 하나 더 있습니다. WeChat 애플릿은 어떤 프로세스에서 실행되나요?
최상위 프로세스를 살펴보세요.
shell@HWNXT:/ $ dumpsys activity top | grep ACTIVITY ACTIVITY com.tencent.mm/.plugin.appbrand.ui.AppBrandUI 15a772 pid=9896 shell@HWNXT:/ $
현재 최상위 프로세스는 9896이며 실제로는 com.tencent.mm:appbrand0입니다.
위챗에서는 미니 프로그램의 리소스와 독립성을 보장하기 위해 미니 프로그램에 대해 별도의 프로세스를 개설한 것으로 볼 수 있습니다.
3. WeChat 애플릿과 WeChat에서 웹페이지 열기는 동일한 모듈로 구현됩니까?
WeChat에서 웹페이지를 열고 프로세스를 확인하세요:
shell@HWNXT:/ $ ps | grep u0_a539 u0_a539 6688 533 1751212 86184 SyS_epoll_ 0000000000 S com.tencent.mm:push u0_a539 7593 533 2187672 263352 SyS_epoll_ 0000000000 S com.tencent.mm u0_a539 8047 533 2336360 224436 SyS_epoll_ 0000000000 S com.tencent.mm:tools
프로세스는 변경되지 않았습니다. 최상위 프로세스를 보세요:
shell@HWNXT:/ $ dumpsys activity top | grep ACTIVITY ACTIVITY com.tencent.mm/.plugin.webview.ui.tools.WebViewUI 1502038 pid=14685
웹페이지는 실제로 com에 있습니다. .tencent.mm : 도구 프로세스에서 열리며 둘의 활동이 다릅니다. 애플릿은 .plugin.appbrand.ui.AppBrandUI이고 웹 페이지는 .plugin.webview.ui.tools.WebViewUI입니다.
위챗 애플릿과 단순 웹페이지는 차이가 있는 것 같습니다.
2. 미니프로그램의 화면 구성
UIAutomator를 사용하여 WeChat을 구성하는 구성 요소를 분석합니다. 미니 프로그램 화면
UIAutomator로 화면을 분석한 결과 WeChat 애플릿 Demo는 Top ActionBar의 세 부분으로 구성되어 있으며 그 중간에는 Tencent 자체 WebView, Tencent가 자체 개발한 X5여야 합니다. 아래 코어는 X5 WebView에서 애플릿의 콘텐츠 부분을 표시하는 Bottom ActionBar입니다.
WeChat 애플릿의 페이지 표시는 매우 일반적인 Android 네이티브 컨트롤과 WebView의 H5 하이브리드 디스플레이 솔루션을 사용하고 있음을 알 수 있습니다. H5 하이브리드 애플리케이션이 시장에 출시되었습니다.
3. WeChat 미니 프로그램 자동 테스트 방법
현재 Android 자동 테스트 프레임워크는 다음과 같습니다. 크게 6가지 카테고리로 나뉜다.
Robolectric은 유닛 테스트에 흔히 사용된다. 구체적인 구현 계획은 JVM에서 실행할 수 있는 안드로이드 코드 세트를 구현하는 것이다. 그런 다음 단위 테스트가 실행 중일 때 Android 관련 코드를 가로채고 구현 코드로 이동하여 호출 프로세스를 실행하고 Android 표준 클래스를 기반으로 많은 확장 인터페이스를 강화합니다. 이는 실제로 단위 테스트 프로세스를 크게 촉진합니다. 그러나 기능 수준에 초점을 맞춘 우리 테스트 학생들에게는 실제로 일부 마비된 발톱이 있으며 실제적인 의미는 그리 크지 않습니다.
Monkey는 Android 시스템과 함께 제공되는 안정성 테스트 도구입니다. 많은 제조업체에서도 이를 내장 제품의 안정성 수용 측정 도구로 사용하고 있습니다. 이름에서 알 수 있듯이 원숭이는 기능적 사용 사례를 결정하는 테스트 과정을 완료할 수 없습니다. 불행히도 원숭이가 인간으로 진화할 때까지 기다려 보겠습니다.
UIAutomator는 Android에서 공식적으로 지원하는 몇 안 되는 자동화된 테스트 프레임워크 중 하나입니다. 가장 먼저 출시된 버전은 API 레벨 17입니다. UIAutomator는 제어 기반 자동화 프레임워크로서 명확한 인터페이스를 갖추고 있으며 사용하기 쉽습니다. UIAutomator를 기반으로 유명한 Appium 오픈 소스 자동화 프레임워크도 개발되었으며 업계에서의 위상은 매우 높습니다. 그러나 UIAutomator를 사용하기 위한 전제 조건은 UIAutomatorViewer를 사용하여 사전 작업 컨트롤의 속성 정보를 볼 수 있다는 것입니다. 위 분석에서 미니 프로그램의 일부 컨트롤의 상위 컨테이너는 weview입니다. 표준 구조가 아니며 Tencent가 자체 개발한 X5여야 합니다. appium UIAutomator를 사용하여 자동화를 실행하려는 아이디어는 이후 포기되었습니다.
Instrumentation과 같은 Android 유전자형 테스트 솔루션도 여기에서 탄생했습니다. 그러나 어느 정도 이해한 후에는 Instrumentation이든 Robotium이든 제품 소스가 필요하다는 것을 점차 이해하게 되었습니다. 또는 서명. 테스트 프로젝트는 일반적으로 제품 소스 코드와 동일한 프로젝트 디렉토리에 배치됩니다. 그래서 질문은 누가 나에게 WeChat의 소스 코드를 줄 수 있습니까? ? 이봐, 내 말 들리는 사람 있어? !@#@%&^
초창기에는 바이두의 카페, 알리바바의 아트런 등 시스템 권한 상승과 주입을 통해 자동화된 테스트 기능을 구현한 사례가 대부분이었는데, 대부분이 xposed 아키텍처 모델을 카피해서 사용하고 있었습니다. 강력한 시스템 제어 기능. 그런데 오늘날 이러한 프레임워크는 어디에 있습니까? Android 루트가 점점 더 어려워지기 때문에 현재까지 버전 6.0이 거의 불가능해졌습니다. 따라서 이러한 유형의 오픈 소스 프레임워크는 2014년경에 유지 관리가 중단되었습니다. 교체하려면 다른 솔루션을 찾으십시오.
基于图像识别也有一些自动化测试框架,例如sikuli还有testin的自动化工具,然而小生之所以直接就把这类框架pass掉是因为这种测试脚本基本不具备扩展性,系统ui风格变更,想要做断言验证,以及日后用例维护等等,想都不敢想。
铁鞋踏破仍无路,靓女帅哥也踌躇啊,忽然间灵感一现,腾讯自家会不会有什么奇葩产品可用啊,知行合一谷歌百度,搜索腾讯自动化立马看到腾讯优测的介绍,到官网里翻了一下找到一款叫XTest的自动化测试工具,看到简介目前只支持Android平台,想想前面历程这般痛苦,还要啥自行车啊。于是乎赶忙下载了一套热气腾腾的XTest,安装完毕,一切准备就绪,关门,放XTest。在经过一番折腾后基本领悟了XTest的使用心法,下面我就从大家平时经常开展的性能测试走起。
一、录制脚本,加入循环等操作
使用XTest录制从体验上确实简单便捷,简单到不用插线不用PC,可以躺着录走着录,即使撩妹都不耽误测试,跟平时操作App无异。对比早期录制脚本又抓控件又摸路径受的罪,幸福感大增。录制很容易上手,就是在录制模式下,按照case跑一遍就OK了,脚本自动生成,这里不做赘述,为了让测试更加充分,我又徒手一口气在复杂路径加了50个循环。真的是徒手,因为就是用手机端的脚本编辑功能就实现了。
二、开始回放查看结果
搞定脚本后可进行本地回放或多机联测,由于是基于控件的录制技术,所以回放过程比较顺利。测试结束后在手机/sdcard/kat/result路径下会生成kat_Performance.csv文件,这就是测试过程的性能数据了,具体信息如下:
性能数据比较中规中矩,内存,cpu,电池温度,流量,帧率数据都有,页面切换滑动点击均无丢帧现象(不过这也可能跟XTest脚本回放速度比较慢有关,这点是这款工具目前看来一个比较让人吐槽的点)。
仅此结果就能满足小生的欲望么?那是绝对不可能的,没有设备耗电信息怎么能算是一个完整的性能测试呢。
三、导出脚本,追加耗电信息输出
通过前期学习,了解到XTest可以导出脚本进行二次编辑并且支持130多个API作为复杂测试任务的扩展,长话短说我将录制的脚本导出到sublime编辑器,加入电量测试代码(自定义的代码,写的不完美不欢迎吐槽)(o^^o)
1.脚本开头加入电池数据清空代码
-- 电池数据清空
shell('dumpsys batterystats --reset && echo True')
2.脚本结束将电量信息输出到logcat
--输出耗电结果 shell("dumpsys batterystats > /sdcard/kat/Result/batterystats.txt && echo True") --读取txt文件的代码 local f = io.open('/sdcard/kat/Result/batterystats.txt', 'r') for line in f:lines() do print(line) shell('log -p i -t getbatterystats "' .. line .. '" && echo True') end f:close()
3.重新启动测试,测试完成后到logcat日志中收割电量测试结果,目标文件就在/sdcard/kat/result目录下(logcat.txt)如下:
好吧,看起来也都正常,我只是想说嗯这个也可以测,因为这个xtest可以摆脱usb线束缚无线回放脚本,这样才能获取到较为精准的电量信息。当然,希望今后类似的专项测试也能有个好的报表展现方式。
PS:注意这是耗电测试,所以充电压脉带,也正是XTest这种可无线测试的自动化引擎,才能方便搞定之前需要频繁插拔usb线才能完成的测试任务。
一、小程序分析
弄完了性能测试,我们切回主题,搞一下小程序,着手开展小程序UI自动化前,我们需要关注一下XTest是否可以轻松撸到小程序的控件
1、小程序的Hybrid控件
小程序对当前已支持的组件给出了演示程序,首先看下这些控件的真面目
使用XTest辅助工具对控件抓取可知,在X5 WebView内,控件也是如Android原生控件一样具有属性字段的。
E/Kat: setString=={name:SPAN,type:notFound,X:99,Y:777,X2:171,Y2:831}
E/Kat: name = SPAN;type=notFound; label=text;x=99 y=777 x2=171 y2 = 831
E/Kat: top-result:168,1016,[99,990,72,54],-2,top=[SPAN,text], valid=[SPAN,text],30000000,0,0,weight=0
E/Kat:@0%1:android.widget.FrameLayout%1:android.widget.FrameLayout%1:android. widget.FrameLayout%1:android...
예를 들어 컨트롤의 리소스 ID 속성 필드는 "SPAN"이고 텍스트 속성 필드는 "text"입니다. , 컨트롤 좌표 범위 값 및 레이아웃 계층 구조의 직사각형은 XTest를 사용하여 정확하게 얻을 수 있습니다.
2. 특수 컨트롤도 개체 속성을 얻을 수 있나요?
스위치, 비디오, 캔버스, 맵 및 기타 구성 요소는 이러한 데이터를 기반으로 UI 자동화 제어 캡처를 완료할 수 있습니다.
2. 미니 프로그램 테스트 실습
1. 비디오 인터페이스 테스트
구성 요소 제공 외에도 미니 프로그램 데모에서는 몇 가지 인터페이스 기능도 보여주며, 여기서 "비디오 선택"이라는 비교적 복잡한 대표적인 사용 사례를 추출하여 테스트합니다. (인터페이스 유형: 미디어--비디오)
앞의 경로를 통해 들어가세요. 사진 속 +컨트롤을 누르면 시스템 카메라로 들어갑니다. 무엇! ….., XTest는 제어 불능, 제어 불능이며 시스템 카메라 작동 프로세스를 기록할 수 없습니다. 크로스 프로세스에 대한 데모 프로모션에서 언급된 내용이 이번에는 왜 도랑을 넘었나요? 분노와 의심을 품고 XTest 개발 동급생들에게 연락했는데, 그들은 해당 도구를 통해 휴대폰에 업로드해야 하는 경우 도구 자체가 크로스 프로세스 테스트를 지원한다고 말했습니다.
1) 기본 시스템 카메라를 다른 카메라 애플리케이션으로 교체한 후 이 apk를 휴대폰에 업로드하여 테스트
2) 자동화 + 수동 사용 상호작용
후자가 너무 궁금하네요 자동화+수작업이 뭐죠? 나는 그것을 시도했고 그들의 도움으로 실제로 그것을 완료했습니다.구체적으로는 자동화와 수동 작업 사이의 상호 작용 프로세스를 완료하고 테스트 결과를 보고하기 위해 볼륨 버튼을 누르라는 명령문을 스크립트에 삽입했습니다. 그러면 자동화가 작업을 인계받아 실행을 계속합니다. 테스트 업계도 미래에는 공장 조립 라인을 채택할 것으로 보입니다. 점점 인간과 유사해지고 있는 폭스콘 공장의 장비와 점점 기계와 유사해지고 있는 사람들을 생각하면 Xiaosheng은 몸서리를 쳤습니다.
2. 다중 계정 배포 테스트
위 사진에서 4개의 머신이 함께 실행되는 것을 보면, WeChat 프로그램 테스트에는 계정 로그인이 필요합니다. XTest 자체는 다중 시스템 공동 테스트를 지원합니다. WeChat 애플릿 로그인 계정은 서버에서 균일하게 관리되며 로그인을 완료하기 위해 런타임 중에 휴대폰으로 전송됩니다.
사진의 4개 계정은 서버에서 할당한 유일한 계정이므로 각 기기에서 원활하게 로그인할 수 있도록 보장됩니다. 프레임워크 드라이브 다중 시스템 공동 테스트를 통해 로그인합니다.
3. 공동 테스트 보고서 표시
다계정 배포 및 다중 머신 공동 테스트를 완료한 후, 서버 측에서 테스트 보고서를 직접 확인할 수 있습니다.
위의 사진은 Xtest를 이용하여 다중 머신 공동 테스트 후 한 기기의 성능 데이터를 보여줍니다. 스크린샷을 보면 미니 프로그램의 비디오 인터페이스에 들어가서 재생을 시작한 후(6단계) 비디오가 캐시에 로드됨에 따라 곡선의 빨간색 선(CPU)이 위쪽으로 기울어지기 시작하는 것을 볼 수 있습니다(단계). 그림 7, 8)에서는 업스트림과 다운스트림 트래픽이 녹색 선(NetFlow)이 급격히 증가하기 시작하는 것을 나타냅니다. 글쎄, 그것은 인간의 거시인지 이론과 상당히 일치합니다. 스크립트의 시나리오와 연계하여 작성하면 스트레스 테스트 중 성능 데이터 수집을 완료하고, 그림 순서를 기반으로 어떤 단계에서 성능 데이터 이상을 발생시키는지 쉽게 찾을 수 있어야 합니다.
이것을 보고 Xiaosheng은 한숨을 쉬었을 뿐만 아니라 무료 도구 세트로 이 수준을 달성할 수 있습니다. 무엇을 더 바랄 수 있겠습니까!
위의 테스트 과정을 통해 얕은 것에서 깊은 것, 깊은 것에서 황홀한 것까지, 이상하고 신비로운 것처럼 보이는 작은 프로그램은 테스트 엔지니어의 눈에 너무나 친숙하고 친숙해졌습니다. 성능 데이터 수집, 특수 테스트 레이아웃부터 다중 기계 공동 테스트, 다중 계정 배포, 풍부한 보고서 결과의 최종 표시에 이르기까지 XTest는 미니 프로그램에 적합한 것으로 보입니다. 이 모든 것이 하나님의 뜻인가 아니면 우연인가? 간단히 말해서, Tencent는 이미 우리를 위해 완전한 상황을 제시했습니다. 이 긴장감은 편집자의 단일 코어 CPU가 처리할 수 있는 계산량을 완전히 초과했습니다. 미니프로그램 테스트에 만반의 준비가 되어 있다는 것만 알고 있으니 미니프로그램의 폭풍은 더욱 거세질 것이다.
WeChat 미니 프로그램의 자동 친밀 접촉과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!