如何尽可能避免漏测
在总结线上问题的时候,我们发现大部分的线上问题是由于功能漏测所导致的。原本应该测试的流程没有测到,或者是根本没有考虑到一些情况,这些都会产生漏测。 在大部分的产品中,漏测是难以避免的,只要不出大问题,漏测的危害会被人为的粉饰和缩小,但是在某些跟货币或货币等价物打交道的行业,漏测往往意味着经济损失,一次漏测可能会影响一群人的职业生涯,万万马虎不得。 下面描述的 …
从基础概念到工具实操,逐篇掌握测试技能。
517 篇内容在总结线上问题的时候,我们发现大部分的线上问题是由于功能漏测所导致的。原本应该测试的流程没有测到,或者是根本没有考虑到一些情况,这些都会产生漏测。 在大部分的产品中,漏测是难以避免的,只要不出大问题,漏测的危害会被人为的粉饰和缩小,但是在某些跟货币或货币等价物打交道的行业,漏测往往意味着经济损失,一次漏测可能会影响一群人的职业生涯,万万马虎不得。 下面描述的 …
找到一份软件测试的工作,但是没有系统学习过软件测试,求推荐快速上手的文章或者书籍,视频? 这其实是一个技术敏感度的问题。但更多的时候是懒!!!因为问别人要比自己找答案轻松啊! 我经常会被问到: 请问测试入门应该看什么书(教程,视频或文章)? 请求我要学性能测试应该看什么书(教程,视频或文章)? 请问学自动化测试应该看什么书(教程,视频或文章)? 还拿自己当“ …
Apache Maven 是一个软件项目管理的综合工具。基于项目对象模型(POM)的概念,Maven 可以从一个中心资料片管理项目构建,报告和文件。本章将和你一起学习 Maven 的基本使用。 官方网站:http://maven.apache.org/ Maven 是一个项目管理和综合工具。 Maven 提供了开发人员构建一个完整的生命周期框架。 开发团队可 …
mock在翻译过来是模拟的意思。这里要介绍的mock是辅助单元测试的一个模块。它允许你用模拟对象来替换你的系统的部分,并对它们已使用的方式进行断言。 什么意思呢?说的直白些,我们要测试一个模块(类、方法或接口),但是这个模块还没有实现,或者它属于第三方模块,真的去调用会比较麻烦,这个时候就可以借助 mock 技术,给该模块设置预期结果。 可能你和我一样会有疑 …
TestNG 官方网址:http://testng.org/doc/ TestNG是一个测试框架的灵感来自JUnit和NUnit,但引入一些新的功能,使它更强大和更容易使用,如: 注释。 在任意大线程池中运行测试,并提供各种策略(所有方法都在自己的线程中,每个测试类有一个线程,等等)。 测试你的代码多线程是安全的。 灵活的测试配置。 数据驱动的测试支 …
跟着我们的示例来mock 一个List,因为大家都知道它的接口(例如add(),get(), clear())。不要mock一个真实的List类型,使用一个真实的实例来替代。 例子: 一旦mock对象被创建了,mock对象会记住所有的交互。然后你就可能选择性的验证你感兴趣的交互。
JDK : Java 开发程序所使用的环境。 IntelliJ IDEA : Java 开发程序所使用的 IDE。 Maven : 下载地址 http://maven.apache.org/download.cgi 将 Maven 下载到本地解压, 这里以下载当前最新版本(apache-maven-3.5.0-bin.zip)为例, …
通过 IntelliJ IDEA 创建 FirstTest 测试类。编写如下代码: 通过 @Test 注解一个方法为测试用例。 通过 assertEquals() 方法来断言两个数是否相等。 运行测试: 我们先感官上对TestNG使用有一个初步认识。
例子: 默认情况下,所有的函数都有返回值。mock函数默认返回的是null,一个空的集合或者一个被对象类型包装的内置类型,例如0、false对应的对象类型为Integer、Boolean; 测试桩函数可以被覆写 : 例如常见的测试桩函数可以用于初始化夹具,但是测试函数能够覆写它。请注意,覆写测试桩函数是一种可能存在潜在问题的做法; 一旦测试桩函数被调用,该函 …
Mockito以自然的java风格来验证参数值: 使用equals()函数。有时,当需要额外的灵活性时你可能需要使用参数匹配器,也就是argument matchers : 例子 参数匹配器使验证和测试桩变得更灵活。点击这里查看更多内置的匹配器以及自定义参数匹配器或者hamcrest 匹配器的示例。 如果仅仅是获取自定义参数匹配器的信息,查 …
maven 用来管理我们的 Java 第三方库,我们需要设置仓库的本地地址来存放这此第三方库。 打开 Maven 目录下的配置文件(\apache-maven-3.5.0\conf\settings.xml) , 找到 <localRepository> ..</localRepository> 标签。 Maven …
Test Fixture 是指一个测试运行所需的固定环境,准确的定义: The test fixture is everything we need to have in place to exercise the SUT 在进行测试时,我们通常需要把环境设置成已知状态(如创建对象、获取资源等)来创建测试,每次测试开始时都处于一个固定的初始状态;测试结果后需 …
TestNG 与 Junit 比较大的一个差异就是前者通过 testng.xml 文件来配置测试用例的执行。 testng.xml文件可以很好的控制要执行的测试用例的粒度,及各种运行策略。 目前testng.xml DTD(Document Type Definition; DTD是一种XML的约束方式。) 配置说明可以在: …
例子: verify函数默认验证的是执行了times(1),也就是某个测试函数是否执行了1次.因此,times(1)通常被省略了。 atLeastOnce() //验证至少调用一次 atLeast(2) //验证至少调用2次 atMost(5) //验证至多调用3次 例子: 这里对验证的顺序有着严格的要求,如果 …
Maven官方文档:Maven Getting Started Guide 通过 mvn 命令创建一个 Maven 项目。 -B :该参数表示让Maven使用批处理模式构建项目,能够避免一些需要人工参与交互而造成的挂起状态。 archetype:generate : 创建 Maven 项目的命令。 DarchetypeGroupId : 指定 Apache …
在我们创建测试用例时,大概分三个层级。 测试包(目录) 测试类(文件) 测试用例(@Test 注解的方法) 接下来介绍,如何控制这三个级别用例的执行。当然,核心还是通过 testng.mxl 文件配置。 <packages>...</packages> 定义一组测试包。 <package.../> 定义一个测试包。 name 指定测试包(目录)的名称。 指定 …
通过when(Object)为无返回值的函数打桩有不同的方法,因为编译器不喜欢void函数在括号内… 使用doThrow(Throwable) 替换stubVoid(Object)来为void函数打桩是为了与doAnswer()等函数族保持一致性。 当你想为void函数打桩时使用含有一个exception 参数的doAnswer() : 当你调 …
IntelliJ IDEA 默认集成的就有 Maven 插件,所以,我们也可以直接使用它来创建 Maven 项目。 首先, 打开 IntelliJ IDEA 开发工具, 菜单栏: “File” —>“Settings…” , 搜索“Maven” 选项, 如下图。 设置参数: Maven home directory: 设置本地安装的 Maven 目录。 …
有时候我们的测试用例并不想以测试包、类和用例为单位去运行。测试用例可以有多个纬度去标识。 例如,可以根据用例的重要程度划分: 重要程度:低——>中——>高 或者,根据用例的类型划分: 类型:正常——>异常 TestNG 允许我们给测试用例贴标签。我们可以根据这些标签有选择地的跳过或执行这些用例。 接下来配置 testng.xml ,根据标签筛选要运行的测试用 …
在前面的测试中我们在每个测试方法里都mock了一个List对象,为了避免重复的mock,是测试类更具有可读性,我们可以使用下面的注解方式来快速模拟对象: 运行这个测试类你会发现报NullPointerException错,mock的对象为NULL,为此我们必须在基类中添加初始化mock的代码: 或者使用built-in …