- 最近在钻研手机端的专项测试,总结了一些内容;
工具收集:
- appcrawler:类似monkey的自动化遍历app爬虫工具
github地址https://github.com/seveniruby/AppCrawler ;- 自动化探索性测试并获取加载时间和性能数据,需要借助一些工具
- 支持ios和Android
- 命令行执行
- 支持自定义断言判断app是否崩溃
- 支持阿里开源ui自动化框架macaca
- 新老版本对比
- leakcanary:Android的高效率发现大部分内存泄漏导致的OOM
- 开源的,基于java语言,github地址https://github.com/square/leakcanary
中文说明:https://www.liaohuqiu.net/cn/posts/leak-canary-read-me/- 可在appcrawler集成
- https://testerhome.com/topics/6022(在Jenkins上的实战帖)
- 开源的,基于java语言,github地址https://github.com/square/leakcanary
- MLeaksFinder:ios版自动内存泄漏检测工具
- 开源的,基于object-c语言
github地址 https://github.com/Zepo/MLeaksFinder
中文说明:https://wereadteam.github.io/2016/07/20/MLeaksFinder2 - 可在appcrawler集成
- 开源的,基于object-c语言
- BlockCanaryEx:记录Android卡顿日志
- 开源的,基于BlockCanary项目
github地址 https://github.com/seiginonakama/BlockCanaryEx
中文说明:
https://github.com/seiginonakama/BlockCanaryEx/blob/master/README_ZH.md - 卡顿的时候侧重于关注app的代码,哪些方法耗时最多,重点记录和在ui显示出来
- gc采样,卡顿的时候关注gc是否出现问题
- 需要在app代码内注入
- 开源的,基于BlockCanary项目
- 腾讯gt:直接运行在手机,抓取性能参数
- 支持ios(需要嵌入工程)和Android(由app和sdk组成,GT控制台可以独立安装使用,SDK需嵌入被调测的应用、并利用GT控制台进行信息展示和参数修改)
- github地址:https://github.com/Tencent/GT
- adb shell命令
python-正确保留多位小数
发表于
|
分类于
技术水文
python自带的float函数在保留两位小数的时候不够准确容易出现误差,而(‘%.2f’ % a)的方式是将数字转成了字符串类型,无法进行数字运算,所以这里我们将封装一个方法来实现正确的保留多位小数。
通过python编码生成RobotFramework类
发表于
|
分类于
技术水文
- 在此记录下之前开发web版ride的过程中,遇到了python执行robot脚本的问题。
直接创建TestSuit类
- 通过python脚本生成Robot Framework 里面的TestSuite,并执行以下逻辑: 123456789from robot.api import TestSuitets = TestSuite('test')ts.resource.imports.library('Selenium2Library')ts.resource.imports.resource('d:/temp/flows.robot')tc = ts.tests.create('case')tc.keywords.create('Open Browser', args=[u'url=http://www.baidu.com', u'browser=gc'])tc.keywords.create('Go to', args=[u'url=http://tieba.baidu.com'])tc.keywords.create(u'\u5546\u54c1\u8be6\u60c5\u9875\u968f\u673a\u9009\u62e9\u5546\u54c1', args=[])ts.run()
利用locust和multi-mechanize 针对flask服务做压力测试
发表于
|
分类于
技术水文
执行环境
- centos7
Locust
- 前面的帖子已经针对locust做了一个简单的介绍,这里将记录一下使用locust编写简单的压测脚本
- 适用环境: python 2.7,python 3.3,3.4,3.5和3.6
- 官网: http://docs.locust.io/
- 所需库: locustio
python-发送带图片的邮件
发表于
|
分类于
技术水文
实现步骤
设置邮件为多文本格式
1MIMEMultipart('related')编写html格式内容包含图片信息
12msgHtmlImg = '<img src="cid:image{count}"><br>'MIMEText(msgHtmlImg, 'html')读取图片并添加邮件头
1234567fp = open(imgpath, 'rb')msgImage = MIMEImage(fp.read())fp.close()# Define the image's ID as referenced abovemsgImage.add_header('Content-ID', '<image{count}>'.format(count=i))msgRoot.attach(msgImage)
celery在Django中的应用
发表于
|
分类于
技术水文
celery介绍
- Celery 是一个由 Python 编写的简单、灵活、可靠的用来处理大量信息的分布式系统,它同时提供操作和维护分布式系统所需的工具。
Celery 专注于实时任务处理,支持任务调度。
说白了,它是一个分布式队列的管理工具,我们可以用 Celery 提供的接口快速实现并管理一个分布式的任务队列。
关于celery的概念介绍
Brokers
- brokers 中文意思为中间人,在这里就是指任务队列本身,Celery 扮演生产者和消费者的角色,brokers 就是生产者和消费者存放/拿取产品的地方(队列)
- 常见的 brokers 有 rabbitmq、redis、Zookeeper 等
Result Stores / backend
- 顾名思义就是结果储存的地方,队列中的任务运行完后的结果或者状态需要被任务发送者知道,那么就需要一个地方储存这些结果,就是 Result Stores 了
- 常见的 backend 有 redis、Memcached 甚至常用的数据都可以。
Workers
- 就是 Celery 中的工作者,类似与生产/消费模型中的消费者,其从队列中取出任务并执行
Tasks
- 就是我们想在队列中进行的任务咯,一般由用户、触发器或其他操作将任务入队,然后交由 workers 进行处理。
vim编辑器配置上的坑
发表于
|
分类于
技术水文
【遇到的问题】
- vim的配置被别人的误操作下修改或删除了”~/.vimrc” 配置文件,导致vim编辑器错乱,不可编辑,不可删除。
【解决办法】
删除旧的”~/.vim”文件夹和”~/.vimrc” 文件;
12rm ~/.vimrcrm -Rf ~/.vim创建新的”~/.vim”文件夹和”~/.vimrc” 文件;
12mkdir ~/.vimtouch ~/.vimrc
使用pt-query-digest分析mysql慢日志
发表于
|
分类于
技术水文
工具介绍
- pt系列(percona-toolkit)是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务。这些任务包括:
- 检查master和slave数据的一致性
- 有效地对记录进行归档
- 查找重复的索引
- 对服务器信息进行汇总
- 分析来自日志和tcpdump的查询
- 当系统出问题的时候收集重要的系统信息
- pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。
安装
安装percona-toolkit非常简单,到官网下载.tar.gz包:
12wget percona.com/get/percona-toolkit.tar.gztar -zxvf percona-toolkit-2.2.20.tar.gz然后依次执行下面的命令:
1234perl Makefile.PLmakemake testmake install默认的会被安装在/usr/local/bin目录下。执行man percona-toolkit可以查看安装了哪些工具。
如果安装过程中遇到错误有可能是因为缺少相应包,.pm包实际上perl的包,运行下面的命令安装即可:1yum install -y perl-Time-HiRes如果安装过程中出现” Error Downloading Packages”错误,尝试yum clean all后再安装。使用其Percona Toolkit中其他工具也可能会遇到类似的问题,按照提示安装相应的perl包就可以了。s
如果单独安装pt-query-digest
- pt-query-digest是一个perl脚本,只需下载并赋权即可执行。12[root@test1 ]# wget percona.com/get/pt-query-digest[root@test1 ]# chmod u+x pt-query-digest
性能测试工具locust使用
发表于
|
分类于
技术水文
部分内容转自https://my.oschina.net/u/1433482/blog/634047
什么是locustio?
- Locust是易于使用、分布式的用户负载测试工具。用于网站(或其他系统)的负载测试,计算出系统可以处理并发用户数。
测试时大量蝗虫会攻击你的网站。每只蝗虫(或叫测试用户)可以自定义、测试过程由web界面实时监控。这能帮助测试并确定瓶颈。
Locust 完全基于的事件,单机可以支持数千用户。它不使用回调,而是基于轻量进程gevent, 能简单地实线各种场景。
特点
- Python书写场景
- 无需笨重的UI或XML。仅仅是代码,协程而不是回调。
- 分布式,可扩展和,支持成千上万的用户
- 基于Web的用户界面(基于flask)
- Locust有整洁HTML + JS用户界面,实时展示测试细节,跨平台和易于扩展。
- 可以测试任何系统
- 可控制
- 我们研究了现有的解决方案,都不符合要求。比如Apache JMeter和Tsung。JMeter基于UI操作,容易上手,但基本上不具备编程能力。其次JMeter基于线程,要模拟数千用户几乎不可能。 Tsung基于Erlang,能模拟上千用户并易于扩展,但它它基于XML的DSL,描述场景能力弱,且需要大量的数据处理才知道测试结果。
无论如何,我们试图解决创建蝗虫,当这些问题。希望以上都不是painpoints应该存在。
我想你可以说我们真的只是想在这里从头开始自己的痒。我们希望其他人会发现,因为我们做的是有益的。
【django】嵌入LDAP心得
发表于
|
分类于
技术水文
涉及第三方库:
- pyldap(如果部署在windows上需要用whl包来安装比较顺利,参考pyldap-2.4.28-cp35-cp35m-win_amd64.whl)
- django-auth-ldap
修改setting文件
需要导入2个库
12import ldapfrom django_auth_ldap.config import LDAPSearch添加配置文件
123456789101112LOGIN_URL = '/login.html'AUTHENTICATION_BACKENDS = (# 'django_auth_ldap.backend.LDAPBackend','dashboard.myldapbackend.MYLDAPBackend',# 'django.contrib.auth.backends.ModelBackend',)AUTH_LDAP_SERVER_URI = 'ldap://127.0.0.1'AUTH_LDAP_BIND_DN = 'cn=Manager,dc=abc,dc=com'AUTH_LDAP_BIND_PASSWORD = "123456"AUTH_LDAP_USER_SEARCH = LDAPSearch("dc=abc,dc=com", ldap.SCOPE_SUBTREE, "(cn=%(user)s)")AUTH_LDAP_ALWAYS_UPDATE_USER = False