- 博客(31)
- 收藏
- 关注
原创 SQL注入的测试方法
简介Web应用程序的数据存储与读取通过数据库完成,而这些读写的操作通过SQL语句实现。实际项目中可能因为开发人员的疏忽或经验问题,未对用户可输入的参数进行严格地校验,导致用户可能恶意地将SQL命令带入数据库执行,实现注入的目的。SQL注入的条件参数中含有SQL语句,并可以带入数据库正常执行Web应用程序和数据库的交互中,必须有参数加入请求传递至数据库SQL注入的方法...
2018-07-11 10:50:15 11507 1
原创 服务器SSH连不通故障排查
背景在搭建好自动化测试环境后,为了维护的方面,一些环境中的web页面需要判断任意指定的URL是否存在异常。实现#!/bin/sh#首先定义帮助函数function usage() { echo $"usage:$0 url" exit 1}#定义检测URL的函数function check_url(){ wget --spider -q -o...
2018-07-11 10:49:12 2225
原创 python paramiko模块实现跨平台SSH
介绍需求:在管理用户端(实际上所有支持Python的OS都可以)批量对远程服务器进行部署、命令执行、文件传输、搭建测试环境等。一般的,我们用Putty,Xshell,Winscp都可以实现SSH登录,但是如果出现N台服务器,我们按照原来的方法,需要逐个登录配置,这会花费一定的时间。实际上,Python的paramiko模块就可以实现这种操作。其原理就是模拟SSH客户端,与SSH服务端进行交...
2018-07-06 14:42:46 335
原创 Python高级数据结构
数据结构数据结构的概念很好理解,就是用来将数据组织在一起的结构。换句话说,数据结构是用来存储一系列关联数据的东西。在Python中有四种内建的数据结构,分别是List、Tuple、Dictionary以及Set。大部分的应用程序不需要其他类型的数据结构,但若是真需要也有很多高级数据结构可供选择,例如Collection、Array、Heapq、Bisect、Weakref、Copy以及Ppri...
2018-07-06 14:41:53 286
原创 什么是负载均衡?
本文转载于极光日报 https://zhuanlan.zhihu.com/jiguang-daily负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。一个没有负载均衡的 web 架构类似下面这样:在这里用户是直连到 web 服务器,如果这个服务器宕机了,那么用户自然也就没办法访问了。另外,如果同时有很...
2018-07-06 14:40:52 2586
原创 【质量前移】SonarQube配置问题汇总
SonarQube配置问题汇总问题1:SonarScanner配置文件无法配置多个项目解决方案:SonarScanner默认读取的是/usr/local/sonar-scanner/conf/sonar-scanner.properties,如果同时支持多个项目,需要添加多个以.properties结尾的配置项。并在执行时制定配置文件:配置多个以.properties结...
2018-07-06 14:38:42 1728
原创 【质量前移】代码质量管理平台SonarQube环境搭建
一、背景如图所示,如果把质量问题与风险控制在研发期,解决bug修复的成本相比于在Production阶段再修复会大幅降低,这也就质量前移的基本思想。如果一开始就写出优质的、经过测试的代码,那么后面测试阶段就会减少很多不必要的时间浪费,反之,如果把全部的质量责任交给测试工程师,则可能会导致:交付周期延长测试不充分,风险抛给用户不利于代码后期重构如果一味地追求所谓的交付时间...
2018-07-06 14:38:14 1709
原创 【流程规范】API接口文档规范
接口名称前置主动还款申请(/payBill)接口描述接口地址:https://api.yidianfenqi.net/payBill返回格式:json请求方式:GET/ POST请求示例:https://api.yidianfenqi.net/payBill?key=123456&qq=654321;接口备注:根据传入的key和qq号码发起还款的申请...
2018-07-06 14:37:18 9331
原创 HTMLTestRunner.py深度优化
背景HTMLTestRunner.py这个文件几乎是每个组做接口自动化都会用到的,此文件可以看做是python unittest库的延伸,配合unittest使用,通过读取测试数据,能够生成html文件,做到测试数据可视化。问题在实际使用中,虽然HTMLTestRunner.py满足了大部分的需求,但是有几个问题: * 如果出现中文的异常,会输出乱码 * 如果在outlook中...
2018-07-06 14:36:03 1612 1
原创 一键切换手机WIFI代理
一键切换手机WIFI代理背景在进行一点分期客户端测试时,因需要连接测试环境,或通过fiddler抓包,都需要wifi连接代理,但频繁手动修改太过麻烦,所以考虑做成自动化或找个现成的app。WifiProxySwitcher刚开始用adb命令做了一个自动化的脚本,但问题是每次切换代理需要数据线连接电脑,比较麻烦,所以在github上找了一个开源的项目,亲测可用。1、下载...
2018-07-06 14:34:21 7043 4
原创 通过lambda和mockito answer提升单元测试效率
背景在测试Spring RestTemplate的时候,为了规避上下文带来的影响且保证单元测试的效率与独立性,使用mock技术是常用的手法。但是实际项目中,如果要从RestTemplate转为其他框架的时候,就需要修改所有的单元测试代码,也就是说,目前的代码还是依赖于框架的,还是不够独立:public class SpringCloudRefactoringTest { pr...
2018-07-06 14:32:54 1732
原创 Nginx gzip压缩实现性能优化
介绍通过修改nginx配置文件nginx.conf开启gzip压缩功能,这样nginx服务器会根据配置的策略对发送的内容进行压缩,在用户接收到返回内容之前对其进行处理,以压缩后的数据展现给客户。这样不仅能够提升用户感知体验,也能节省出口带宽,一举两得。配置#修改nginx配置文件 /usr/local/nginx/conf/nginx.conf[root@localhost ...
2018-05-23 10:48:45 1609
原创 MySQL日志之普通查询日志和慢查询日志
Intro之前的一篇分享提到,MySQL的日志类型可以分为三种,错误日志(error_log),查询日志(query_log),和二进制日志(binary_log),error_log的介绍与用法详见MySQL日志之error_log,本文主要介绍general_log和slow_query_log的原理和用法。通用查询日志通用查询日志(general_log)主要用于查询各cli...
2018-05-23 10:48:20 406
原创 MySQL日志之binlog
简介前两篇文章提到了MySQL日志的两种形式,error_log和query_log,最近项目替换了binlog,这里就简单讲一下bin_log的工作模式和用法。binlog一般有三种模式: - Statement Level模式:如果数据库配置了主从,则所有会修改数据的SQL语句都会被记录在master的binlog中。slave在复制的时候SQL进程会解析成和原来master端执行过...
2018-05-23 10:47:46 167
原创 Faker--一种测试数据生成工具
简介Faker一款基于Python的测试数据生成工具,无论是用于初始化数据库,创建XML文件,或是生成压测数据,Faker都是不错的选择。使用方法使用pip安装:pip install Faker使用faker.Factory.create()创造并初始化faker生成器,faker生成器可以通过访问按所需数据类型命名的属性来生成数据。from faker im...
2018-05-23 10:45:31 3817
原创 自动化系统中服务监控脚本的实现思路
背景在自动化测试系统中加入服务监控的脚本:如监控Nginx服务或MySQL服务是否开启,如果没有开启,则启动对应服务。监控思路通过端口监控 在服务器上通过ss, netstat, lsof等命令监控在远端通过telnet, nmap, nc等方法监控监控服务进程 ps -ef | grep mysql | wc -l根据wget或curl命令对返回值进行判断连接数据库...
2018-05-23 10:44:48 1126
原创 利用Docker和JUnit进行集成测试
利用Docker和JUnit进行集成测试1.前言 “集成测试的目的是验证各组件之间的通信路径与交互以检测接口上的缺陷” ——敏捷开发创始人Martin Fowler随着云端服务的普及,微服务架构开始应用于越来越多的项目上,比如项目中的一些服务会“外包”出去,如PostgreSQL, Apache Kafka, etcd等。这就需要本地服务与外部组件进行交互,如果...
2018-05-23 10:43:38 1752
原创 Selenium环境搭建
搭建项目下载并安装Java JDK下载并安装IntelliJ IDEA在IntelliJ IDEA中创建新的Maven project: File > New > Project > Maven将“Project SDK”关联至本机JDK,路径一般为“C:\Program Files\Java\jdkxxxx”设置groupId与artifactId:...
2018-05-23 10:42:59 284
原创 HTMLTestRunner报告优化
背景为了将自动化测试报告做的高大上,结果一目了然,对HTMLTestRunner报告生成文件进行了一定的优化,增加了饼状图。原来的报告如下 代码修改1、打开HTMLTestRunner.py,在原有的js代码下新加一个画饼状图的function,做到可以讲pass, error, fail分别进行统计,以不同颜色生成饼状图。function drawCircle(pass...
2018-05-23 10:42:18 2884 1
原创 【单元测试】JUnit-addons断言包
JUnit-addons断言包背景对于单元测试,org.junit.Assert类提供了很好地断言支持,但对于一些特定情况(比如JavaBean中的集合或属性)就无能为力了。在进行分期风控规则框架测试时,需要对不同的数据种类(列表、对象、变量、字符串等)进行比较,在调研之后,发现有JUnit-addons这个断言包可以支持。介绍JUnit-addons在junitx.fra...
2018-05-23 10:38:01 309
原创 【单元测试】JUnit断言检测控制台输出的方法
背景在进行单元测试时,被测试的业务代码没有明确的return类型,但是一般的执行记录都会写入logger中,并在控制台输出。普通的断言无法覆盖这种场景,修改代码只能短时解决问题,每次更新都需要再次改代码。因此需要一种方法能够检测控制台的输出,并对输出进行断言。解决方案一把标准输出定向至ByteArrayOutputStream中去对其内容进行断言因为其内容较多,使用asser...
2018-05-22 10:37:05 9782 1
原创 【Bug总结】java.lang.IllegalThreadStateException报错bug的解析
背景在执行单元测试的时候,发现同一线程运行多次后,就会报一个线程的错误: Exception in thread "Main Thread" java.lang.IllegalThreadStateExceptionat java.lang.Thread.start(Thread.java:595)at thread.ThreadTest.main(ThreadTest.java...
2018-05-22 10:36:29 613
原创 【单元测试】单测编写技巧与原则
最近因工作需要不得不对单元测试中的Mockito2和Powermock框架的一些新特性进行研究:比如Mockito2和Powermock可以伪造静态方法、final类甚至是构造函数的调用,但是研究一段后发现,这些功能其实在我本来就很熟悉的Jmockit框架中就能实现,而且不用像mockito一样需要特殊的语法和额外的样板代码,看似掌握了一些所谓“高大上”的用法,实际对工作来说没有任何收益。因此今天...
2018-05-22 10:35:27 1217
原创 【单元测试】使用PowerMock框架进行Java静态方法的单元测试
简介一般来说,Java中的静态方法无法用传统的Jmock进行单测,这也就给研发人员和测试人员造成了一定的困扰。本文介绍一种使用PowerMock执行静态方法单元测试的手段,其实网上也有使用如Mockito的方法,大家可以自行搜索。静态方法的测试手段其实从一个测试人员的角度看,静态方法的测试并不比非静态方法难,比如下面这个例子:public final class Strin...
2018-05-22 10:34:52 3446
原创 【Nginx】Nginx配置限制HTTP请求
问题一HTTP1.1定义了八种主要的方法,其中OPTIONS、DELETE等方法在生产环境可以被认为是不安全的,因此需要配置Nginx实现限制指定某些HTTP请求的方法来达到提升服务器安全的目的。配置 if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 501; }上面的配置实现了只允许GET...
2018-05-22 10:22:45 10469 1
原创 MySQL日志之error_log
MySQL日志类型简介MySQL的日志大概可以分成三种,错误日志(error_log),查询日志(query_log),二进制日志(binary_log):查询日志(query log):一般的,查询日志可以分为两种,通用查询日志(general query log)和慢查询日志(slow query log);其中,通用查询日志可以用来各客户端连接时的相关信息和在数据库上执行的SQL语...
2018-05-22 10:19:52 11021
原创 【Python模块】使用Python xlrd读取excel中的测试数据
一、安装xlrd模块1、安装pipwget https://bootstrap.pypa.io/get-pip.pypython get-pip.py2、使用pip安装xlrdpip install xlrd二、基本操作1、获取excel基本信息data = xlrd.open_workbook('/root/data.xlsx') #打开...
2018-05-22 10:16:40 2251
原创 【单元测试】Mockito与PowerMock介绍
什么是Mock?在单元测试中,我们往往想去独立地去测一个类中的某个方法,但是这个类可不是独立的,它会去调用一些其它类的方法和service,这也就导致了以下两个问题:外部服务可能无法在单元测试的环境中正常工作,因为它们可能需要访问数据库或者使用一些其它的外部系统。我们的测试关注点在于这个类的实现上,外部类的一些行为可能会影响到我们对本类的测试,那也就失去了我们进行单测的意义。为了...
2018-05-22 10:15:05 1009
原创 【单元测试】做更好的单元测试:关于单测你必须知道的技巧与原则
做更好的单元测试:关于单测你必须知道的技巧与原则最近因工作需要不得不对单元测试中的Mockito2和Powermock框架的一些新特性进行研究:比如Mockito2和Powermock可以伪造静态方法、final类甚至是构造函数的调用,但是研究一段后发现,这些功能其实在小编本来就很熟悉的Jmockit框架中就能实现,而且不用像mockito一样需要特殊的语法和额外的样板代码,看似掌握了一些所谓...
2018-05-22 10:12:26 1716
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人