首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试java软件?

如何测试java软件?
EN

Stack Overflow用户
提问于 2015-12-01 21:31:11
回答 3查看 98关注 0票数 0

我们被分配了一个开源软件来测试!该软件有3个包,每个包有10个或更多的类,每个类可能有几十个方法。

我的问题是,在开始结构(白盒)测试之前,我需要理解软件中的每一行代码吗?

我需要从main()方法开始理解整个程序流程吗?

我应该采取什么方法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-01 21:49:42

如果您对每个方法应该做什么有说明:指定输入的预期输出是什么,则不需要详细介绍这些方法的实现细节。正常情况下,这个应该写下来!

您可以编写单元测试,以检查方法是否满足预定义契约(如果存在)。

如果您没有规范,或者最近的趋势是“UserStories”,您需要“反向工程您的规范”:)您需要分析每个方法以了解它在做什么,接下来您将检查这些方法在哪里被调用,以便确定在方法调用中传递的可能值。此外,通过调用方法,您可能会了解到角落的情况是什么。还有那些你绝对想测试的。

……慢慢地,您了解了整个代码:)

票数 1
EN

Stack Overflow用户

发布于 2015-12-01 21:59:02

不,您不必理解每一行代码才能编写单元测试。我对单元测试还不太熟悉,但如果到目前为止,我看到的是测试每个(或大多数)方法,这些方法对某个输入(->参数、对象变量.)的响应不同。

所以你必须知道一个方法做什么,什么时候成功,什么时候失败。对于某些方法,甚至这些案例之间的转折点也是很重要的。

,例如

假设我们有一个方法,它与两个ints之和,必须等于或大于0:

代码语言:javascript
复制
public static int sumInts(int a, int b) {
    if (a < 0 || b < 0) throw new IllegalArgumentException("'a' and 'b' should be 0 or above!");

    return a + b;
}

你能测试的是:

  • 如果a= 49,b= 16,它是否返回65?
  • 如果a= -3和b= 4,它会抛出异常吗?
  • 如果a=5和b= -13,它会抛出异常吗?
  • 如果a= -46和b= -13,它会抛出异常吗?
  • 如果a=0和b= 0,它是否返回0?
  • 如果a= -1和b= -1,它会抛出异常吗?

当然,这只是一个非常简单的例子。你测试什么取决于你的方法。对于这种方法,最后两个测试可能完全不需要。但是有些方法更复杂,这些方法可能很有用。

票数 0
EN

Stack Overflow用户

发布于 2015-12-01 22:18:48

有几种类型的测试。

  • 单元测试在输入数据的不同情况下测试每个方法的功能。例如,如果您有一个BigInteger fact(int n)方法,您必须编写关于普通正整数、零整数、负整数和max/min值的测试。有几个库可以帮助您:JUnitTestNG等等。
  • 集成测试测试整个应用程序、所有包和类作为一个组进行测试。见阿基利安项目
  • 此外,您还可以使用编写黑匣子测试。
  • 更多类型的测试,如回归测试,负载测试,等等。这是QA工程师的工作。

经过软件行业的黑暗时代之后,社区终于出现了一些良好的单元测试实践:

  • 代码覆盖。我们将生活在没有代码覆盖度量的洞穴中。
  • 故障注入帮助您构建更加健壮和稳定的软件。
  • Wide 嘲弄用法可以编写更具体的测试,而不会影响应用程序的其他部分。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34030571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档