13、以白盒测试考虑

毕竟,开发者写测试的同时也写了被测试类,需要特别注意测试复杂逻辑。

14、微不足道的类也要测试

有人会推荐测试所有主要的情况,而可以忽略诸如简单的类似setter和getter等微不足道方法。 然而,应该测试微不足道方法情况有几个原因:

● 很难定义微不足道。对不同的人可能有不同的含义。

● 从黑盒测试的角度看无法知道代码的哪部分是微不足道的。

● 由于拷贝-粘贴操作,微不足道的代码也可能包含错误。

private double weight_;

private double x_, y_;

public void setWeight(int weight)

{

weight = weight_;    // 错误

}

public double getX()

{

return x_;

}

public double getY()

{

return x_;    // 错误

}

建议就是测试所有代码,毕竟微不足道的代码很容易测试。

15、首先关注执行覆盖率

执行覆盖不同于实际代码覆盖。一个测试的最初目标应该保证高的执行覆盖。这可以确保代码在某些参数下真正执行。有了这个,就可以去改善测试覆盖了。注意实际代码覆盖很难确定(通常都很接近0%)。

考虑下面这个公开方法:

void setLength(double length);

通过调用setLength(1.0) 你就可能得到100% 的执行覆盖率。为了达到真正100%的实际测试覆盖,必须使用所有可能的double值来调用该方法以确认它们的正确行为。这显然是不可能的。

16、覆盖边界情况

确保覆盖参数边界的情况。对于数,测试负数、0、正数、最小、最大、NaN、无穷等情况。对于字符串,考虑空字符串、单个字母的字符串、非 ASCII的字符串、多字节的字符串等情况。对于集合,测试空集合、单个元素集合、第一个、最后一个等。对于日期,考虑1月1日、2月29日、12月31 日等。被测类会提示各个具体情况下的边界情况。由于这些都可能是错误的根源,因此要尽可能多地测试这些情况。

17、提供随机数生成器

在覆盖了边界情况后,进一步提高覆盖率的一个简单方法就是产生随机数以使得每次测试都可以使用不同的输入执行。

为了实现这个目标,可以提供一个生成double、integer、 string和dates等类型随机数的实用类。生成器必须可以从各个类型的全范围内生成值。

如果测试很快,可以考虑在一个循环内运行尽可能多的组合。下面的例子就是验证通过一次大端和一次小端转化是否可以得到原值。由于测试很快,每次可以根据不同的值执行100万次。

void testByteSwapper()

{

for (int i = 0; i < 1000000; i++)

{

double v0 = Random.getDouble();

double v1 = ByteSwapper.swap(v0);

double v2 = ByteSwapper.swap(v1);

assertEquals(v0, v2);

}

}

java 单体测试_单体测试指南相关推荐

  1. java + testng wsdl 测试_在测试中使用XPATH断言的策略

    ***************************************************************** 在这门课里你将学到Web Services(SOAP WebServ ...

  2. web兼容性测试 _ Web测试指南(四)

    4.1 平台测试 市场上有很多不同的操作系统类型,最常见的有Windows.Unix.Macintosh.Linux等.Web应用系统的最终用户究竟使用哪一种操作系统,取决于用户系统的配置.这样,就可 ...

  3. java 项目测试_项目测试工作流程

    第一轮测试,第二轮测试,第三轮测试,日常测试,预发测试,线上测试 由于为新起项目,日常测试部分可以忽略,不用上日常测试环境,项目测试环境即是日常测试环境,该部分在第一次做项目时,容易忽视. 各个阶段测 ...

  4. 软件测试_APP测试_兼容性测试

    APP的兼容测试主要就是测试APP的安装.启动.运行.卸载测试,以及安装时间 .启动时间.CPU占用.内存占用.流量耗用.电量耗用等性能上的测试. 兼容性测试点: 一.内部兼容性: 1.与本地和其他主 ...

  5. qa 芯片测试_芯片测试术语介绍CP、FT、WAT

    CP.FT.WAT CP是把坏的Die挑出来,可以减少封装和测试的成本.可以更直接的知道Wafer 的良率.FT是把坏的chip挑出来:检验封装的良率. 现在对于一般的wafer工艺,很多公司多把CP ...

  6. 游戏测试_怎么样测试游戏(入门)

    游戏测试是测试的一种,逃不开软件测试的魔爪. 所以-- 游戏测试的目的:发现游戏中存在的缺陷. 游戏测试分两种:大型网络游戏和手游. 大型网络游戏网游 一般大型的网络游戏中测试都分很多个阶段: 前期测 ...

  7. java bdd 框架_开发者测试: 实现BDD测试框架(JSpec)

    There are two ways of constructing a software design. One way is to make it so simple that there are ...

  8. java 多线程工具_多线程测试工具groboutils的使用

    public class FaultServiceTest extends TestCase { /** * @param args * @throws FaultException * @throw ...

  9. java oom分析_作为测试你应该知道的JAVA OOM及定位分析

    上周现网一个内存溢出问题导致应用服务器每隔一小时死一次,遂整理下常见的OMM.发现方法和处理方式,加入Bug预防. 常见的OutOfMemoryError有三种:OutOfMemoryError:Pe ...

  10. java数值估算_项目估算指南

    <项目估算指南>由会员分享,可在线阅读,更多相关<项目估算指南(15页珍藏版)>请在人人文库网上搜索. 1.目 录1 目的22 适用范围23 术语定义24 角色与职责25 估算 ...

最新文章

  1. Nature Genetics:微生物如何适应植物的?(articles)
  2. php新版本废弃 preg_replace /e 修饰符
  3. 运维岗位技能风向标!
  4. c语言编写程序计算行列式值,新手作品:行列式计算C语言版
  5. -bash: mysql_upgrade: command not found
  6. 搭建Magento电子商务网站
  7. 智能家居助手后台系统原型/智慧家居后台管理系统/应用分析/页面分析/设备分析/用户管理/运营管理/权限管理/系统设置/问题反馈/商城管理/消息管理/用户画像/公告管理/账号画像/留存用户/数据埋点
  8. Python日期类的实现
  9. 中华黑豹计算机病毒,关于“中华黑豹病毒”
  10. Android Audio音频系统之深入浅出
  11. oracle共有同义词,Oracle同义词概念
  12. [Unity3D]Unity3D游戏开发之从《魂斗罗》游戏说起(上)——目标追踪
  13. unsigned long long 与 long long
  14. Tomcat7 与 maven
  15. 《Android平台开发之旅》学习笔记
  16. HTML 元素内容超出尺寸范围怎么办?
  17. Nx 介绍: 基于插件的单一代码库(Monorepo)构建系统
  18. 怎样在3Dslicer中创建LoadableModule
  19. 加州大学河滨分校计算机科学排名,加州大学河滨分校排名
  20. 邮件抄送 php,【PHP】发送带抄送(CC)和秘送(BCC)的邮件

热门文章

  1. 解决苹果电脑OS X 10.8.5 安装双系统,遇到的各种坑
  2. Python的Excel/Word库
  3. Unity2D入门(二):图层layer和角色建立
  4. Ultravnc,3步教你Ultravnc软件如何注册登录
  5. 什么样的人适合学web前端?
  6. 【CSU-PIPIOJ】1254 PIPI上学路
  7. 量化敏捷项目管理案例分享
  8. 制造企业生产排产现状和APS系统的解决方案
  9. 轻松使用中移物联网平台Onenet,MQTT协议快速接入实验,使用Onenet平台MQTT协议开发个人智能设备的解决方案
  10. 外汇mt4 软件在哪里下载比较正规?