Maison  >  Article  >  Applet WeChat  >  Contact intime automatisé du mini programme WeChat

Contact intime automatisé du mini programme WeChat

高洛峰
高洛峰original
2017-02-09 14:04:463283parcourir

Le mini-programme avec lequel vous démarrez est la démo de test officielle de WeChat. Semblable aux démos Android Api, le mini-programme officiel montre également l'utilisation de divers contrôles et les capacités d'extension des interfaces communes. Après avoir ajouté le compte WeChat du développeur, vous pouvez ouvrir l'applet WeChat en scannant le code QR.


1. Analyse de l'exécution du mini programme


1. Tout d'abord, démarrez WeChat et vérifiez les processus WeChat. sont là.

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:/ $

Il y a quatre processus au total. Jetez un œil au processus affichant actuellement l'écran WeChat. À en juger par son nom, il devrait être com.tencent.mm.

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

Vérifiez via la commande. Le processus principal actuel est 7593, qui est bien com.tencent.mm.


2. Ensuite, examinons les changements de processus après le lancement de la démo officielle du mini programme WeChat.

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:/ $

Il existe un autre processus, com.tencent.mm:appbrand0. Dans quel processus l'applet WeChat s'exécute-t-elle ?

Regardez le processus principal :

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

Le processus principal actuel est 9896, qui est bien com.tencent.mm:appbrand0.

On peut voir qu'afin de garantir les ressources et l'indépendance du mini programme, WeChat a ouvert un processus distinct pour le mini programme.


3. L'applet WeChat et l'ouverture d'une page Web dans WeChat sont-elles implémentées par le même module ?

Ouvrez une page Web dans WeChat, puis vérifiez le processus :

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

Le processus n'a pas changé, regardez le processus supérieur :

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

Le la page Web est en fait sur com .tencent.mm : est ouverte dans le processus des outils, et les activités des deux sont différentes. L'applet est .plugin.appbrand.ui.AppBrandUI et la page Web est .plugin.webview.ui. .tools.WebViewUI.

Il semble qu'il y ait une différence entre l'applet WeChat et une simple page Web.


2. La composition de l'écran du mini programme


Utilisez UIAutomator pour analyser les composants qui composent le WeChat. écran du mini programme

Contact intime automatisé du mini programme WeChat

En analysant l'écran avec UIAutomator, nous avons constaté que la démo de l'applet WeChat est composée de trois parties, Top ActionBar, et au milieu se trouve la propre WebView de Tencent, qui devrait être le X5 auto-développé par Tencent. Le noyau, ci-dessous se trouve une barre d'action inférieure, qui affiche la partie contenu de l'applet dans X5 WebView.


On constate que l'affichage des pages de l'applet WeChat utilise la solution d'affichage hybride H5 de contrôles natifs Android et WebView, ce qui équivaut à un très courant Application hybride H5 sur le marché.


3. Comment effectuer des tests automatisés des mini-programmes WeChat


À l'heure actuelle, le cadre de test automatisé Android est principalement divisé en 6 catégories :


Robolectric est couramment utilisé dans les tests unitaires. Le plan de mise en œuvre spécifique consiste à implémenter un ensemble de codes Android qui peuvent être exécutés par la JVM, et. puis interceptez le code lié à Android lorsque le test unitaire est en cours d'exécution, accédez à leur code d'implémentation pour exécuter le processus d'appel et enrichissez de nombreuses interfaces étendues basées sur les classes standard Android. Cela facilite en effet grandement le processus de test unitaire. mais pour nos étudiants tests qui se concentrent sur le niveau fonctionnel, c'est bien Il y a des griffes engourdies, et la signification pratique n'est pas très grande.

Monkey est un outil de test de stabilité fourni avec le système Android. De nombreux fabricants l'utilisent également comme outil de mesure d'acceptation de stabilité pour les produits intégrés. Bien qu'il soit simple et facile à utiliser, il l'est. le nom suggère, Monkey. Après tout, un singe ne peut pas terminer le processus de test pour déterminer les cas d'utilisation fonctionnels. Malheureusement, attendons que le singe évolue vers un humain.

UIAutomator est l'un des rares frameworks de tests automatisés officiellement pris en charge par Android. La première version publiée est l'API niveau 17. En tant que framework d'automatisation basé sur le contrôle, UIAutomator possède une interface claire et est facile à utiliser. Basé sur UIAutomator, le célèbre framework d'automatisation open source Appium a également été développé et son statut dans l'industrie est très fort. Cependant, la condition préalable à l'utilisation de UIAutomator est que vous puissiez utiliser UIAutomatorViewer pour afficher les informations d'attribut de nos contrôles pré-opérationnels. D'après l'analyse ci-dessus, nous avons vu que le conteneur parent de certains contrôles du mini-programme est weview. Il ne s'agit pas d'une structure standard et devrait être le X5 auto-développé par Tencent Kernel. L'idée d'utiliser Appium UIAutomator pour exécuter l'automatisation a depuis été abandonnée.

Il existe également une solution de test de génotype Android comme Instrumentation que vous pouvez envisager. Le célèbre framework de tests automatisés Robotium est né ici. Cependant, après une certaine compréhension, j'ai progressivement compris que qu'il s'agisse d'Instrumentation ou de Robotium, vous avez besoin d'une source de produit. code.Ou signe.Le projet de test est généralement placé dans le même répertoire de projet que le code source du produit. Donc la question est, qui peut me donner le code source de WeChat, c'est aussi bien. ? Hé, hé, est-ce que quelqu'un peut m'entendre ? !@#@%&^

Au début, il existait une capacité de test automatisé obtenue grâce à l'élévation et à l'injection de privilèges système, comme le café de Baidu et arthrun d'Alibaba. La plupart d'entre eux ont copié le modèle d'architecture xposed et l'ont fait. puissantes capacités de contrôle du système. Cependant, où sont ces frameworks aujourd'hui ? Il s'avère que parce que le root d'Android devient de plus en plus difficile, la version 6.0 est devenue presque impossible jusqu'à présent, ce type de framework open source a cessé de le maintenir vers 2014. Il n'est pas fiable et nécessite. être remplacé. Trouver d’autres moyens.

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


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

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


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

Contact intime automatisé du mini programme WeChat

二、开始回放查看结果


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

Contact intime automatisé du mini programme WeChat

性能数据比较中规中矩,内存,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)如下:

Contact intime automatisé du mini programme WeChat

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


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

一、小程序分析


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


1、小程序的Hybrid控件

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

Contact intime automatisé du mini programme WeChat

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


Par exemple, le champ d'attribut Resource-ID du contrôle est "SPAN" et le champ d'attribut de texte est "text" ; , et le rectangle du contrôle Valeurs de la plage de coordonnées et hiérarchie de disposition, ces données peuvent être obtenues avec précision à l'aide de XTest.


2. Les contrôles spéciaux peuvent-ils également obtenir des propriétés d'objet ?

Contact intime automatisé du mini programme WeChat

Le commutateur, la vidéo, le canevas, la carte et d'autres composants peuvent obtenir des propriétés d'objet sur la base de ces données, la capture du contrôle d'automatisation de l'interface utilisateur peut être effectuée.


2. Pratique de test de mini-programme


Test d'interface vidéo


En plus de fournir des composants, la démonstration du mini programme montre également quelques fonctions d'interface, à partir desquelles un cas d'utilisation représentatif relativement complexe de « sélection d'une vidéo » est extrait pour test : (Type d'interface : média--vidéo)

Contact intime automatisé du mini programme WeChat

Entrez par le chemin principal. Lorsque vous cliquez sur le contrôle dans l'image, vous entrerez dans la caméra système. Quoi! …….., XTest est hors de contrôle, hors de contrôle et ne peut pas enregistrer le processus de fonctionnement de la caméra système. Qu'est-ce qui a été mentionné dans la promotion de la démo à propos des processus croisés, pourquoi a-t-il traversé le fossé cette fois-ci ? Avec ressentiment et doutes, j'ai contacté mes camarades de classe de développement XTest. Ils ont mentionné que l'outil lui-même prend en charge les tests multi-processus, à condition que l'apk impliqué doive être téléchargé sur le téléphone mobile via leur outil. Les suggestions spécifiques qu'ils m'ont données sont :


1) Remplacez la caméra système par défaut par d'autres applications de caméra, puis téléchargez cet apk sur le téléphone mobile pour le tester

2) Utiliser l'interaction humaine automatisée


Je suis très curieux de connaître ce dernier point. Qu'est-ce que le travail automatisé ? J'ai essayé et avec leur aide, j'ai réussi. Plus précisément, j'ai inséré une déclaration dans le script : terminez le processus d'interaction entre l'automatisation et le travail manuel. Après avoir terminé, appuyez sur le bouton de volume pour signaler les résultats du test, puis l'automatisation prendra en charge la tâche et poursuivra l'exécution. Il semble que l'industrie des tests adoptera également des chaînes de montage en usine à l'avenir. En pensant aux équipements de l'usine Foxconn qui ressemblent de plus en plus à des humains et aux personnes qui ressemblent de plus en plus à des machines, Xiaosheng frissonna.

Contact intime automatisé du mini programme WeChat

2. Test de distribution multi-comptes


Voyez qu'il y a 4 machines qui fonctionnent ensemble dans l'image ci-dessus, Les tests du programme WeChat nécessitent une connexion au compte. XTest lui-même prend en charge les tests conjoints sur plusieurs machines. Le compte de connexion de l'applet WeChat est géré de manière uniforme par le serveur et est envoyé au téléphone mobile pendant l'exécution pour terminer la connexion.

Contact intime automatisé du mini programme WeChat

Vérifiez que les quatre comptes sur la photo sont les seuls comptes attribués par le serveur, et ils sont différents, garantissant que chaque appareil peut se connecter en douceur et être connecté par Framework pilote les tests conjoints multi-machines.


3. Affichage du rapport de test conjoint


Après avoir terminé la distribution multi-comptes et le test conjoint multi-machines, vous pouvez directement vérifier le rapport de test côté serveur.

Contact intime automatisé du mini programme WeChat

L'image ci-dessus montre les données de performances d'un appareil après des tests conjoints sur plusieurs machines à l'aide de Xtest. Sur la capture d'écran, vous pouvez voir qu'après être entré dans l'interface vidéo du mini-programme et avoir commencé la lecture (étape 6), la ligne rouge (CPU) de la courbe commence à monter au fur et à mesure que la vidéo est chargée dans le cache (étapes). 7 et 8), elle représente le trafic montant et descendant. La ligne verte (NetFlow) commence à augmenter fortement. Eh bien, cela est tout à fait cohérent avec la théorie macrocognitive humaine. Si vous l'écrivez selon le scénario du script, il devrait être facile de terminer la collecte des données de performances pendant le test de résistance et de localiser les étapes qui entraîneront des données de performances anormales en fonction de la séquence d'images.


Voyant cela, Xiaosheng n'a pas seulement soupiré, un ensemble d'outils gratuits peut atteindre un tel niveau, que demander de plus !

Après le processus de test ci-dessus, du superficiel au profond et du profond à l'extase, le petit programme apparemment étrange et mystérieux est devenu si familier et intime aux yeux de nos ingénieurs de test. De l'acquisition de données de performances, à la mise en page spéciale des tests, aux tests conjoints multi-machines, à la distribution multi-comptes et à l'affichage final de résultats de rapports riches, XTest semble être prêt pour les mini-programmes. Est-ce que tout cela est la volonté de Dieu ou une coïncidence ? Ou simplement, Tencent nous a déjà présenté une situation complète. Ce suspense brûlant a complètement dépassé la quantité de calculs que le processeur monocœur de l'éditeur peut gérer. Je sais seulement que je suis parfaitement préparé pour le test du mini-programme, afin que la tempête du mini-programme vienne plus violemment.

Pour plus d'articles liés au contact intime automatisé des mini programmes WeChat, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn