测试领域各种工具实践:从零开始搭建一个测试技术练习平台

测试理论知识总结:

测试思路系列:《微软的软件测试之道》读书笔记

测试思路系列:《谷歌的软件测试之道》读书笔记

测试思路系列:测试领域完整知识体系总结

测试自动化平台 | 测试开发工程师的进阶之路

 

工作中,除了理论,也要不断实践学习,为了快速上手,我打算写一个有增删改查功能的Javaweb项目,方便以后练习各种测试工具。

 

环境准备
1、准备一台电脑
2、官网下载最新版Intellij IDEA,破解步骤找“Java学习者社区”公众号
3、官网下载最新版PyCharm,破解步骤同上,区别是配置路径不同
4、风刑软件站,下载安装VMware虚拟机破解版,再找个CentOS7的镜像文件安装;win7笔记本、台式机装centos7过程记录
5、官网下个xshell6,不用破解
6、下载JavaEE,版本8,配环境变量
7、下载python最新版,目前是3.8,不用配环境变量,安装时勾选,能自动配

 

检验工具

1、python:
1)  个人认为,优势是库很多,windows系统在cmd中执行pip命令安装即可,数据分析类方便直观。
2)  用selenium时,要启动webdriver控制谷歌浏览器,需要下载插件chromedriver.exe,找自己浏览器对应版本,下载地址:点我传送,把插件放python默认安装目录下。
3)  想用python查股票,除了优矿,东方财富新浪百度等API不易用,无意中发现了一个库,叫证券宝官方文档点我传送,国内开源,能pip安装,用了用发现数据旧。
4)  python3.x版本连接mysql数据库要pip install mysqlclient,然后import MySQLdb使用,具体用法点我传送
5)  安装python最新版后,cmd中运行pip没用,最后发现是本机安装了loadrunner,环境变量冲突了,where pip查环境变量,删除冲突项即可。可参考

2、java:
  暂时搭建一个web网页,springboot + spring data jpa + mysql,打开Intellij IDEA,新建spring项目,选jdk8,.properties中开日志,设tomcat端口。建目录:web,dao,service。建页面:两种方式

  前端框架写好页面,留ajax等后端程序员传数据。
  后端程序员用引擎模板开发页面,java会自己渲染页面并传数据,前端引擎模板jsp,freemarker,thymeleaf都一样,前后端分离很灵活,但也要看项目用起来是否划算。

  我选thymeleaf,要在html标签开头加一句咒语 xmlns:th="http://www.thymeleaf.org",就可以用th标签在页面里操作后端来的变量了。要在templates下建h5页面,去bootstrap官网,不用下载,引cdn方式的文件,js和css都是现成的,官网能看组件,还自适应。

  关于前端框架:学下vue.js,它基于nodejs(nodejs是什么,菜鸟教程有node.js安装教程)。npm是它自带的包管理工具,cnpm是淘宝做的国内版,安装之后,用法一样。
  继续学vue,文档提示我参考webpack,Webpack是一个前端资源加载/打包工具,可以将多种静态资源 js、css、less 转换成一个静态文件,减少了页面的请求,用cnpm安装。我现在不需要。
  接着看,文档说vue有两种安装方式,要么npm装,要么页面引个cdn链接,效果一样,因为nodejs和我的谷歌浏览器用的都是谷歌的V8引擎。
  文档看完,一句话描述,vue本质是封装好的js函数(框架),主要通过new Vue({})操作一个dom元素,完成各种动作。
  当然,一个前端框架有除了js还有html、css,vue做完的项目肯定很大,需要webpack打包,于是vue又封装了一下,出了个工具叫vue cli,cnpm安装它,能生成个单页模板项目,能用开发工具打开,以后直接在里面写代码即可。
  我打开这个vue模板项目,入口文件是个APP.vue, .vue文件是一个自定义的文件类型,用类似HTML的语法描述一个Vue组件。每个.vue文件包含三种类型的顶级语言块 <template> <script> <style>。这三个部分分别代表了 html,js,css。
  一个完整的vue项目,有多个.vue文件,每个都是一个组件,参考链接
  这样看来,vue项目的cdn安装方式只能做些小功能,项目中还得用nodejs环境开发vue。
  vue + element ui可以配合使用。element ui用vue开发的,但为了更好的打包还得cnpm安装一下,然后直接在vue模板项目里引入就能用,具体看官方文档。element ui有很多主题和组件,同类型有bootstrap。

3、linux
1)   虚拟机里改分辨率太费劲,直接用xshell
2)   网络选桥接,改/etc/sysconfig/network-scripts/ifcfg-ens33文件的onboot为yes,能连外网
3)   关防火墙,虚拟机才能ping通宿主机,具体参考 点我传送
4)   yum update更新一下库,然后安装docker,汪云飞springboot实战那本书上方法太旧,2020年3月6号,docker最新是19版本,步骤参考:点我传送 教程太多,总结一下:1-安装依赖软件;2-设置仓库;3-安装社区版;4-启动docker;5-下载较大的软件网会断,配个加速器 # vi /etc/docker/daemon.json,这个daemon.json文件默认没有,官网有介绍,管各种配置的,里面写{"registry-mirrors":["https://n9h3vi0d.mirror.aliyuncs.com"]}

第二种安装方法,yum update更新一下库,然后执行 curl -sSL https://get.daocloud.io/docker | sh 一键安装,执行 service docker start 启动服务,就可以正常用了
5)  以后的操作都在docker里进行,先安装个mysql,步骤参考菜鸟教程:点我传送。第4步运行容器之后,需要执行“docker exec -it 这里填容器id或名称 /bin/bash“,这就可以在shell中使用mysql了,进shell之后,登陆账户,mysql -u root -p,完成,mysql用的是3306端口,前面菜鸟教程第5步,我将虚拟机里,docker容器的3306端口,映射给了虚拟机的3306端口,所以,只要docker启动mysql,我就能通过虚拟机的ip+3306端口使用mysql。为了方便使用,我要在宿主机(我的win10笔记本)用Navicat for mysql连虚拟机的3306端口。官网下载Navicat最新版本(目前是15)。下载破解程序,教程及地址:点我传送

  以上,虚拟机+centOS+docker+mysql终于搭建完成。linux命令+docker命令+mysql命令得多练。
6)docker一句话总结:
  docker是一个容器干一件事,所以搭建环境,先要下载各种新镜像,通过手工配置或者写dockfile配置把镜像启动为容器,一切配好环境能用,就把这些镜像导出,再上传到私服仓库,然后本机下载dockcompose,写个dockercompose.yml,里面是环境需要启动的各种容器。
要复制环境时,在新机器上安装docker,然后从私服拉取镜像,用复制来的dockercompose.yml直接用命令运行,就完成了。
查了这么多,这篇文章终于说到点子上了。

docker run -itd  -p 8089:8080 --name fortest0demo2 fortest0demo --cap-add=SYS_PTRACE 对
docker run -itd --cap-add=SYS_PTRACE  -p 8089:8080 --name fortest0demo fortest0demo2  错 这样能创建,能启动,但访问不了

 

2024 更新:使用docker安装python

一个新服务器,安装docker : 
yum update更新一下库,然后执行 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
docker下载python镜像,docker pull python:3.8.2
然后把镜像启动,就变成了容器,docker run -it python:3.8.2
然后启动容器,docker start 容器id,以后每次用都是先start容器id
一个容器相当玉一个linux系统,用python镜像做的容器,相当于一个linux系统里只装了一个python,
用Java镜像做的容器,相当于一个linux系统里只装了一个jdk,
用mysql镜像做的容器,相当于一个linux系统里只装了一个mysql
用docker exec -it 容器id /bin/bash 进入我的python3.8.2容器,里面只装了python,用docker cp 把代码复制到容器里,就像在linux里操作一样,
用python运行代码即可
新的容器,bash进入,没有vi,没有yum,要通过两个命令先装
  apt-get update
  apt-get install vim
然后把pip的数据源改成国内的 由于上面两个安装太慢,所以直接创建好文件复制进容器
mkdir ~/.pip #如果目录不存在就用这句话,创建完后再cd到目录。 .pip代表隐藏文件pip
touch pip.conf #创建pip的配置文件
sudo vi ~/.pip/pip.conf #编辑文件,把下面4行放进pip.conf
[global] 
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host = http://mirrors.aliyun.com/pypi/simple/
# trusted-host参数解决可能会提示不受信任的问题
# 如果上面没用,就直接用下面这个运行
pip install -r requirements.txt --trusted-host mirrors.aliyun.com
# 就算pip 单独安装包,也要加--trusted-host mirrors.aliyun.com

扫描项目生成依赖清单:在项目的根目录下 使用 pipreqs ./ --encoding=utf8
根据依赖清单安装模块:pip install -r requirements.txt


7)linux三剑客;grep用在查找关键字;sed用于在缓存中按行处理文件内容并输出给新文件;awk也是在缓存中处理,还能包含条件、循环语句;

sed核心是正则,两个概念:匹配、行为(CRUD);可以将匹配和行为进行不同的嵌套,对满足某些条件的部分进行某些操作;

awk核心是格式化,主要用于格式化输出和一些统计。

 

项目中的小问题
1、spring boot会自动扫描@SpringBootApplication所在类的同级包以及下级包里的bean。所以建包若在别处,入口类会扫不到,需要加注解:

@ComponentScan(basePackages = {"com.*"})
@EnableJpaRepositories("com.*")
@EntityScan("com.*")


2、springboot使用rest,是看谁继承JpaRepository接口的,实体类加s是spring data REST的默认规则
3、某天虚拟机ip变了,于是设为静态ip,却发现docker的mysql容器3306端口连不上,最后发现systemctl restart docker重启docker服务就好了
4、docker上部署了两个容器,一个是web项目,一个是mysql,结果web连不上数据库,最后发现是防火墙挡住了。我关了防火墙,参考的这个点我传送。进而又查了查docker容器间的通讯方式,点我传送,他这个需要初始化容器的时候就配好
5、突然今天xshell时不时地连不上虚拟机,我都已经配了静态IP了,结果发现是自己手机的ip跟虚拟机冲突了,于是上路由器管理页面,在DHCP池里挑了个IP,跟自己手机的mac地址绑定,就好了

 

性能测试

性能测试理论

性能测试系列:工作中的性能测试完整过程(学习总结)

1、jmeter
这篇作为入门看着笔记方便,但要是快速上手,还是这篇思路正确,其他很多上手文章,讲不到点上。入门之后,这篇可用作总结提升。

性能测试系列:Jmeter使用记录

jmeter测试遇到的问题:

压测一个接口,压力机网段不通,就用云桌面测,平均响应时间一直是92毫秒,10vu时TPS是100,20vu到2000vu,TPS一直是200.

按理说,随着vu增加,平均响应时间应该增加,tps应该先升,再降。

现在是,随着vu增加,平均响应时间一直不变,tps先升,然后一直不变。

用vu除以平均响应时间,20vu,tps应该是200,40vu,tps应该是400,但实际还是200,所以,我用云桌面发出的请求被限制了。

无论我加多少vu,固定时间内,我发出的请求总数是固定的。而对方服务器接到的请求数也是固定的。

后来我换了个能通的压力机,40vu时,tps变成400了。

总结:遇到增加并发,总请求数固定,响应时间和tps不变的,考虑发压机是否有限制。


2、loadrunner
1)  关于tps、vu、响应时间的关系

我做了一次实验,发现如下结论
Vu 响应时间 tps
1 0.003 315
10 0.006 1670
100 0.061 1478
300 0.183 1486
1个vu时,1000毫秒/平均响应时间=tps。但1个以上的vu,这个公式就不适用了。
Vu增加,响应时间会变慢,tps变大,但到了一定值,tps反而减少。
因此,想变大tps,先加vu。若想变小tps,可以继续加vu,但此时最好设置pacing。
我还听到一个公式: vu = pacing * tps 。但实验发现此公式不准。
我按照公式,vu不变,设置目标tps,得出pacing时间,但运行后,发现tps比目标少25%,所以不准。
如果想加pacing,可以直接加成需求给的时间,比如复杂交易不大于400毫秒。不加pacing的话,响应时间是最快的。
所以,如果pacing设置的小于它最快的时间,这个pacing就不起作用了。

2)  关于场景:场景与计划共四种组合方式,具体参考
3)  loadrunner打印日志时,若返回报文内容过多,会显示不全,但不影响web_reg_save_param抓数据。
4)  用lr转码中文,数据提交后在页面发现中文最后有空格,解决方法
5)  LR发压报错Address already in use Try changing the registry value。解决方法
6)  CPU占用高的追查手段。点我传送
7)  jvm监控之——jmap和jstack使用。点我传送
8)  java内存泄漏定位与分析。点我传送

9)  最近遇到了个小问题,一列数据,150万条,要改成每10条为一行,逗号间隔。我最初想直接查询出来,无解,然后想用excel,然后用函数,但要手动拉15万次,太累,然后想用excel里的vb,但发现表格根本加载不完150万数据,遂放弃表格。接着想到了lr,把150数据作为参数化,然后写循环,每10个一换行,直接写到文件里。代码如下:

Action()
{
    char *filename = "Z:\\test.txt" ; //指定结果存放路径

    long file; 
    char urid_cat[1000]="";//用来放拼接的字符串
    int i,count;
    count = 1; //用来计算够不够一行10个
            
     //用于打开文件
     if ((file = fopen(filename, "w+" )) == NULL) {
          lr_output_message("Unable to create %s", filename);
          return -1;
     }

    for(i=0;i<1500000;i++){

        if (count < 10) {
            strcat(urid_cat,lr_eval_string("{P_test}")); //P_test就是那150万数据
            strcat(urid_cat,",");
            count ++;
        }else{
            strcat(urid_cat,lr_eval_string("{P_test}"));
            strcat(urid_cat,"\n");

            //lr_output_message("%s",urid_cat);
            fwrite(urid_cat,strlen(urid_cat),1,file); //把一组用户信息写入参数文件

            urid_cat[0] = NULL;
            count = 1;
        }
    }
        fclose(file);//关闭文件

    return 0;
}

没想到跑的那么慢,一个并发跑了18个小时,如果急着用,可以用并发跑。

 

//loadrunner工具脚本常用操作    
char s[] = "璁块棶杩滅▼鎺ュ彛澶辫触锛岃繑鍥炵┖鍊?";
    lr_convert_string_encoding(s,"utf-8",NULL,"S_resmsg2");
    
    lr_output_message("输出:%s",lr_eval_string("{S_resmsg2}"));

    if(atoi(lr_eval_string("0"))==0){
        lr_output_message("输出:%s","111");

    }

 10)2021.03.01。

工作中遇到的问题:两个脚本,复制相同的登录代码,回访时在同一行,一个报错,另一个不报错。

原因:使用loadrunner录制的脚本,会做一些剪切、复制等更改,改过之后,再用tree视图查看请求记录,会出现名称与内容不符,推测可能是tree锚定了脚本行号,即使更改了此行代码,tree显示的请求名称仍然是录制时的请求。

总结:回放脚本用tree查看时,要以tree实际请求地址为准。

11)2021.03.01。

工作中遇到的问题:loadrunner分布式压测,主控机器调用5台压力机,5万并发,场景的LoadGenerator按  IP1,IP2,IP3,IP4,IP5  这种格式填入多个,场景运行后,大量vu处于pending状态,查看场景压力机状态发现95%的vu都在IP1,其余IP只有10vu。

总结:这种多个IP逗号分隔写到一个脚本LoadGenerator的写法我没在网上查到,小并发确实分布了,但大并发会有压力不平均的现象,所以,要给每个脚本指定各自的压力机。

12)记录用loadrunner11测试老系统的恶心经历

早上要测个老系统的上传表格,于是页面先做一遍功能,用的谷歌浏览器,点击上传按钮,浏览器的控制台报错说找不到xx对象,用火狐试也报错。换了IE,ie不报错,这个系统用的是flash插件,这时看到有个添加文件的按钮,哦,原来有flash才行,我的测试机不能连外网,所以谷歌火狐装不了flash,只能继续用ie,我要用loadrunner录制脚本,loadrunner11却无法启动ie,百度说必须用ie8,于是卸载ie11,重启电脑,再配置三处,发现还是不能启动(根本原因是要选择c盘(86)32位的ie路径),于是换了台电脑,

这台电脑是ie8(但没有flash,我试到最后才知道),loadrunner能启动ie,但启动后页面无反应,原因是在ie里首页地址不能自动跳转到登录页,要输入登录页完整路径才行(新系统输入主页可以直接跳转登录页,用了Java单点登录框架)。能显示页面后,卡了几分钟,最后刷新页面,终于进了系统,到了上传页面,提示无flash。放弃这台电脑。

我找了台能连外网的,我打算下载个flash,然后用u盘传给我的电脑,给火狐装个flash。百度搜个flash官网,弹出的全是不相关内容,弄了四五次终于找到官网,下载flash。我来到自己电脑,却发现flash装不了,因为我的电脑不连外网,安装flash会做联网校验。

我只好用别人能联网的机器,打开火狐,安装flash,进系统,点击上传,js报错一个对象为空,到此,放弃谷歌火狐。

系统太旧,用不了谷歌火狐,老ie又没法用loadrunner启动,我只好再换机器试试。另一个电脑也是ie11,我先改成ie8,卸载,重新配置,重启电脑,恰好win7更新,卡在正在配置windows,请勿关机页面一个小时,最后忍不了强制关机,重启后可以正常使用,据说有很多重启后进不了系统的。终于这台机器能录制了。

13)Loadrunner运行5000用户时报错了怎么办; 

14)LoadRunner测试下载文件

15)2021.11.12 做混合负载时,两个脚本里事务名称一样,会导致测试结果覆盖!另外,runtime-setting里若要统计整个action的响应时间或tps,勾选第一个啥啥as action.

16)2021.11.12 脚本里放数据格式问题:通过sqlplus直接导出的txt格式数据,通过ue替换换行等格式后,再复制到脚本的参数化文件里,会出现格式不一致,比如ue里是列排放,到txt里变成行排行。最简单的解决方法:ue里替换过格式后,全选复制到一个doc格式的word文档里,再全选复制到txt里,就正常了。 

3、加特林

小众的开源压测工具。官网地址压测与实时监控

4、stress

命令行工具,linux上对系统资源发压,实现背景压力。教程参考

性能监控

1、ant、nexus
在看junit自动化构建,瞥见构建工具ant(点我传送),它跟maven差不多,我就想使用maven的deploy(在构建环境中,将最终打包的文件复制到远程仓库当中用于和其他开发者和项目进行分享。),于是就在docker上安装了nexus私服,具体参考点我传送
  注意两点:
  一是我用docker装的nexus,很简单,但最好在上面链接里的第五步,指定自己的目录
  二是这个博主在maven的setting.xml文件里少配了一处,导致传jar包报错没权限,具体点我传送
2、nmon
下载压缩包,解压后找对应版本,执行export PATH="$PATH:/路径"配下环境变量(export只用于当前,退出会失效,要长期有效需把此命令配到开机启动文件里),就能直接用了,监控结果用excel分析,可以写个工具实现一键完成部署、打点、结果汇总
3、java监控
工具很多,可以用java自带的visualVm远程监控,远程只需在java项目启动时加参数点我传送,docker中的web项目加参数写在docker run -e ""里面

eclipse分析堆内存的插件memory analyzer 。eclipse memory analyzer 怎么使用内存管理工具Memory Analyzer的使用

Intellij IDEA远程debug教程实战和要点总结

JConsole可视化工具介绍JVM 之(9)虚拟机监控工具(可视化)

Java中OutOfMemoryError(内存溢出)的三种情况及解决办法

这个代码不用看,只看理论:Java中关于内存泄漏出现的原因以及如何避免内存泄漏;  

4、top
Linux自带,看进程的,具体点我,可用于查进程ID定位代码
5、vmstat
Linux自带,看内存的,具体点我
6、iotop
需安装,用于定位正在IO的进程。具体点我

7、普罗米修斯

开源,监控&报警&时间序列数据库组合。基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。这样做非常适合虚拟化环境比如VM或者Docker 。他是为数不多的适合Docker、Mesos、Kubernetes环境的监控系统之一,随着k8s的流行越来越流行。入门点我

从零搭建Prometheus监控报警系统

8、APM

Application Performance Management,应用性能管理,主要指对企业的关键业务应用进行监测、优化。这方面的产品很多,比如

zipkin:Twitter公司开源的一个分布式追踪工具,被Spring Cloud Sleuth集成,使用广泛而稳定;

skywalking:中国人吴晟(华为)开源的一款分布式追踪,分析,告警的工具,现在是Apache旗下开源项目;微服务搭建示例官网上手;不要下载源码,下distribution,解压后bin目录运行,windows可以直接运行,然后下载agent的包(就Java需要下载,像python直接pip安装,在脚本里用),放到服务器,启动项目时指定,还要指定启动skywalking-cllector的地址。官方文档地址其他参考官网Java的agent说明书官网python的agent说明书python的agent怎么用skywalking官方文档

cat:大众点评开源的一款分布式链路追踪工具;

bee-apm;gitee上开源的个人项目。

还有oneapm、听云等等。 

dynatrace:花钱买的,总节点数有限。旧版本有个.msi的服务端安装包,安装之后输入用户名密码登陆,就可以监控所有部署了dynatrace的节点。基本操作是对某个ip发压,然后在dynatrace监控器上找到ip,右键看purepath,它就会显示最近几分钟内所有的请求信息,比如发起的都是http请求,在监控器里能看到这个http请求调用了哪一行java代码,耗时多久,调用了哪一句sql耗时多久,并且详细到io耗时多久,cpu耗时多久。很方便。现在最新的dynatrace我没找到服务端安装包了,看起来都变成了通过web浏览器监控。Dynatrace入门OneAgent的工作方式欢迎使用Dynatrace帮助

阿里巴巴开源性能监控神器Arthas初体验

五大最佳开源java性能监控工具

apm工具研发

pinpoint部署pinpoint教程

 

自动化测试

1、TestNG
(点我传送)跟junit差不多。最近收藏的一份笔记竟然是B站一个java接口自动化教学的笔记,用的是testNG+externReport+moco+jenkins+git+springboot。 参考资料:Jenkins+TestNG详解
2、看到junit更新到了5,就学习了一下,它内嵌在spring boot test包里,springboot项目默认有这个包。简单来说,右键要测的类生成测试类,在test目录下,给测试类加@SpringBootTest注解,给方法加@Test注解,直接@Autowired拿到要用的bean,在测试方法里写逻辑,加断言判断,最后用maven的test按钮运行一下,就能自动测完所有内容。可以看看这个junit4的简单上手点我传送,结合junit5的文档看 点我传送

啰嗦一句,单元测试的方法,加@Transactional可以直接回滚数据,哪个包的@Transactional都行,但数据库的主键还是对自增,不想回滚数据就加@Rollback(false)。

再啰嗦一句,用junit时尝试了一下java的lambda和双冒号::,没有get到双冒号的使用场景 点我传送
3、jenkins+jmeter
接口自动化:简言之,就是用jmeter做好脚本,设置为运行一次,放服务器上,jenkins设置构建后触发jmeter命令行,测试报告发邮件。具体步骤+发邮件
4、python自动化
目前常见的是用法是 selenium+unittest+htmlreport,selenium支持多种语言,用于模拟人工操作浏览器,需pip安装。unittest是python自带的单元测试框架,跟junit、testng几乎一样,通过testsuite调run方法批量执行测试类,htmlreport用于生成测试报告,pip安装,testsuite用htmlreport调用run即可。一个python自动化框架用法:先封装函数:打开浏览器、进入页面、获取页面元素、操作、判断结果,共5步,这里注意获取元素要用显式等待,报错要截图,然后是测试数据(或者叫测试用例)与代码分离,测试结果可以写入表格,也可以生成html。一个页面对应一个class,class里多个函数对应多个要测的功能,testsuite写在入口方法,添加所有class,便可运行所有测试。参考如下:
自动化框架总览
selenium自动化框架搭建+另一种搭建方式
python本地测试报告无法生成(junit也有类似问题)
持续集成介绍方案
linux无界面运行selenium设置headless
无界面情景可搭配基于nodejs的框架puppeteer
python测试报告htmlReport

5、自动化工具——Macaca
集成了PC、移动端安卓、IOS的解决方案,简介,使用入门
6、自动化工具——Katalon Studio
也是集成各种端,但收费 简介使用入门

接口测试

1、postman
现在主要推销自己的客户端,看来想做成一个大平台,在官网号称可以用于CI自动化。快速上手点我传送,扩展:OAuth2
2、httpRunner
基于python的接口测试框架。点我传送
3、REST assured
基于Java的接口测试框架。点我传送

单元测试

1、mock
mock的工具很多,spring boot test内置的是mockito,和junit配合用的。它就是用反射机制拿到类,然后让人手动设置方法返回值而已,之后再判断方法的调用顺序呀、次数呀等等细节,最后加个junit的断言判断,具体 点我传送,此外,mock还能测controller,如果有单元测试的活儿,可以先看一眼这个 点我传送,python的unittest自带mock,具体参考

接口测试可以用soapui启动mock,SoapUI模拟服务端进行接口测试;rest的mock可以直接用soapui启动,soap的mock需要wsdl文档,这个文档要么用别人的地址导入soapui,要么用xml文件导入。webservice流程参考

其他参考:随便找个wsdl描述文件,然后新建mock也是随便找个描述文件,建mock找描述、建mock; mock根据脚本返回不同的报文
2、Cucumber
基于Java,把代码定义为字符描述,让非开发人员组织测试用例。具体参考

安全测试

安全测试系列:《web安全深度剖析》读书笔记; 

我爱破解网 

移动端测试

1、专项测试
弱网测试,详情点我

 

报错总结

posted @ 2020-08-11 09:50  zhaot1993  阅读(1103)  评论(0编辑  收藏  举报