Heim > WeChat-Applet > Mini-Programmentwicklung > WeChat Mini-Programm Automatisierter intimer Kontakt

WeChat Mini-Programm Automatisierter intimer Kontakt

高洛峰
Freigeben: 2017-02-09 14:04:46
Original
3307 Leute haben es durchsucht

Das Miniprogramm, mit dem Sie beginnen, ist die offizielle Testdemo von WeChat. Ähnlich wie die Android-API-Demos zeigt das offizielle Miniprogramm auch die Verwendung verschiedener Steuerelemente und die Erweiterungsmöglichkeiten gängiger Schnittstellen. Nachdem Sie das WeChat-Konto des Entwicklers hinzugefügt haben, können Sie das WeChat-Applet öffnen, indem Sie den QR-Code scannen.


1. Miniprogramm-Laufzeitanalyse


1. Starten Sie zunächst WeChat und prüfen Sie, welche Prozesse ausgeführt werden sind da.

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:/ $
Nach dem Login kopieren

Es gibt insgesamt vier Prozesse, die derzeit den WeChat-Bildschirm anzeigen. Dem Namen nach sollte es com.tencent.mm sein.

shell@HWNXT:/ $ dumpsys activity top | grep ACTIVITY
  ACTIVITY com.tencent.mm/.ui.LauncherUI 44c445f pid=7593
Nach dem Login kopieren

Überprüfen Sie den Befehl. Der aktuelle Top-Prozess ist 7593, was tatsächlich com.tencent.mm ist.


2. Als Nächstes werfen wir einen Blick auf die Prozessänderungen nach dem Start der offiziellen Demo des WeChat-Miniprogramms.

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:/ $
Nach dem Login kopieren

Es gibt einen weiteren Prozess, com.tencent.mm:appbrand0. In welchem ​​Prozess läuft das WeChat-Applet?

Sehen Sie sich den Top-Prozess an:

shell@HWNXT:/ $ dumpsys activity top | grep ACTIVITY
  ACTIVITY com.tencent.mm/.plugin.appbrand.ui.AppBrandUI 15a772 pid=9896
shell@HWNXT:/ $
Nach dem Login kopieren

Der aktuelle Top-Prozess ist 9896, was tatsächlich com.tencent.mm:appbrand0 ist.

Es ist ersichtlich, dass WeChat einen separaten Prozess für das Miniprogramm eröffnet hat, um die Ressourcen und Unabhängigkeit des Miniprogramms sicherzustellen.


3. Werden das WeChat-Applet und das Öffnen einer Webseite in WeChat durch dasselbe Modul implementiert?

Öffnen Sie eine Webseite in WeChat und überprüfen Sie dann den Prozess:

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
Nach dem Login kopieren

Der Prozess hat sich nicht geändert. Schauen Sie sich den oberen Prozess an:

shell@HWNXT:/ $ dumpsys activity top | grep ACTIVITY
  ACTIVITY com.tencent.mm/.plugin.webview.ui.tools.WebViewUI 1502038 pid=14685
Nach dem Login kopieren

Der Die Webseite befindet sich tatsächlich auf com .tencent.mm: wird im Tools-Prozess geöffnet und die Aktivitäten der beiden sind unterschiedlich. Das Applet ist .plugin.appbrand.ui.AppBrandUI und die Webseite ist .plugin.webview.ui .tools.WebViewUI.

Es scheint einen Unterschied zwischen einem WeChat-Applet und einer einfachen Webseite zu geben.


2. Die Bildschirmzusammensetzung des Miniprogramms


Verwenden Sie UIAutomator, um die Komponenten zu analysieren, aus denen der WeChat besteht Mini-Programmbildschirm

WeChat Mini-Programm Automatisierter intimer Kontakt

Durch die Analyse des Bildschirms mit UIAutomator haben wir festgestellt, dass die WeChat-Applet-Demo aus drei Teilen besteht: Top ActionBar und in der Mitte Tencents eigenes WebView. Dies sollte Tencents selbstentwickelter X5-Kern sein. Unten befindet sich eine untere Aktionsleiste, die den Inhaltsteil des Applets in X5 WebView anzeigt.


Es ist ersichtlich, dass die Seitenanzeige des WeChat-Applets die H5-Hybridanzeigelösung aus nativen Android-Steuerelementen und WebView verwendet, was einer sehr verbreiteten entspricht H5-Hybridanwendung auf dem Markt.


3. So führen Sie automatisierte Tests von WeChat-Miniprogrammen durch


Derzeit ist das Android-Framework für automatisierte Tests verfügbar Hauptsächlich in 6 Kategorien unterteilt:


Robolectric wird häufig in Unit-Tests verwendet. Der spezifische Implementierungsplan besteht darin, einen Satz Android-Code zu implementieren, der von der JVM ausgeführt werden kann Fangen Sie dann den Android-bezogenen Code ab, wenn der Unit-Test ausgeführt wird, gehen Sie zu ihrem Implementierungscode, um den aufrufenden Prozess auszuführen, und bereichern Sie viele erweiterte Schnittstellen basierend auf den Android-Standardklassen. Dies erleichtert den Unit-Test-Prozess tatsächlich erheblich. Aber für unsere Teststudenten, die sich auf die Funktionsebene konzentrieren, gibt es tatsächlich einige taube Krallen und die praktische Bedeutung ist nicht sehr groß.

Monkey ist ein Stabilitätstest-Tool, das mit dem Android-System geliefert wird. Viele Hersteller verwenden es auch als Stabilitäts-Akzeptanz-Messtool für integrierte Produkte Der Name lässt vermuten, dass ein Affe den Testprozess zur Bestimmung funktionaler Anwendungsfälle nicht abschließen kann. Warten wir leider, bis sich der Affe zu einem Menschen entwickelt.

UIAutomator ist eines der wenigen automatisierten Test-Frameworks, die offiziell von Android unterstützt werden. Die früheste veröffentlichte Version ist API Level 17. Als steuerungsbasiertes Automatisierungsframework verfügt UIAutomator über eine klare Benutzeroberfläche und ist einfach zu verwenden. Basierend auf UIAutomator wurde auch das berühmte Open-Source-Automatisierungsframework Appium entwickelt, das in der Branche einen sehr hohen Stellenwert hat. Voraussetzung für die Verwendung von UIAutomator ist jedoch, dass Sie UIAutomatorViewer verwenden können, um die Attributinformationen unserer Voroperationssteuerelemente anzuzeigen. Aus der obigen Analyse haben wir gesehen, dass der übergeordnete Container einiger Steuerelemente im Miniprogramm ist keine Standardstruktur und sollte der von Tencent selbst entwickelte X5-Kernel sein. Die Idee, Appium UIAutomator zum Ausführen der Automatisierung zu verwenden, wurde inzwischen aufgegeben.

Es gibt auch eine Android-Genotyp-Testlösung wie Instrumentation, die Sie in Betracht ziehen können. Das berühmte automatisierte Test-Framework von Robotium wurde hier geboren. Nach einiger Zeit wurde mir jedoch klar, dass Sie eine Produktquelle benötigen Code. Das Testprojekt wird normalerweise im selben Projektverzeichnis wie der Produktquellcode abgelegt. Die Frage ist also, wer mir den Quellcode von WeChat geben kann ? Hey, hey, kann mich jemand hören? !@#@%&^

In den frühen Tagen gab es eine automatisierte Testfunktion, die durch Eskalation und Injektion von Systemprivilegien erreicht wurde, wie z. B. Baidus Café und Alibabas Arthrun. Die meisten von ihnen kopierten das xposed-Architekturmodell und hatten es auch leistungsstarke Systemsteuerungsfunktionen. Aber wo sind diese Frameworks heute? Es stellt sich heraus, dass die Version 6.0 bisher fast unmöglich geworden ist, da sie für Android-Root immer schwieriger wird. Daher wurde die Wartung dieser Art von Open-Source-Framework um 2014 eingestellt andere Wege finden.

基于图像识别也有一些自动化测试框架,例如sikuli还有testin的自动化工具,然而小生之所以直接就把这类框架pass掉是因为这种测试脚本基本不具备扩展性,系统ui风格变更,想要做断言验证,以及日后用例维护等等,想都不敢想。


铁鞋踏破仍无路,靓女帅哥也踌躇啊,忽然间灵感一现,腾讯自家会不会有什么奇葩产品可用啊,知行合一谷歌百度,搜索腾讯自动化立马看到腾讯优测的介绍,到官网里翻了一下找到一款叫XTest的自动化测试工具,看到简介目前只支持Android平台,想想前面历程这般痛苦,还要啥自行车啊。于是乎赶忙下载了一套热气腾腾的XTest,安装完毕,一切准备就绪,关门,放XTest。在经过一番折腾后基本领悟了XTest的使用心法,下面我就从大家平时经常开展的性能测试走起。

一、录制脚本,加入循环等操作


使用XTest录制从体验上确实简单便捷,简单到不用插线不用PC,可以躺着录走着录,即使撩妹都不耽误测试,跟平时操作App无异。对比早期录制脚本又抓控件又摸路径受的罪,幸福感大增。录制很容易上手,就是在录制模式下,按照case跑一遍就OK了,脚本自动生成,这里不做赘述,为了让测试更加充分,我又徒手一口气在复杂路径加了50个循环。真的是徒手,因为就是用手机端的脚本编辑功能就实现了。

WeChat Mini-Programm Automatisierter intimer Kontakt

二、开始回放查看结果


搞定脚本后可进行本地回放或多机联测,由于是基于控件的录制技术,所以回放过程比较顺利。测试结束后在手机/sdcard/kat/result路径下会生成kat_Performance.csv文件,这就是测试过程的性能数据了,具体信息如下:

WeChat Mini-Programm Automatisierter intimer Kontakt

性能数据比较中规中矩,内存,cpu,电池温度,流量,帧率数据都有,页面切换滑动点击均无丢帧现象(不过这也可能跟XTest脚本回放速度比较慢有关,这点是这款工具目前看来一个比较让人吐槽的点)。


仅此结果就能满足小生的欲望么?那是绝对不可能的,没有设备耗电信息怎么能算是一个完整的性能测试呢。


三、导出脚本,追加耗电信息输出


通过前期学习,了解到XTest可以导出脚本进行二次编辑并且支持130多个API作为复杂测试任务的扩展,长话短说我将录制的脚本导出到sublime编辑器,加入电量测试代码(自定义的代码,写的不完美不欢迎吐槽)(o^^o)


1.脚本开头加入电池数据清空代码

-- 电池数据清空

shell('dumpsys batterystats --reset && echo True')
Nach dem Login kopieren

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()
Nach dem Login kopieren

3.重新启动测试,测试完成后到logcat日志中收割电量测试结果,目标文件就在/sdcard/kat/result目录下(logcat.txt)如下:

WeChat Mini-Programm Automatisierter intimer Kontakt

好吧,看起来也都正常,我只是想说嗯这个也可以测,因为这个xtest可以摆脱usb线束缚无线回放脚本,这样才能获取到较为精准的电量信息。当然,希望今后类似的专项测试也能有个好的报表展现方式。


PS:注意这是耗电测试,所以充电压脉带,也正是XTest这种可无线测试的自动化引擎,才能方便搞定之前需要频繁插拔usb线才能完成的测试任务。

一、小程序分析


弄完了性能测试,我们切回主题,搞一下小程序,着手开展小程序UI自动化前,我们需要关注一下XTest是否可以轻松撸到小程序的控件


1、小程序的Hybrid控件

小程序对当前已支持的组件给出了演示程序,首先看下这些控件的真面目

WeChat Mini-Programm Automatisierter intimer Kontakt

使用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...


Zum Beispiel ist das Ressourcen-ID-Attributfeld des Steuerelements „SPAN“ und das Textattributfeld ist „Text“. , und das Rechteck des Steuerelements Koordinatenbereichswerte und Layouthierarchie, diese Daten können mit XTest genau ermittelt werden.


2. Können spezielle Steuerelemente auch Objekteigenschaften erhalten?

WeChat Mini-Programm Automatisierter intimer Kontakt

Switch, Video, Canvas, Karte und andere Komponenten können Objekteigenschaften erhalten. Basierend auf diesen Daten kann die Erfassung der UI-Automatisierungssteuerung abgeschlossen werden.


2. Mini-Programmtestübung


1. Videoschnittstellentest


Neben der Bereitstellung von Komponenten zeigt die Mini-Programmdemonstration auch einige Schnittstellenfunktionen, aus denen ein repräsentativer relativ komplexer Anwendungsfall der „Auswahl eines Videos“ zum Testen extrahiert wird: (Schnittstellentyp: Medien--Video)

WeChat Mini-Programm Automatisierter intimer Kontakt

Geben Sie den Hauptpfad ein. Wenn Sie auf das +-Steuerelement im Bild klicken, gelangen Sie zur Systemkamera. Was! …….., XTest ist außer Kontrolle, außer Kontrolle und kann den Betrieb der Systemkamera nicht aufzeichnen. Was wurde in der Demo-Werbung zum Thema Cross-Process erwähnt, warum hat es dieses Mal überhaupt nicht funktioniert? Mit Unmut und Zweifeln kontaktierte ich meine XTest-Entwicklungskameraden. Sie erwähnten, dass das Tool selbst prozessübergreifende Tests unterstützt, vorausgesetzt, die betreffende APK muss über ihr Tool auf das Mobiltelefon hochgeladen werden. Die spezifischen Vorschläge, die sie mir gegeben haben, sind:


1) Ersetzen Sie die Standard-Systemkamera durch andere Kameraanwendungen und laden Sie dann diese APK zum Testen auf das Mobiltelefon hoch

2) Verwenden Sie Automatisierung + Handbuch Interaktion


Letzteres interessiert mich sehr, was ist Automatisierung + manuelle Arbeit? Ich habe es versucht und mit ihrer Hilfe habe ich es tatsächlich geschafft. Ich habe eine Anweisung in das Skript eingefügt: Schließen Sie den Interaktionsprozess zwischen Automatisierung und manueller Arbeit ab. Drücken Sie nach Abschluss die Lautstärketaste, um die Testergebnisse zu melden. und dann übernimmt die Automatisierung die Aufgabe und setzt die Ausführung fort. Es scheint, dass die Prüfindustrie in Zukunft auch Fabrikmontagelinien einführen wird. Beim Gedanken an die Ausrüstung in der Foxconn-Fabrik, die immer menschlicher wird, und an die Menschen, die immer maschinenähnlicher werden, schauderte Xiaosheng.

WeChat Mini-Programm Automatisierter intimer Kontakt

2. Multi-Account-Verteilungstest


Sehen Sie, dass im Bild oben 4 Maschinen gleichzeitig laufen. Für das Testen des WeChat-Programms ist eine Kontoanmeldung erforderlich. Das WeChat-Applet-Anmeldekonto wird einheitlich vom Server verwaltet und zur Laufzeit an das Mobiltelefon gesendet, um die Anmeldung abzuschließen.

WeChat Mini-Programm Automatisierter intimer Kontakt

Beachten Sie, dass die vier Konten im Bild die einzigen vom Server zugewiesenen Konten sind und unterschiedlich sind, um sicherzustellen, dass sich jedes Gerät anmelden kann Reibungslos und die Anmeldung beim Framework ermöglicht das gemeinsame Testen mehrerer Maschinen.


3. Anzeige des gemeinsamen Testberichts


Nach Abschluss des gemeinsamen Tests für mehrere Konten und mehrere Maschinen Sie können den Testbericht direkt auf der Serverseite überprüfen.

WeChat Mini-Programm Automatisierter intimer Kontakt

Das Bild oben zeigt die Leistungsdaten eines Geräts nach dem gemeinsamen Testen mehrerer Maschinen mit Xtest. Auf dem Screenshot können Sie sehen, dass die rote Linie (CPU) der Kurve nach dem Aufrufen der Videoschnittstelle des Miniprogramms und dem Starten der Wiedergabe (Schritt 6) nach oben zu steigen beginnt, während das Video in den Cache geladen wird (Schritte). 7 und 8) stellt den Upstream- und Downstream-Verkehr dar. Die grüne Linie (NetFlow) beginnt stark anzusteigen. Nun, es stimmt durchaus mit der makrokognitiven Theorie des Menschen überein. Wenn Sie es entsprechend dem Szenario des Skripts schreiben, sollte es einfach sein, die Leistungsdatenerfassung während des Stresstests abzuschließen und anhand der Bildsequenz zu ermitteln, welche Schritte zu abnormalen Leistungsdaten führen.


Als Xiaosheng das sah, seufzte er nicht nur, eine Reihe kostenloser Tools können ein solches Niveau erreichen, was kann ich mehr verlangen!

Nach dem oben genannten Testprozess von flach zu tief und von tief zu Ekstase ist das scheinbar seltsame und mysteriöse kleine Programm in den Augen unserer Testingenieure so vertraut und intim geworden. Von der Leistungsdatenerfassung, dem speziellen Testlayout über gemeinsame Tests auf mehreren Maschinen und die Verteilung auf mehrere Konten bis hin zur endgültigen Anzeige umfangreicher Berichtsergebnisse scheint XTest für Miniprogramme bereit zu sein. Ist das alles Gottes Wille oder ein Zufall? Oder einfach gesagt, Tencent hat uns bereits eine vollständige Situation dargelegt. Diese hirnverbrennende Spannung hat die Menge an Berechnungen, die die Single-Core-CPU des Editors bewältigen kann, bei weitem übertroffen. Ich weiß nur, dass ich für den Miniprogramm-Test bestens vorbereitet bin, sodass der Sturm des Miniprogramms noch heftiger kommen wird.

Weitere Artikel zum automatisierten Intimkontakt von WeChat-Miniprogrammen finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage