2017总结

2016还有几天就结束了,公司的Review基本做完,自己再做个总结。便于对新的一年有整体的规划。 2016 工作 专业技能 测试技能 掌握Protractor对Angular项目的测试 掌握SuperTest进行API测试 熟悉项目中应用Docker,进行容器化部署的全流程 更加深入的掌握JMeter在性能测试中的功能 其它角色 实践PM、BA角色在项目中的经验 实践公司项目售前的操作方法 利用自己的个人项目,体验敏捷项目中,其它各角色的工作方式 业务 了解银行账号系统、借贷系统 了解市面主流敏捷看板工具,及各自优缺点 ...

December 28, 2016 · 2 min · Yuanjie

Android UI自动化测试神器-Espresso录制

Espresso Test Recorder的好处 直接录制与APP的所有交互操作 支持在录制过程中添加断言 可直接生成可回放的测试脚本,基本不需要做任何修改 原文地址: Create UI Tests with Espresso Test Recorder,以下为正文 注意: Espresso Test Recorder在AndroidStudio 2.2 Beta版本之后才有。 Espresso Test Recorder可以在不写一行代码的情况下创建UI测试。通过录制一个测试场景,你可以记录设备的交互并在APP的部分快照中添加断言来验证元素。Espresso Test Recorder会保存录制并自动生成对应的UI测试,并可直接运行来测试你的APP。 Espresso Test Recorder编写的测试基于Espresso Testing framework,API在Android Testing Support Library。Espresso API鼓励你创建基于用户操作的简洁且可信赖的UI测试。通过使用expectations、interactions和assertions而不是底层APP的Activity和Views,这样的结构防止了测试的脆弱性并优化测试运行速度。 ...

November 25, 2016 · 7 min · Yuanjie

Android模拟器环境搭建

目的 Mac电脑上面搭建Android模拟器 将APP运行在模拟器中 自己最近刚把电脑重新安装,顺便梳理下整修安装过程。为后面研究Espresso做准备 ...

November 22, 2016 · 2 min · Yuanjie

性能测试与持续集成

目的 将性能测试与持续集成挂接起来 性能测试: JMeter 持续集成: Jenkins ...

August 7, 2016 · 2 min · Yuanjie

简书爬虫

简书爬虫 此功能纯粹为个人意想功能,利用业余时间来学习Node。所有内容均已开源,欢迎各种PR和Fork。最后更新时间: 20161129。 项目 源代码 https://github.com/aimer1124/JianshuSpider 需求 Teambition-简书爬虫 效果图 Home Article Author Collections Search ShowCase Home Articles Authors Collections Search 代码 启动 DB: sudo mongod 程序: gulp 测试: gulp test 版本 Node: 4.4.3 Mongo: 3.0.3 引用包列表 Backend express: http://expressjs.com/,node web框架 body-parser: 请求数据体的转换中间件 cookie-parser: 请求头的cookie管理 debug: 调试工具 morgan: 日志中间件 ...

July 19, 2016 · 3 min · Yuanjie

Chrome设置网络延迟与带宽

Developer Tools开发者工具查看网络请求 Windows: F12键 Mac OS: option+command+i键 打开网络请求Network 请求网址http://aimer1124.github.io/后,Network中便会有本次的网络请求内容 点击第一条请求http://aimer1124.github.io/,可查看到此网络请求的详细信息Request/Response 切换到Timing栏中,显示具体的请求时间消耗 切换Headers、Preview、Response、Cookies,也可直接查看对应的信息 设置网络延迟和带宽 点击No throttling会显示出Chrome已提前设置好常用的网络延迟和带宽,供直接选择 网络类型 带宽 延迟 Offline 0kb/s 0ms GPRS 50kb/s 500ms Regular 2G 250kb/s 300ms Good 2G 450kb/s 150ms Regular 3G 750kb/s 100ms Good 3G 1Mb/s 40ms Regular 4G 4Mb/s 20ms DSL 2Mb/s 5ms WiFi 30Mb/s 2ms 选择GRPS,clear网络请求,再次刷新页面,查看请求http://aimer1124.github.io/的Timing 此时,可查看到对应的网络延迟已经生效 自定义网络延迟和带宽 点击No throttling-Custom-add进入Network Throttling Profiles设置页面 设置Profile Name:slow1S,Throughput:10,Latency为:1000 关闭设置框,切换No throttling为slow1S,自定义网络延迟与带宽设置完成 参考 Measure Resource Loading Times:https://developers.google.com/web/tools/chrome-devtools/profile/network-performance/resource-loading#network-panel-overview Device Mode & Mobile Emulation:https://developer.chrome.com/devtools/docs/device-mode

March 9, 2016 · 2 min · Yuanjie

Git添加ignore文件

Git Ignore 忽略特殊指定的文件 gitignore - Specifies intentionally untracked files to ignore 操作 全局忽略 直接使用命令git config --global core.excludesfile ~/.gitignore_global 未添加到仓库的文件 直接在仓库根目录创建.gitignore文件 在文件中配制所需要ignore的文件清单 还原的话,直接在.gitignore中删除对应的配制行即可 已提交到仓库的文件 先更新仓库至最新版本 添加指定指定的忽略文件git update-index --assume-unchanged Gruntfile.js,此处忽略Gruntfile.js文件 还原的话,使用命令git update-index --no-assume-unchanged Gruntfile.js,重新添加对Gruntfile.js文件的追踪 建议 Github官方提供的常用各种ignore文件大全,https://github.com/github/gitignore 将.gitignore文件提交到远程仓库中,便于整个项目的管理 .gitignore添加文件的原则 临时生成的文件 本地调度需要经常变更的文件 日志文件 编译生成的中间文件,如Java的.class文件 参考 Git之ignore文件: http://www.douban.com/note/476292319/?type=like Git官方推荐ignore内容:https://github.com/github/gitignore Git官方配制ignore方法:http://git-scm.com/docs/gitignore

March 8, 2016 · 2 min · Yuanjie

Jenkins with Grunt

Jenkins In a nutshell, Jenkins is the leading open source automation server. Built with Java, it provides hundreds of plugins to support building, testing, deploying and automation for virtually any project Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 ...

March 3, 2016 · 3 min · Yuanjie

Node.js时间格式处理

moment库 专门用于Javascript的时间转化、验证、处理、展示 安装moment npm install moment 使用moment 引用moment 1 var moment = require('moment'); 转化时间 1 2 3 4 5 6 7 //将时间格式转化为:2016-01-22 21:21:26 moment(new Date()).format("YYYY-MM-DD HH:mm:ss"); moment().format('MMMM Do YYYY, h:mm:ss a'); // January 26th 2016, 10:25:00 pm moment().format('dddd'); // Tuesday moment().format("MMM Do YY"); // Jan 26th 16 moment().format('YYYY [escaped] YYYY'); // 2016 escaped 2016 moment().format(); // 2016-01-26T22:25:24+08:00 相对时间 1 2 3 4 5 moment("20111031", "YYYYMMDD").fromNow(); // 4 years ago moment("20120620", "YYYYMMDD").fromNow(); // 4 years ago moment().startOf('day').fromNow(); // a day ago moment().endOf('day').fromNow(); // in 2 hours moment().startOf('hour').fromNow(); 日历时间 1 2 3 4 5 6 7 8 moment().subtract(10, 'days').calendar(); // 01/16/2016 moment().subtract(6, 'days').calendar(); // Last Wednesday at 10:27 PM moment().subtract(3, 'days').calendar(); // Last Saturday at 10:27 PM moment().subtract(1, 'days').calendar(); // Yesterday at 10:27 PM moment().calendar(); // Today at 10:27 PM moment().add(1, 'days').calendar(); // Tomorrow at 10:27 PM moment().add(3, 'days').calendar(); // Friday at 10:27 PM moment().add(10, 'days').calendar(); 其它应用 1 2 3 4 5 6 7 8 moment().format('L'); // 01/26/2016 moment().format('l'); // 1/26/2016 moment().format('LL'); // January 26, 2016 moment().format('ll'); // Jan 26, 2016 moment().format('LLL'); // January 26, 2016 10:28 PM moment().format('lll'); // Jan 26, 2016 10:28 PM moment().format('LLLL'); // Tuesday, January 26, 2016 10:28 PM moment().format('llll'); 其它使用:官方文档 API测试应用:Node.js 日期判断、对比 日期格式转化

January 26, 2016 · 1 min · Yuanjie

Node.js调用数据库:Mysql

安装Mysql包 npm install mysql 调用 Mysql包 1 var mysql = require('mysql'); 数据库查询 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 var mysql = require('mysql'); var connection = mysql.createConnection({ host : '10.29.10.29', port : 3307, user : 'root', password : '', database : 'emall', //charset : 'UTF8_GENERAL_CI', debug : false }); connection.connect(); connection.query("use emall"); connection.query('select id from users', function(err,results) { if (err) { throw err; } }); connection.end(); 数据库插入 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 var mysql = require('mysql'); var connection = mysql.createConnection({ host : '10.29.10.29', port : 3307, user : 'root', password : '', database : 'emall', //charset : 'UTF8_GENERAL_CI', debug : false }); connection.connect(); connection.query("use emall"); var insertUser2 = "INSERT INTO `sms_verification_code` (`phone_number`, `code`) VALUES ('18392520000', '018227');"; connection.query(insertUser2,function(err,results,field){ if (err) { throw err; } }); connection.end(); API测试应用:Node.js 初始化数据 数据CRUD 获取部分无返回值的Post结果,如:查询创建用户后,获取用户的ID

January 26, 2016 · 1 min · Yuanjie