Java方向测试开发入门技术栈
适合采用Java编程语言在测试领域做自动化测试,测试开发过程中需要的一些基础技术。主要包括,单元测试,接口测试,UI自动化测试,性能测试,持续集成测试等。
Anthony_tester
这个作者很懒,什么都没留下…
展开
-
TestNG入门教程-1-TestNG简介
说明:由于该系列是好友之邀,优先提供给好友的自媒体账号发布Testng系列文章,所以可能大家会提前看过接下来的这些文章内容。 这个系列文章,我们来系统地学习下Java编程语言中,比较流行的单元测试框架TestNG。因为Junit比较老,过时了,所以这里选择了TestGN,而且,TestNG的功能比Junit更加强大。还有一点可以就是TestNG的设计模式或者特点,很好地符合我们原创 2017-11-06 22:02:47 · 14343 阅读 · 1 评论 -
TestNG入门教程-2-写第一个基于TestNG的用例
说明:由于该系列是好友之邀,优先提供给好友的自媒体账号发布Testng系列文章,所以可能大家会提前看过接下来的这些文章内容。 前面一篇,介绍了TestNG的特点和官网地址,以及在IDEA上的配置过程。这篇,我们就来动手写一个基于TestNG的测试代码,或者叫测试用例。前面我们知道通过注释语句“@Test”添加在方法的前面,这个方法就会被执行。从这个注释来看,如果添加@Test,原创 2017-11-06 22:11:35 · 9138 阅读 · 3 评论 -
TestNG入门教程-3-Testng.xml文件介绍
说明:由于该系列是好友之邀,优先提供给好友的自媒体账号发布Testng系列文章,所以可能大家会提前看过接下来的这些文章内容。 现在这篇,我们来学习TestNG.xml文件,前面我们已经知道,TestNG就是运行这个文件来执行测试用例的。通过本篇,你可以进一步了解到:这个文件是配置测试用例,测试套件。简单来说,利用这个文件,我们可以跑同一个类或者多个不同类里面的测试用例。Te原创 2017-11-07 21:04:08 · 11489 阅读 · 0 评论 -
TestNG入门教程-4-Testng中注释简介
说明:由于该系列是好友之邀,优先提供给好友的自媒体账号发布Testng系列文章,所以可能大家会提前看过接下来的这些文章内容。 本篇来介绍TestNG中的注释,前面我们已经学习了一个注释,那就是“@Test”,也知道它的作用。就是在方法名称上面一行添加这个注释,这个方法就变成了测试用例,一定会被执行。这里,我们介绍下其他的注释的基本使用说明。1. @Before和@Aft原创 2017-11-07 21:13:30 · 4450 阅读 · 2 评论 -
TestNG入门教程-5-timeOut属性
说明:由于该系列是好友之邀,优先提供给好友的自媒体账号发布Testng系列文章,所以可能大家会提前看过接下来的这些文章内容。 这篇先来介绍@Test注释下的一个属性-timeOut。字面意思就是超时判断,详细点说。如果哪个测试方法需要监听执行的时间,那么就可以考虑采用timeOut属性。例如,实际的接口测试中,加入登录接口时间不能超过3秒中。下面来看看如何监控这个方法如果运行时原创 2017-11-07 21:19:20 · 3456 阅读 · 4 评论 -
TestNG入门教程-6-enabled和priority属性
说明:由于该系列是好友之邀,优先提供给好友的自媒体账号发布Testng系列文章,所以可能大家会提前看过接下来的这些文章内容。 本篇来继续学习@Test下的注释,这篇学习两个属性的基本使用。第一个是设置该条用例不被执行,第二个的作用是设置用例执行的优先顺序。1. 属性enabled 在Testng中,如果方法前面添加了@Test注释,然后没有其他的属性,那么默原创 2017-11-08 21:53:20 · 4364 阅读 · 1 评论 -
TestNG入门教程-7-invocationCount和invocationTimeOut
这篇我们来学习下@Test中另外两个属性invocationCount和invocationTimeOut,前面我介绍了timOut这个属性,知道是超时监控的功能。同样,本篇两个属性和这个差不多,只不过是监控运行多次同一个用例的总耗时是否达到设置的最大值。1.invocationCount 字面意思就是调用的次数统计,这个属性是的英文解释是:The number of time原创 2017-11-08 21:58:01 · 4449 阅读 · 1 评论 -
TestNG入门教程-8-dependsOnMethods
这篇来介绍@Test下的属性dependsOnMethods,看字面意思可以知道。如果要运行当前的测试用例,需要先运行指定的依赖方法后,再运行当前用例。直接来看看例子。package com.java.learn;import org.testng.annotations.Test;/** * create by Anthony on 2017/11/02 */public原创 2017-11-08 22:05:16 · 8110 阅读 · 3 评论 -
TestNG入门教程-9-断言之HardAssert和SoftAssert
本篇来介绍TestNG中的Assertion,也是断言。前面介绍了@Test注释下大部分的属性的功能和基本使用。这篇介绍,写测试用例中的断言部分。我们知道,一个测试用例的水平高低,主要是看断言的水平。断言能体现出测试的思维和测试角度,所以断言是测试中最难写的部分,自动化测试用例最难的也是在断言。举例一个接口测试的常见流程1) 发送接口请求2) 断言接口响应状态是不是200 OK原创 2017-11-11 15:32:59 · 9538 阅读 · 3 评论 -
TestNG入门教程-10-测试类/测试组/测试方法的概念
本篇来介绍Test Methods,Test classes ,Test groups的基本概念。了解这三个基本概念,有助于我们学习其他的功能。前面介绍了@Test下的before和after属性,其中就有beforeMethods和afterGroups等。这三个都会在testng.xml文件中存在。1.Test Methods(测试方法) 官方定义是,凡是方法(或者叫函原创 2017-11-17 21:19:44 · 3503 阅读 · 0 评论 -
TestNG入门教程-11-如何通过testng.xml来实现设置依赖关系
这篇来介绍下依赖关系,前面我们简单介绍了@Test中的dependsOnMethods。这篇,我们主要学习dependOnGroups和如何在testng.xml中设置依赖关系。在Testng中依赖分两种,硬依赖和软依赖。 硬依赖就是所有的依赖方法必须成功执行,才会执行接下来的方法,如果其中有一个依赖的方法失败了,那么接下来的方法是不会被执行,会默认标记跳过(skip)。举例:原创 2017-11-17 21:38:14 · 3721 阅读 · 3 评论 -
TestNG入门教程-12-Java代码执行testng.xml和失败后重跑
前面我们都在IDEA上右键testng.xml文件来运行testng用例,这个在编写测试用例过程是 可以这么做,但是,如果测试用例写完了,也是这么做吗?有没有什么方法,例如自动化去实现。测试脚本维护后期,我们都会考虑持续集成测试,那么如何把运行测试用例实现自动化呢?网上搜索,很多都是testng在cmd中输入命令行,但是这个是有缺陷的,第一需要javac命令去编译你的测试用例,然后才能用这个命令,原创 2017-11-21 21:48:53 · 9746 阅读 · 11 评论 -
TestNG入门教程-13-TestNG中的Listener和简单应用
在上一篇文章,我介绍了我认为的失败用例重跑的方式,这只是一种解决问题的方法,主要在什么场景下,才能决定这个方法是否管用和适合。这篇来介绍下TestNG中的Listener,在理解了Listener之后,我们再来看看代码失败重跑的第二种方法。 什么是TestNG Listener 接触过Selenium的人可能听说过webdriver Listener,可能面试中也会被问到原创 2017-11-26 21:56:38 · 6441 阅读 · 1 评论 -
TestNG入门教程-14-失败重跑的第二种方法
前面我们介绍了TestNG中的Listener和简单举例,这篇来介绍下网上很多人采用的修改代码来实现测试用例的重跑(设置重跑多次),这当然离不开Listener相关接口。在介绍实现相关代码之前,我们先来了解几个接口。1. 接口IRetryAnallyzer 该接口的作用是提供去实现能够让用例运行失败重跑的设置。实现该接口必须要实现retry(ITestResult resu原创 2017-12-01 17:03:17 · 3953 阅读 · 2 评论 -
TestNG入门教程-15-Java语言的断言和Junit的断言
前面几篇,我们差不多都是围绕测试失败来介绍,这篇来补充一下测试结果的一些知识。在TestNG的测试报告中有,成功,失败,跳过的三种状态。成功指的是用例执行完了没有抛出异常或者抛出的异常是期待的异常,没有任何报错,我们一般写断言语句来验证测试检查点是成功的。测试失败,就是指用例运行后遇到了报错,跳过是指,由于前面失败了,后面的用例无法执行就标记跳过的状态。这篇,我们来讨论下写测试用例的过程中断言的使原创 2017-12-09 21:57:02 · 4355 阅读 · 4 评论 -
Junit入门到掌握-0-学习课程介绍
我之前在博客写过一个关于TestNG这个测试框架的系列文章,如果你作为一个主要以Java语言来做开发或者测试的话,JUnit是你无法绕过的坎,这个单元测试框架,其实需要掌握的优先级是要排在TestNG的前面。很多人有这么一个观点,认为掌握JUnit框架是开发人员的事情,掌握TestNG是测试人员的事情。确实,测试人员写单元测试用例代码还是很少的现象在国内的公司,测试基本上利用TestNG都是用来做...原创 2019-07-03 20:07:35 · 1139 阅读 · 0 评论 -
Junit入门到掌握-1-JUnit概述
本篇作为Junit的概述,主要了解什么是Junit,Junit的基本特征,Junit是如何工作,以及什么是单元测试,和Junit的历史背景。1.什么是JunitJUnit是Java语言的一个单元测试框架,这个就是Junit的核心特点。在Java开发人员写好了模块代码之后,它们可以不使用Junit来写单元测试用例,例如,可以写多个带main方法的测试类。但是如果使用Junit,极大...原创 2019-07-03 20:07:56 · 1520 阅读 · 0 评论 -
Junit入门到掌握-2-JUnit的安装
本篇介绍JUnit的如何得到和环境的安装,其实现在任何流行的Java IDE工具都内置了JUnit框架,本篇主要是从Eclipse 上和github两个来源介绍如何获取JUnit,github上就是可以看到Junit的源码,我们这个系列学习Junit4版本,github上可以看到最新版本是Junit5。1.Eclipse上内置JUnit打开Eclipse IDE,点击new,点击点击...原创 2019-07-03 20:08:14 · 1393 阅读 · 4 评论 -
Junit入门到掌握-3-JUnit基础-第一个JUnit单元测试代码详解
前面环境搭建好了,我们来写一个JUnit的单元测试,然后分析里面代码,引出一些JUnit的基本概念。1.环境准备新建一个overview包,然后新建一个Test01.java文件,写入下面代码内容。package overview;import static org.junit.Assert.assertEquals;import org.junit.Test;pu...原创 2019-07-03 20:08:31 · 1556 阅读 · 0 评论 -
Junit入门到掌握-4-JUnit基础-如何运行JUnit测试
这篇特意用单独一篇文章来介绍如何运行Junit, 同时也适应于TestNG, 真的,很多人还不会如何运行JUnit,特别是一个class文件下有多个@Test的用例。1.单元JUnit用例运行当一个class中只有一个@Test的JUnit方法,这种是最简单的,随便在这个代码文件中右键,选择run as junit,运行就可以。package overview;import...原创 2019-07-04 20:35:23 · 4449 阅读 · 0 评论 -
Junit入门到掌握-5-JUnit基础-简单的真实单元测试项目练习
接下来开始写一个单元测试用例练习,这个就不是单元测试方法中执行打印语句,而是真正的模拟测试代码来进行的。我网上找了一个简单代码来作为我们单元测试的项目。1.被测项目这么一个项目,就两个Java类文件,这个项目意思是蛋白质跟踪的一个功能实现。里面有一些蛋白质添加和蛋白质减量,和是否达标等纪录的方法。下面是两个文件的具体代码。package com.anthony.protein;...原创 2019-07-04 20:35:33 · 1873 阅读 · 0 评论 -
Junit入门到掌握-6-JUnit基础-注解Before和After
这篇开始学注解,我们只是挑选常见和常用的注解来学习。本篇来掌握Before和After两个注解的基本使用方法。Before可以理解为事先,After理解为事后,而@Test标注的测试方法就是这件事情。1. Before 和After和Test方法关系当前@Befre 和@After注解都是测试方法层的,作用的范围是@Test标注的方法。2.再添加一个用例添加一个用例...原创 2019-07-04 20:35:47 · 5230 阅读 · 0 评论 -
Junit入门到掌握-7-JUnit基础-注解BeforeClass和AfterClass和Ignore
前面一篇学习了Before和After这两个注解,这两个注解是作用在每一个@Test标注的方法上,每次运行方法都需要运行一次Before和一次After。这篇来学习一个类似的,就是作用范围变成了Class,叫BeforeClass和AfterClass, 特点就是,每运行一次class文件,只执行一次BeforeClass和AfterClass, 这两个注解标注标注的方法是Java中的静态方法。...原创 2019-07-05 17:27:42 · 1912 阅读 · 0 评论 -
Junit入门到掌握-8-JUnit基础-Exception和Timeout和Assertions
本篇来学习两个参数项,异常和超时。这两个参数是结合@Test来使用的,作用范围当然是测试方法。1.异常Exception有时候我们执行这个方法,出现异常是期待的结果,单元测试中如果出现异常,会中断测试,为了不中断,我们需要使用异常注解模拟异常测试为了模拟异常,我们需要到被测项目中,某一个方法写一个抛异常的代码,然后这个自定义异常类需要我们写以下。编辑被测项目的T...原创 2019-07-05 17:27:53 · 1057 阅读 · 0 评论 -
Junit入门到掌握-9-JUnit高级-TestSuite和举例
前面几篇介绍完了JUnit的基本功能和基本使用场景以及用法,一般来说,现在的开发都是一个人一个模块,如果一个开发,写一个业务代码的类,然后利用前面的知识是可以完成最基础的单元测试,起码证明他写的方法是可以通过单元测试,至少开发会做正向成功的用例。这篇开始来学习JUnit作为一个单元测试框架的高级部分,我们先从TestSuite开始。1.测试套件 TestSuite不要笑,我们先来学习...原创 2019-07-05 22:35:07 · 3398 阅读 · 2 评论 -
Junit入门到掌握-10-JUnit高级-Categories
前面介绍了测试套件TestSuite的概念和基本功能是把需要测试的测试类加进来管理,像一个容器一样。这样管理方式有些简单粗暴,为了达到更精细和灵活管理,我们这篇来学习一个Categories的概念,字面意思就分类。1.Categories这个分类和测试套件很像。第一个特点,在TestSuite原来的注解变了,第二个我们需要在原来的TestClass里面是有Catogories...原创 2019-07-05 23:31:25 · 1681 阅读 · 0 评论 -
Junit入门到掌握-11-JUnit高级-Parameterized参数化
这篇来学习一个新的注解,叫@Parameters, 参数化的意思。什么时候需要用到参数化呢,在selenium中这个例子很好,就是我有一个500个用户数据,我需要重复测试这500个用户的登录功能。我们肯定只需要写一个方法,然后调用这个方法500次,每次方法传入参数不一样,这样应该能够完成这个测试需求。在单元测试中,如果一个方法的用例,采用边界值划分,有时候会产生十几个测试用例,这个时候我们就需要使...原创 2019-07-07 18:15:23 · 2324 阅读 · 0 评论 -
Junit入门到掌握-12-JUnit高级-高级断言
这篇来学习下Junit中的高级断言,前面我们学习过assertEuqals(期待结果,实际结果)这样的表达式去断言。那么什么是高级断言呢,其实就是这种基本断言的一种扩展,一般格式是这样的assertThat(实际结果,匹配规则),高级断言高级就在匹配规则这块的表达式书写,很灵活。1.高级断言高级断言的格式这个value就是我们的实际结果,这个方法的名称是assertThat,...原创 2019-07-07 19:00:53 · 736 阅读 · 0 评论 -
Junit入门到掌握-13-JUnit高级-高级异常
这篇来学习一个高级异常,主要是在单元测试中需要测试某些方法的期待异常出现。1.高级异常高级异常一般是结合@Rule使用,然后初始化一个ExceptedException对象, Rule注解这篇之后来具体介绍。2.高级异常举例1.在被测项目代码中,扎到InvalidGoalException.java 改成如下代码。package com.anthony.prote...原创 2019-07-07 22:08:33 · 489 阅读 · 0 评论 -
Junit入门到掌握-14-JUnit高级-规则Rule
前面一篇介绍期待异常处理,说了一下新的注解@Rule, 这篇来学习一下Rule1.RuleJUnit有了Rule,才使得有更多的扩展性,能做更多的功能测试。@Rule的特点是:在一个class中所有的@Test标注过的测试方法都会共享这个Rule,例如定义一个Timeout,所有方法运行都会自动检测是否超时。官方wiki关于rules介绍:https://github.com/j...原创 2019-07-07 22:50:04 · 1125 阅读 · 0 评论 -
Junit入门到掌握-16-JUnit集成-在Java main方法中执行JUnit测试类
前面JUnit基础和JUnit的高级都介绍完了,该考虑和其他工具集成,例如ant和maven,由于最近几年java项目都使用maven和gradle,几乎看不到ant构建工具,所以这个集成,我这里主要介绍JUnit和Maven的集成。其实,如果做过集成自动化自动化测试就应该知道,想要集成,第一个要实现的就是简化成一条命令在控制台或者命令终端执行,如果可以做到,集成就没有任何问题,所以,我们这里先来...原创 2019-07-08 19:13:57 · 2124 阅读 · 2 评论 -
Junit入门到掌握-15-JUnit高级-Theories
这篇学习注解@Theory和@DataPoint, 这个和Parameters一样,属于数据驱动范畴。1.Theory@DataPoint标注的也是一个静态方法,里面有数据源。如果是@DataPoint表示一个数据,如果是@DataPoints表示一组数据,一般用@DataPoints2.demo练习新创建一个测试类,代码如下package test;im...原创 2019-07-08 19:14:10 · 755 阅读 · 0 评论 -
Junit入门到掌握-17-JUnit集成-命令行运行junit用例
这篇来学习命令行如何执行Junit测试用例,其实就是一个很长的命令,我们需要分步骤地去拼接这个命令,最后这些步骤其实都是可以通过自动化完成。1.下载Junit jar包去https://github.com/junit-team/junit4/wiki/Download-and-Install下载两个包其实这两个jar在我们eclipse上项目中都有把这两个放在一个文件...原创 2019-07-08 19:15:15 · 2336 阅读 · 0 评论 -
Junit入门到掌握-18-JUnit集成-Maven和Junit的集成
我前面说过,现在Java语言项目中流行的构建工具主要是ant和maven, 现在来看,maven更火和采用率更多,所以我不介绍ant和junit的集成,这篇来学习maven和junit的集成过程。1.先把被测项目和junit测项目都转成maven项目目前我们有这两个Java 工程,现在需要把这两个java工程都转换成maven工程。右键ProteinTracker这个工程,选...原创 2019-07-08 19:17:14 · 1874 阅读 · 2 评论 -
Junit入门到掌握-19-JUnit集成-代码覆盖率
这篇来学习一个单元测试领域中很重要的一个概念,代码覆盖率,这个术语,早起是在航空航天方面的软件里提出来的一个测试方法,100%代码覆盖率是一个不可能完成的任务,只是一个理想的目标。本篇先来学习代码覆盖率和周边几个名词,然后介绍一款能够给出代码覆盖率的插件,简单来学习和使用下这个插件。代码覆盖率是一个很容易在面试中被问到的问题,通过本篇学习,你起码有一个普,不会乱扯,不懂装懂。1.代码覆盖...原创 2019-07-08 21:51:35 · 6078 阅读 · 2 评论 -
Junit入门到掌握-20-JUnit集成-代码覆盖率Cobetura基本使用
前面一篇文章介绍了代码覆盖率一些概念和代码覆盖率测试中一些准则或者覆盖率方式,这篇继续来学习代码覆盖率一个软件,或者一个插件。这个插件叫Cobetura, 可以直接在cmd通过命令运行,不过一般我们用maven集成,下面来看看这个maven+Cobetura集成过程。1.项目准备这个需要Eclipse新创建一个标准的maven项目,不然得到html报告,覆盖率全部选项都是0.之前我们是...原创 2019-07-10 18:54:39 · 1043 阅读 · 0 评论 -
Junit入门到掌握-21-JUnit扩展-持续集成之Infinitest
这篇开始介绍一些Junit扩展的东西,本篇先引出持续集成的概念,然后介绍一个小工具,里面实现持续集成效果。这个工具叫Infinitest。1.什么是持续测试持续测试就是修改代码和执行测试形成闭环自动化。2.Infinitest安装一般在Eclipse都是去市场里搜这个名称,然后安装,重启Eclipse就行项目介绍:https://infinitest.github.i...原创 2019-07-10 18:54:48 · 601 阅读 · 0 评论 -
Junit入门到掌握-22-JUnit扩展-测试桩Stub
这篇来学习单元测试中的Stub,翻译过来就是测试桩。测试过程中为什么要打桩,什么是桩,如何写一个简单的测试桩的例子,本篇就来了解这些基本的问题。1.什么是测试桩不要去看网上看哪些所谓的定义,在了解桩之前,我们需要了解依赖。上面这个图,SUT表示被测试的软件,TestCode是我们写的一个测试用例,其中我们需要测试里面一个模块,但是这个模块依赖别的模块,依赖的模块加入是被部门甚至别公...原创 2019-07-10 18:54:57 · 2234 阅读 · 1 评论 -
Junit入门到掌握-23-JUnit扩展-模拟Mock
前面一篇简单了介绍了测试桩Stub的概念和举例,和测试桩同级还有一个叫驱动桩,这些都属于TDD技术,也就是测试驱动开发的简称。今天来介绍TDD里面的一个测试技术,叫Mock,就是模拟的意思。现在Mock技术已经在单元测试,集成测试和接口测试,性能测试都能看到。我们这边介绍Java语言中基于Junit的单元测试的mock, 有一个jar包叫JMock。1.Jmock搜先,单词Mock(...原创 2019-07-11 11:06:15 · 1700 阅读 · 2 评论