自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sophie2805的专栏

纸上得来终觉浅,绝知此事要躬行

  • 博客(78)
  • 收藏
  • 关注

原创 C#解析PDF:客户化iTextSharp

PDF相关测试一直都是手动进行,自动化测试介入的很少。我们项目,PDF是很重要的一块,客户经常需要将报表导出到PDF。导出的可能是表格,也可能是饼图,条图,线图。表格的话,有flat grid,有tree grid。图的话,花样就更多了,图例,坐标轴…最近的迭代有个story,希望自动化测试能够判断表格导出到PDF格式是否正确。美国那边的on-site leader说让我先探索一下,能否用iText

2016-09-15 19:49:39 3429 6

原创 部署网站经验总结

docker mysql镜像默认是latin文,中文存进去全部变成了??,在镜像启动命令的末尾加两个参数即可解决docker run -p 3306:3306 --privileged=true -v /home/tomatowork/data/mysql/logs:/var/log/mysql -v /home/tomatowork/data/mysql/data:/var/lib/mysql -v /home/tomatowork/data/mysql:/etc/mysql/my.cnf -e M.

2021-04-06 23:03:35 177

原创 用SpringBoot搭建非Web应用项目

我知道这很奇葩,不过是刚需,automation center网站做好之后,我要给用户批量导入现有的测试用例,这些用户维护在excel表格里。复用网站后台的实体类和dao类,能省去自己序列化,和各种insert语句(外键啊,依赖啊)的麻烦。首先POM里面不用加web模块,只用data-jpa, hibernate, mysql就好了<dependency> <groupId>org.hibernate</groupId> <artifactId&

2020-05-15 16:51:34 1880

原创 个人笔记--部署个人网站的艰辛历程

解决docker mysql容器起来之后几分钟就挂的问题。解决ssh远程里面执行命令自由切换的问题。解决nginx启动后403Forbidden的问题。

2020-05-08 15:17:38 515

原创 个人笔记--mac下查看端口号命令

Mac下eclipse经常抽风,我一点清除console内容,就直接退出,导致网站后台异常退出,再启动时就会提示端口号被占用…lsof -i tcp:8005然后kill pid

2020-05-07 12:11:02 773

原创 Mac Docker下创建 MySQL 8.0 容器未遂

MacOS下下载安装Docker,并pull mysql image我在很早之前做过了。不赘述了,很简单。以下步骤简单记录我重新创建MySQL容器的命令,供日后参考。启动Docker后,打开terminal,先查看现有images: ```docker images```,我发现我有两个mysql镜像,于是删掉一个: ```docker rmi imageID```(base) So...

2020-04-24 11:42:52 1807

原创 Entity的OneToMany映射(MySQL数据库)

小伙伴被OneToMany映射折腾的够惨,楞是用不明白。主表ID主键并没有如愿以偿作为附表的外键,并且在保存主entity时还报错,说是附表的外键列不能为空…我想,Hibernate不可能这么弱,肯定是用得不对。一顿搜索一顿琢磨,在MySQL数据库下,要这么做才行:数据库层面,附表,即OneToMany的Many方在外键列上首先创建索引,然后添加外键,如下所示。一个job包含多个case,那...

2020-04-21 22:17:52 433

原创 网站后台service层controller层测试方案总结

网站后端一般从下往上有Entity层(对应DB table) —> Dao层(对应DB table增删改查各种操作)—> Service层(业务逻辑层,调用dao层和DB打交道) —> Controller层(对应http api urls,调用service)。前后端分离开发的话,后端必须做到充分的自测,才能保证前后端联调时不出大问题。如果Dao层使用JPA的话,其实不需要测...

2020-04-05 22:53:30 585

原创 构建HibernateUtil测试Entity层代码

网站后端一般从下往上有Entity层(对应DB table) —> Dao层(对应DB table增删改查各种操作) —> Controller层(对应各种http api)。前后端分离开发的话,后端必须做到充分的自测,才能保证前后端联调时不出大问题。如果Dao层使用JPA的话,其实不需要测试,除非用错了。那么,针对entity层和controller层,后端开发时怎么自测一直是个问...

2020-03-28 21:33:26 171

原创 Vue + SpringBoot项目权限及Session管理

权限管理是个很大很复杂的模块,目前,刚开始做,就化繁为简,简单的切分成前端控件控制,和后端API权限控制。好记性不如烂笔头,整理一遍思路,慢慢沉淀。前端控件权限控制将用户跟Role挂钩,admin role, read-only role等等,前端一些增删改控件以及Admin页面是否加载的话,可以使用v-if=editAccess, 查询用户是否有权限的过程(发get请求到服务端去查)可以放在...

2020-03-19 11:45:30 3860

原创 js方法里axios请求无返回(undefined)的问题

utils.js,checkAccess方法里,axios请求去查询用户权限,在then里面去返回response的数据。然后在其他模块调用这个方法: var result = checkAccess(UIItems.AdminMenu),但是拿不到返回值,一直说是undefined…想了好久,都没有意识到,axios请求是异步的,请求一旦发送出去,浏览器就会继续执行后面的代码,那会儿根本还没...

2020-03-10 12:01:48 10648

原创 解决我们自动化工具内存溢出/性能低下的问题

最近做了一个5分的Story,要解决我们excel(基于Key列的值)比对工具内存和性能问题。拿了很多不同大小的文件测试下来,发现当重复记录很多(Key列的值相同,这里的Key列,就跟数据库表的key column一个意思),会内存溢出。溢出的代码行竟然是非常常见的 String s = intNumber + “”,即把一个int值转成一个String…而且这个写法在内存溢出的方法体里随处可见。...

2020-02-11 20:41:01 214

原创 Jenkins agent连接Git失败的问题(windows credential manager)

最近Jenkins agent机器经常连不上git,console log里面说,用户名密码验证失败。然而,在jenkins > credentials里面配置的git用户名密码明明是正确的,可以成功登录的。研究了一番,惊觉是windows credential manager在捣鬼,它藏在Control Panel(控制面板) > User Accounts > Creden...

2020-02-03 15:07:56 1010

原创 Jenkins迁移

所谓的Jenkins迁移,说的是master server的迁移,原本master跑在machineA,现在把它迁移到machineB。Jenkins Agent不存在迁移一说,因为agent只要在jenkins里面添加好之后,任何一台机器通过jnpl连接上master就成了。除非agent上需要特殊配置一套执行环境才谈得上迁移。迁移之前,我心中想好了两条路子,本想第一条路走到黑,结果最后还是换...

2020-01-18 03:07:04 882

原创 vue+axios在IE下页面不刷新的问题

今天突然发现,在IE浏览器下,如果对页面的表格记录做增删改操作,页面不刷新,但是在Chrome和FireFox下却很正常,溜溜的。在IE里,F12打开network监控请求,然后增删改操作,发现每次post/put/get请求的返回值都是正常的,页面也能够正常刷新。但是关闭开发者工具,页面又不刷新了。。。我猜到了是IE的缓存问题,于是清除了缓存,设置了不缓存。刷新页面,第一次加载页面时能正常显...

2020-01-04 17:02:05 1035

原创 Element UI点击按钮后不失焦...强制给它失焦

使用element ui库,发现button点下去之后会一直保持被点击的状态直到鼠标在别的地方点一下才恢复。也就是说button被点击之后一直没有失焦,直到点击别的地方,将焦点切换走。虽说不影响功能,但是用起来有点别扭。然后就想办法手动失焦:document.getElementById("xxButton").blur();给button加一个唯一ID,然后@click回调函数里,加上上...

2019-12-18 22:05:51 7066 5

原创 最近忙着写网站

最近两个月忙着做网站。收获还是很多的,只是我司的政策不准往外网传任何代码,查封公网github,国内一票博客网站是老早就查封了,包括我现在正在写的csdn…甚是无奈,并不觉得以技术自由为代价换来信息安全,是一笔划得来的操作。总结下最近做的事情,仅供我自己日后参考:Automation center网站全盘重新设计:homepage,header navigation bar,logo des...

2019-12-06 22:04:33 131

原创 将Jenkins slave连接master的后台做成自启动的windows service(NSSM.zip免安装解压缩即可用)

将Jenkins slave连接master的后台做成自启动的windows service,这样的话,slave机器重启,也会在机器起来后自动连接Master机器。

2019-09-12 00:37:22 769 1

原创 Jenkins里html page无法正常展示css样式问题解决方法

通过html publisher插件出来的html page真是没眼看的…样式全部丢失,就剩文字了。原来为了安全性,Jenkins把css,js,ajax等都禁掉了。如果Jenkins是搭建在公司内网的话,可以考虑牺牲部分安全性,达到我们想要的效果的。有个一次性的方法(Jenkins重启之后就不生效),就是在Manage Jenkins --> Script Console那里执行命令:...

2019-08-24 12:54:50 1594

原创 定时查询DB记录返回条数和耗时

org.quartz-scheduler定时执行DB查询,FufutreTask异步执行timeout后取消任务

2019-08-10 09:52:57 269

原创 自动抓error log并发送邮件通知

[本篇博文不包含源代码,仅涉及自动化日常工作的思路,工具构件]最近为truView hudson team做了一件事:从DB查error log并通过邮件发送至配置的收件人。Delivery Lead原本要求QA每天查询固定的5张log表,将各个表的error汇总并邮件给整个team…我发觉查询并汇总error是个挺繁琐的活儿,因为会有重复的error不停的反复出现...

2019-06-13 22:38:51 430

原创 Java程序解数独

https://github.com/sophie2805/SolveSoduku喜欢解数独,不过老爷们解数独似乎更胜一筹,iPad上的最高分一直都是他的。于是,写了一段解数独的代码,不到一秒就解出来了,然后把答案照搬到iPad上,拼的是手速啊。终于扬眉吐气了!基本思路就是把当前空白单元格的所有可能解罗列出来(基于横,竖,小九宫格罗列可能解,也就是getCandidates(…)方法),填入第...

2019-04-20 11:00:37 409

原创 Excel文件内容比对 -- Java Apache Poi

Excel文件内容比对 -- Java Apache Poi代码结构代码运行结果测试用例工具使用前提条件待完善的点在某些项目中,报表比对是测试的一大内容。比如,在某版本下生成baseline report作为标准答案,新代码进来后,再次生成report,跟baseline report作比较,确保改动没有引入差异。报表多以excel文件形式导出,用工具进行excel文件比对十分有用。Apach...

2019-03-05 16:01:19 1843

原创 生成不重复随机数序列(Java)

从1到n之间抽取出k个不重复的随机数,用Math.random()实现的话,可参照下面的代码。int r = (int) (Math.random() * n), 生成下标,据此下标,去到numbers数组里拿到随机数。然后将numbers[r]的值设置成numbers[n-1]的值,下次抽取时,从numbers数组的前n-1个元素里抽取。以此类推,再下次,就是从umbers数组的前n-2个元...

2018-09-16 15:23:09 8669 3

原创 RallyRestAPI(C#)查询story&defect的指定字段

Rally是软开行业,大概最贵,最庞大的敏捷流程管理工具了。 为什么我一个自动化测试人员,跑去做了一个Rally相关的小工具呢?故事背景是这样的,我们公司有audit 和 metrics(大公司,管的就是多…),要求每个迭代结束后,所有的story&amp;defect得是accepted的状态,并且assign back to PO.所有defect的某些字段(比如Test Pass Fail...

2018-06-17 19:37:02 256

原创 Oracle DB rownum & row_number() & rank() & dense_rank()

最近跟Oracle数据库打了个小小的交道。有个表数据量太大快要爆掉了。需要保留每个entry的最近10次结果,其余的历史结果全部删掉。 因为我们的场景很复杂,花了个把小时写query,成功删除了800多万条数据。删好之后,觉得自己对于rownum, row_number, rank()等的理解并不深刻,于是谷歌了一番,仔细理解了下。现把自己的理解写下来,供以后参考。先把Oracle官方文...

2018-05-30 22:21:49 213

原创 Web UI自动化框架搭建

本篇博文只从项目架构角度,提供一些建议供参考。不涉及具体代码编写。目前市场上主流的免费开源工具就是Selenium。大家可以根据自己项目技术栈,选择合适的语言+外加Unit Test框架,来构建自己的Web UI自动化项目。比如:Java+Selenium+JUnit/TestNG,Python+Selenium+UnitTest等。页面元素定义方法库层级结构组织页面元素定义...

2018-05-26 20:09:20 5118

原创 使用SXSSFWorkbook创建大型excel文件

对于大型excel文件的创建,一个关键问题就是,要确保不会内存溢出。其实,就算生成很小的excel(比如几Mb),它用掉的内存是远大于excel文件实际的size的。如果单元格还有各种格式(比如,加粗,背景标红之类的),那它占用的内存就更多了。对于大型excel的创建且不会内存溢出的,就只有SXSSFWorkbook了。它的原理很简单,用硬盘空间换内存(就像hash map用空间换时间一样)。

2018-02-03 14:40:02 11200 4

原创 jdbcTemplate读数据内存溢出

最近做Hadoop项目的自动化测试,代码要从hadoop mart里读数据出来,写到.csv文件里。有一个query结果集包含10万+条记录,且每条记录包含30+个列,于是jdbcTemplate华丽丽的内存溢出了。其实论数据量,这个真心不算大… 仔细看了看代码,大概知道了原因,结果集保存在List>这种结构中,而Map是比较消耗内存的,10万+个Map,每个Map30+对key-value…内

2018-01-20 12:00:17 4678 4

原创 在Mac OS X + Idea下搭建Maven项目 -- Maven的依赖管理

上一篇博文讲到如何安装maven,这篇算是它的续篇,总结下maven是如何管理依赖的。maven强大之处就是管理依赖。通过依赖传递,依赖继承,以及pom导入,可以轻松实现依赖的版本管理。通过依赖scope实现在不同的生命周期时段,加入依赖。如下是一个最简单的为当前项目添加依赖的示例: IntelliJ Idea > Preferences… > Build, Execution, Dep

2018-01-07 18:09:53 2779

原创 在Mac OS X + Idea下搭建Maven项目 -- 安装maven及常用mvn命令介绍

在公司参与的项目是windows下的eclipse + maven. 想在自己的电脑上玩一下maven,所以以下是在Mac + Idea下搭建Maven项目的过程。 首先是安装Maven: 1. 从Apache网站上下载最新版本的Maven: https://maven.apache.org/download.cgi ,mac下下载.tar.gz 2. 解压缩后,将文件夹放置于合适的目录

2018-01-06 17:20:48 7319 1

原创 Java去重合并List

之前写C#的项目,去重合并List很方便,使用list1.Union(list2).ToList()即可(Enumerable.Union)。并且,如果想要从list1里移除list2的item,也很方便,list2.Except(list1).ToList()现在写Java的项目,它没有此类原生方法可以直接调用,操作起来,稍微多点步骤。 public static void main(Str

2017-11-08 21:28:32 416

原创 Visual Studio的Performance profiler简介

Visual Studio Performance Profiler

2017-07-23 17:48:30 3921

原创 浅谈Web接口测试

我在之前的文章里提到过有些情况不适合跑UI测试的,而适合用接口测试来覆盖,我是传送门。尺有所短,寸有所长。接口测试是UI自动化测试的一个强有力的补充。首先接口测试较UI测试效率更高,速度更快其实接口测试较UI测试稳定性更高打个比方,请求某API,正常情况下它返回一堆数据。如果走UI测试,可能需要登录>去到相应页面>把相应条件设置好>点击某按钮触发请求>等待页面响应,直至加载完成>然后去DOM

2016-12-24 22:33:29 1060

原创 Windows Batch Script用于机器集群文件分发

先交代下背景,我们UI自动化有十几台机器,有一些配置文件需要放到每一台机器的某个路径下,重复性很高,很繁琐新时代的青年接受不了这种手工重复劳动,所以花了一个晚上弄了个windows batch脚本。老实说,windows batch真的很不习惯,毫无基础,每一行都是现搜索现写,如果是用Python就会便利很多,但是windows batch适用性更强,只要是个windows机器就能跑起来。脚本工作原

2016-11-11 22:17:14 1268

原创 多套测试系统与Web UI自动化测试

Web UI自动化项目初期,可能是单一的一套测试环境,代码里也只用写一套URL & Folder path & Database。随着项目的进行,很可能生产环境也想跑自动化,验证系统可用性或者做Load Test。测试环境也可能多出来几套,阿尔法,贝塔之类的。此时,hard code待测试系统的相关信息就显然不合适了,否则每次在一个新的环境里跑测试,就得改自动化项目中所有的相关信息。这样很容易漏改,

2016-11-05 16:50:31 733

原创 屏幕分辨率 -- Web UI自动化大坑之一

Web UI自动化对环境依赖度高,换言之,同一套代码,换个机器跑,很可能问题百出。浏览器的配置自然是重中之重,除此之外,机器的屏幕分辨率也是不可忽视的重要因素。曾经碰到一个问题:我写的一段代码,在我自己的虚拟机里跑的挺好的,但是在另外一个同事的虚拟机里,某个菜单就是选不中!debug时发现,元素都定位到了,MouseClick就是不点击该元素(插一句,如何快速发现是元素定位问题还是元素操作问题呢?看

2016-10-30 21:55:45 2288 1

原创 论Web UI自动化测试的不稳定性(二)

Web UI自动化测试的不稳定性有两个层面:技术层面–没有构造健壮的能稳定运行的脚本非技术层面–项目原因或者用Web UI自动化企图达到不合适的目标,造成脚本频繁改动,维护成本高第一点在上一篇博文里从代码层面分析过了,今天主要说说第二点。丑话说在前面,Web UI自动化不是万金油,它不可能干掉手动测试人员。衡量好投入产出,最大化UI自动化的效用,才是王道!什么项目不适合做We

2016-10-02 23:09:19 2981 3

原创 论Web UI自动化测试的不稳定性(一)

Web UI自动化测试的不稳定性有两个层面:技术层面–没有构造健壮的能稳定运行的脚本非技术层面–项目原因或者用Web UI自动化企图达到不合适的目标,造成脚本频繁改动,维护成本高今天先说第一点。首先,Web UI自动化测试是不稳定的,哪怕脚本写的很棒!为什么?因为Web应用本身就有不稳定的情况存在。以下这些情况想必我们都经历过:点击网页上的按钮或者菜单没有响应(有时候第二次点击才有响应…)

2016-09-24 07:09:41 6656 3

原创 Telerik自动化测试框架用后感一

用Telerik测试框架有一段时间了,总体感觉这个框架对于微软系的产品有着不错的支持。比如使用Ajax的web应用,Telerik框架可以等待页面加载完成,亦或者等待某个特殊元素出现/消失,可以自动或者手动刷新DomTree,可以和Windows系统窗口互动(比如从网页上导出报表到文件并保存至指定路径)。但是用的时间长了,就发现这个框架其实还是有些小问题的,并非尽善尽美。Telerik对于基础的常

2016-09-18 22:39:19 1789

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除