「java相关测试」java测试技术

博主:adminadmin 2022-11-29 18:08:09 45

今天给各位分享java相关测试的知识,其中也会对java测试技术进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

使用Java 测试网络连通性的几种方法

概述在网络编程中,有时我们需要判断两台机器之间的连通性,或者说是一台机器到另一台机器的网络可达性。在系统层面的测试中,我们常常用 Ping 命令来做验证。尽管 Java 提供了比较丰富的网络编程类库(包括在应用层的基于 URL 的网络资源读取,基于 TCP/IP 层的 Socket 编程,以及一些辅助的类库),但是没有直接提供类似 Ping 命令来测试网络连通性的方法。本文将介绍如何通过 Java 已有的 API,编程实现各种场景下两台机器之间的网络可达性判断。在下面的章节中,我们会使用 Java 网络编程的一些类库 java.net.InetAddress 和 java.net.Socket,通过例子解释如何模拟 Ping 命令。回页首简单判断两台机器的可达性一般情况下,我们仅仅需要判断从一台机器是否可以访问(Ping)到另一台机器,此时,可以简单的使用 Java 类库中 java.net.InetAddress 类来实现,这个类提供了两个方法探测远程机器是否可达 �0�2boolean isReachable(int�0�2timeout) //�0�2测试地址是否可达�0�2boolean isReachable(NetworkInterface�0�2netif, int�0�2ttl, int�0�2timeout) //�0�2测试地址是否可达. 简单说来,上述方法就是通过远端机器的 IP 地址构造 InetAddress 对象,然后调用其 isReachable 方法,测试调用机器和远端机器的网络可达性。注意到远端机器可能有多个 IP 地址,因而可能要迭代的测试所有的情况。清单1:简单判断两台机器的可达性 void isAddressAvailable(String ip){ try{ InetAddress address = InetAddress.getByName(ip);//ping this IP if(address instanceof java.net.Inet4Address){ System.out.println(ip + " is ipv4 address"); }else if(address instanceof java.net.Inet6Address){ System.out.println(ip + " is ipv6 address"); }else{ System.out.println(ip + " is unrecongized"); } if(address.isReachable(5000)){ System.out.println("SUCCESS - ping " + IP + " with no interface specified"); }else{ System.out.println("FAILURE - ping " + IP + " with no interface specified"); } System.out.println("\n-------Trying different interfaces--------\n"); EnumerationNetworkInterface netInterfaces = NetworkInterface.getNetworkInterfaces(); while(netInterfaces.hasMoreElements()) { NetworkInterface ni = netInterfaces.nextElement(); System.out.println( "Checking interface, DisplayName:" + ni.getDisplayName() + ", Name:" + ni.getName()); if(address.isReachable(ni, 0, 5000)){ System.out.println("SUCCESS - ping " + ip); }else{ System.out.println("FAILURE - ping " + ip); } EnumerationInetAddress ips = ni.getInetAddresses(); while(ips.hasMoreElements()) { System.out.println("IP: " + ips.nextElement().getHostAddress()); } System.out.println("-------------------------------------------"); } }catch(Exception e){ System.out.println("error occurs."); e.printStackTrace(); } } 程序输出 --------------START-------------- 10.13.20.70 is ipv4 address SUCCESS - ping 10.13.20.70 with no interface specified -------Trying different interfaces-------- Checking interface, DisplayName:MS TCP Loopback interface, Name:lo FAILURE - ping 10.13.20.70 IP: 127.0.0.1 ------------------------------------------- Checking interface, DisplayName:Intel(R) Centrino(R) Advanced-N 6200 AGN - Teefer2 Miniport, Name:eth0 FAILURE - ping 10.13.20.70 IP: 9.123.231.40 ------------------------------------------- Checking interface, DisplayName:Intel(R) 82577LM Gigabit Network Connection - Teefer2 Miniport, Name:eth1 SUCCESS - ping 10.13.20.70 ------------------------------------------- Checking interface, DisplayName:WAN (PPP/SLIP) Interface, Name:ppp0 SUCCESS - ping 10.13.20.70 IP: 10.0.50.189 ------------------------------------------- --------------END-------------- 从上可以看出 isReachable 的用法,可以不指定任何接口来判断远端网络的可达性,但这不能区分出数据包是从那个网络接口发出去的 ( 如果本地有多个网络接口的话 );而高级版本的 isReachable 则可以指定从本地的哪个网络接口测试,这样可以准确的知道远端网络可以连通本地的哪个网络接口。但是,Java 本身没有提供任何方法来判断本地的哪个 IP 地址可以连通远端网络,Java 网络编程接口也没有提供方法来访问 ICMP 协议数据包,因而通过 ICMP 的网络不可达数据包实现这一点也是不可能的 ( 当然可以用 JNI 来实现,但就和系统平台相关了 ), 此时可以考虑本文下一节提出的方法。回页首指定本地和远程网络地址,判断两台机器之间的可达性在某些情况下,我们可能要确定本地的哪个网络地址可以连通远程网络,以便远程网络可以回连到本地使用某些服务或发出某些通知。一个典型的应用场景是,本地启动了文件传输服务 ( 如 FTP),需要将本地的某个 IP 地址发送到远端机器,以便远端机器可以通过该地址下载文件;或者远端机器提供某些服务,在某些事件发生时通知注册了获取这些事件的机器 ( 常见于系统管理领域 ),因而在注册时需要提供本地的某个可达 ( 从远端 ) 地址。虽然我们可以用 InetAddress.isReachabl 方法判断出本地的哪个网络接口可连通远程玩过,但是由于单个网络接口是可以配置多个 IP 地址的,因而在此并不合适。我们可以使用 Socket 建立可能的 TCP 连接,进而判断某个本地 IP 地址是否可达远程网络。我们使用 java.net.Socket 类中的 connect 方法 void connect(SocketAddress�0�2endpoint, int�0�2timeout) �0�2//使用Socket连接服务器,指定超时的时间 这种方法需要远程的某个端口,该端口可以是任何基于 TCP 协议的开放服务的端口(如一般都会开放的 ECHO 服务端口 7, Linux 的 SSH 服务端口 22 等)。实际上,建立的 TCP 连接被协议栈放置在连接队列,进而分发到真正处理数据的各个应用服务,由于 UDP 没有连接的过程,因而基于 UDP 的服务(如 SNMP)无法在此方法中应用。具体过程是,枚举本地的每个网络地址,建立本地 Socket,在某个端口上尝试连接远程地址,如果可以连接上,则说明该本地地址可达远程网络。程序清单 2:指定本地地址和远程地址,判断两台机器之间的可达性 void printReachableIP(InetAddress remoteAddr, int port){ String retIP = null; EnumerationNetworkInterface netInterfaces; try{ netInterfaces = NetworkInterface.getNetworkInterfaces(); while(netInterfaces.hasMoreElements()) { NetworkInterface ni = netInterfaces.nextElement(); EnumerationInetAddress localAddrs = ni.getInetAddresses(); while(localAddrs.hasMoreElements()){ InetAddress localAddr = localAddrs.nextElement(); if(isReachable(localAddr, remoteAddr, port, 5000)){ retIP = localAddr.getHostAddress(); break; } } } } catch(SocketException e) { System.out.println( "Error occurred while listing all the local network addresses."); } if(retIP == null){ System.out.println("NULL reachable local IP is found!"); }else{ System.out.println("Reachable local IP is found, it is " + retIP); } } boolean isReachable(InetAddress localInetAddr, InetAddress remoteInetAddr, int port, int timeout) { booleanisReachable = false; Socket socket = null; try{ socket = newSocket(); // 端口号设置为 0 表示在本地挑选一个可用端口进行连接 SocketAddress localSocketAddr = new InetSocketAddress(localInetAddr, 0); socket.bind(localSocketAddr); InetSocketAddress endpointSocketAddr = new InetSocketAddress(remoteInetAddr, port); socket.connect(endpointSocketAddr, timeout); System.out.println("SUCCESS - connection established! Local: " + localInetAddr.getHostAddress() + " remote: " + remoteInetAddr.getHostAddress() + " port" + port); isReachable = true; } catch(IOException e) { System.out.println("FAILRE - CAN not connect! Local: " + localInetAddr.getHostAddress() + " remote: " + remoteInetAddr.getHostAddress() + " port" + port); } finally{ if(socket != null) { try{ socket.close(); } catch(IOException e) { System.out.println("Error occurred while closing socket.."); } } } return isReachable; } 运行结果 --------------START-------------- FAILRE - CAN not connect! Local: 127.0.0.1 remote: 10.8.1.50 port22 FAILRE - CAN not connect! Local: 9.123.231.40 remote: 10.8.1.50 port22 SUCCESS - connection established! Local: 10.0.50.189 remote: 10.8.1.50 port22 Reachable local IP is found, it is 10.0.50.189 --------------END-------------- 回页首IPv4 和 IPv6 混合网络下编程当网络环境中存在 IPv4 和 IPv6,即机器既有 IPv4 地址,又有 IPv6 地址的时候,我们可以对程序进行一些优化,比如 由于IPv4 和 IPv6 地址之间是无法互相访问的,因此仅需要判断 IPv4 地址之间和 IPv6 地址之间的可达性。 对于IPv4 的换回地址可以不做判断,对于 IPv6 的 Linklocal 地址也可以跳过测试 根据实际的需要,我们可以优先考虑选择使用 IPv4 或者 IPv6,提高判断的效率程序清单 3: 判断本地地址和远程地址是否同为 IPv4 或者 IPv6 // 判断是 IPv4 还是 IPv6 if(!((localInetAddr instanceofInet4Address) (remoteInetAddr instanceofInet4Address) || (localInetAddr instanceofInet6Address) (remoteInetAddr instanceofInet6Address))){ // 本地和远程不是同时是 IPv4 或者 IPv6,跳过这种情况,不作检测 break; } 程序清单 4:跳过本地地址和 LinkLocal 地址 if( localAddr.isLoopbackAddress() || localAddr.isAnyLocalAddress() || localAddr.isLinkLocalAddress() ){ // 地址为本地环回地址,跳过 break; } 回页首总结和展望本文列举集中典型的场景,介绍了通过 Java 网络编程接口判断机器之间可达性的几种方式。在实际应用中,可以根据不同的需要选择相应的方法稍加修改即可。对于更加特殊的需求,还可以考虑通过 JNI 的方法直接调用系统 API 来实现,能提供更加强大和灵活的功能,这里就不再赘述了。参考资料 学习 参考developerWorks 的文章 Java 应用程序的网络运行环境编程,获取更多网络编程相关的信息。 如果要通过 JNI 进行网络编程,可以参考 developerWorks 上的文章 用JNI 进行 Java 编程,了解更多 JNI 相关的信息和例子。 参考Javadoc 获取更多关于 Java 网络编程的 API 的信息。 developerWorks Java 技术专区:这里有数百篇关于 Java 编程各个方面的文章。 讨论加入developerWorks 中文社区。查看开发人员推动的博客、论坛、组和维基,并与其他 developerWorks 用户交流。 作者简介吴校军,IBM CSTL 软件工程师,长期从事 IBM 系统管理相关软件的开发,目前负责 Director6.1 Update Manager 的开发。刘冠群现为 IBM 上海系统科技开发中心(CSTL)的软件工程师,有多年的 Java 和 C++ 编程经验,对于操作系统,网络和编程语言的内部实现有强烈兴趣。关闭[x]关于报告滥用的帮助报告滥用谢谢! 此内容已经标识给管理员注意。关闭[x]关于报告滥用的帮助报告滥用报告滥用提交失败。 请稍后重试。关闭[x]developerWorks:登录IBM ID:需要一个 IBM ID?忘记IBM ID?密码:忘记密码?更改您的密码 保持登录。单击提交则表示您同意developerWorks 的条款和条件。 使用条款 当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。所有提交的信息确保安全。关闭[x]请选择您的昵称:当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。昵称:(长度在 3 至 31 个字符之间)单击提交则表示您同意developerWorks 的条款和条件。 使用条款. 所有提交的信息确保安全。为本文评分评论回页首

北大青鸟设计培训:五个方法让你做更好的java单元测试?

单元测试是我们在软件开发过程中经常用到的一种软件测试的方法,而今天我们就一起来了解一下,一个好的单元测试都是如何来编辑完成的。

1.使用框架来用于单元测试Java提供了若干用于单元测试的框架。

TestNG和JUnit是流行的测试框架。

JUnit和TestNG的一些重要功能:易于设置和运行。

支持注释。

允许忽略或分组并一起执行某些测试。

支持参数化测试,即通过在运行时指定不同的值来运行单元测试。

通过与构建工具,如Ant,Maven和Gradle集成来支持自动化的测试执行。

EasyMock是一个模拟框架,是单元测试框架,如JUnit和TestNG的补充。

EasyMock本身不是一个完整的框架。

它只是添加了创建模拟对象以便于测试的能力。

例如,我们想要测试的一个方法可以调用从数据库获取数据的DAO类。

在这种情况下,EasyMock可用于创建返回硬编码数据的MockDAO。

这使我们能够轻松地测试我们意向的方法,而不必担心数据库访问。

2.谨慎使用测试驱动开发!测试驱动开发(TDD)是一个软件开发过程,在这过程中,在开始任何编码之前,我们基于需求来编写测试。

由于还没有编码,测试初会失败。

然后写入小量的代码以通过测试。

然后重构代码,直到被优化。

目标是编写覆盖所有需求的测试,而不是一开始就写代码,却可能甚至都不能满足需求。

TDD是伟大的,因为它导致简单的模块化代码,且易于维护。

总体开发速度加快,容易发现缺陷。

此外,单元测试被创建作为TDD方法的副产品。

然而,TDD可能不适合所有的情况。

在设计复杂的项目中,专注于简单的设计以便于通过测试用例,而不提前思考可能会导致巨大的代码更改。

此外,TDD方法难以用于与遗留系统,GUI应用程序或与数据库一起工作的应用程序交互的系统。

另外,测试需要随着代码的改变而更新。

因此,在决定采用TDD方法之前,应考虑上述因素,并应根据项目的性质采取措施。

3.测量代码覆盖率代码覆盖率衡量(以百分比表示)了在运行单元测试时执行的代码量。

通常,高覆盖率的代码包含未检测到的错误的几率要低,因为其更多的源代码在测试过程中被执行。

兰州电脑培训发现测量代码覆盖率的一些佳做法包括:使用代码覆盖工具,如Clover,Corbetura,JaCoCo或Sonar。

使用工具可以提高测试质量,因为这些工具可以指出未经测试的代码区域,让你能够开发开发额外的测试来覆盖这些领域。

学了java开发可以做测试的工作吗

学了java开发可以做测试的工作,初级测试没有那么多说法, 一般就是做功能性的测试。学习java开发推荐千锋教育。千锋教研业务范围覆盖企业与高校领域,为国内数百所高等院校提供一站式解决方案。

Java技术不仅是面向对象的高级编程语言,也是一个平台。Java技术基于Java虚拟机的概念(Javavirtualmachine,JVM)——这是一个转换器,在语言和基础软件和硬件之间。Java语言的所有实现都必须实现JVM,这样Java程序才能在任何有JVM的系统上运行,这是Java的核心优势。Java在设计中非常注重移植和跨平台,这也是Java应用范围广的一个重要原因。

想要了解更多java开发的相关信息,推荐咨询千锋教育。千锋励精图治,不改教育初心。十一年来,千锋以政策为引导,不断完善国内特色现代职业教育体系建设,充分发挥教研师资队伍使命,构建品质教育,加大创新型人才培养力度,为经济发展提供智力人才和智力支撑,成为新时期职业教育发展的新方向,在同行业中有很高的美誉度。

北大青鸟java培训:学Java软件测试应该掌握什么呢?

在软件的相关应用中,开发跟测试的名气,当下还是软件开发比较响亮,很多人认为软件测试包括在软件开发中。

其实这是个错误的认识,这也反应出一个问题,之前人们比较重视软件开发,软件测试方面的力度是不太够的,Java软件测试是做什么的?你知道吗?今天就跟广东IT培训一起来关注下。

Java软件测试是做什么的?近年来,软件测试行业发展迅速,企业越来越重视测试了。

越来越多的人加入了Java软件测试大军中,你了解Java软件测试吗?你知道Java软件测试应该学什么吗?Java软件测试简而言之,就是查漏补缺,让开发出的东西,更加的完美。

学Java软件测试应该掌握什么呢?掌握Java软件测试的基本概念、Java软件测试的流程,并能熟练的应用常见的用例设计方法来设计测试用例。

掌握常见的测试方法和类型,并知道如何进行每个阶段的测试等等,Java软件测试也是一门需要你用心学习的内容。

来看看一家公司关于Java软件测试岗位要求:1.初步了解软件测试的基础理论;2.积极主动、踏实严谨、勤奋好学,热爱测试工作;3.简单了解oracle/mysql/sqlserver/JAVA/软件测试/白盒测试/黑盒测试/性能测试/自动化测试/游戏测试任意编程与测试者皆可。

学习 java开发后能否进行软件测试?反之可行吗?希望能聚具体分析一下。

学习 java开发后可以进行初期的软件测试,做测试人必须有一定的洞察力和细腻的心,反之不一定,就是做软件测试的就不一定会做 java开发,因为软件测试基本上测试的就是边界条件,一般都有测试文档, 只要照上面的要求进行测试基本上就没有什么问题,但是 java开发不仅要求有一定的语言素质,还要有一定的创新意识,学习 java开发推荐千锋教育,千锋教育师资力量强大,教学方式优质,值得信赖!

学习java的方法:

1、多看书:多下载一些java相关的资料,多看多打代码,然后思考总结,书读百遍,其义自现。

2、多交流:建议大家多加相关学习交流群,与里面的同学多交流互动,勤于回答问题。

3、多实践:对于一个新手,最重要的莫过于动手了。

4、不急躁:每当遇到任何问题不要心烦气躁,而这时候就务必细心、耐心地去解决问题。

想要了解更多前端培训的相关信息,推荐咨询千锋教育。千锋企合作部整合大量企业客户资源,紧抓当下企业需求,将技术和项目完美结合千锋课程体系,力求培养更多优质人才服务企业,不断提升学员竞争力,链接企业用人标准的培训课程及实战项目,让企业招聘用人的技术要求与千锋学员的技术充分对接。近年来不断引进阿里钉钉小程序技术、红帽认证、腾讯云、亚马逊等,通过与企业的深度融合实现千锋教研和就业服务的迭代升级,专业性值得信赖。

java测试的类型是什么?它的联系与区别?

java测试的类型?

黑盒测试?白盒测试?灰盒测试?

白盒测试(White-box Testing,又称逻辑驱动测试,结构测试)是把测试对象看作一个打开的盒子。利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。白盒测试又称为结构测试和逻辑驱动测试。

白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。

六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。语句覆盖每条语句至少执行一次。判定覆盖每个判定的每个分支至少执行一次。条件覆盖每个判定的每个条件应取到各种可能的值。判定/条件覆盖同时满足判定覆盖条件覆盖。条件组合覆盖每个判定中各条件的每一种组合至少出现一次。路径覆盖使程序中每一条可能的路径至少执行一次。

白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。

"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。

白盒测试目前主要用在具有高可靠性要求的软件领域,例如:军工软件、航天航空软件、工业控制软件等等。白盒测试工具在选购时应当主要是对开发语言的支持、代码覆盖的深度、嵌入式软件的测试、测试的可视化等。

对开发语言的支持:白盒测试工具是对源代码进行的测试,测试的主要内容包括词法分析与语法分析、静态错误分析、动态检测等。但是对于不同的开发语言,测试工具实现的方式和内容差别是较大的。目前测试工具主要支持的开发语言包括:标准C、C++、Visual C++、Java、Visual J++等。

代码的覆盖深度:从覆盖源程序语句的详尽程度分析,逻辑覆盖标准包括以下不同的覆盖标准:语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖、多条件覆盖和修正判定条件覆盖。

·语句覆盖 为了暴露程序中的错误,程序中的每条语句至少应该执行一次。因此语句覆盖(STatement Coverage)的含义是:选择足够多的测试数据,使被测程序中每条语句至少执行一次。语句覆盖是很弱的逻辑覆盖。

·判定覆盖 比语句覆盖稍强的覆盖标准是判定覆盖(DECision Coverage)。判定覆盖的含义是:设计足够的测试用例,使得程序中的每个判定至少都获得一次“真值”或“假值”,或者说使得程序中的每一个取“真”分支和取“假”分支至少经历一次,因此判定覆盖又称为分支覆盖。

·条件覆盖 在设计程序中,一个判定语句是由多个条件组合而成的复合判定。为了更彻底地实现逻辑覆盖,可以采用条件覆盖(ConDItion Coverage)的标准。条件覆盖的含义是:构造一组测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次。

·多条件覆盖 多条件覆盖也称条件组合覆盖,它的含义是:设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次。显然满足多条件覆盖的测试用例是一定满足判定覆盖、条件覆盖和条件判定组合覆盖的。

·修正条件判定覆盖 修正条件判定覆盖是由欧美的航空/航天制造厂商和使用单位联合制定的“航空运输和装备系统软件认证标准”,目前在国外的国防、航空航天领域应用广泛。这个覆盖度量需要足够的测试用例来确定各个条件能够影响到包含的判定的结果。它要求满足两个条件:首先,每一个程序模块的入口和出口点都要考虑至少要被调用一次,每个程序的判定到所有可能的结果值要至少转换一次;其次,程序的判定被分解为通过逻辑操作符(and、or)连接的布尔条件,每个条件对于判定的结果值是独立的。

黑盒测试

也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。 “黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。

采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。

黑盒测试注重于测试软件的功能性需求,也即黑盒测试使软件工程师派生出执行程序所有功能需求的输入条件。黑盒测试并不是白盒测试的替代品,而是用于辅助白盒测试发现其他类型的错误。

黑盒测试试图发现以下类型的错误:

1)功能错误或遗漏;

2)界面错误;

3)数据结构或外部数据库访问错误;

4)性能错误;

5)初始化和终止错误。

黑盒测试的优点

1. 基本上不用人管着,如果程序停止运行了一般就是被测试程序CRASh了

2. 设计完测试例之后,下来的工作就是爽了,当然更苦闷的是确定crash原因

黑盒测试的缺点

1. 结果取决于测试例的设计,测试例的设计部分来势来源于经验,OUSPG的东西很值得借鉴

2. 没有状态转换的概念,目前一些成功的例子基本上都是针对PDU来做的,还做不到针对被测试程序的状态转换来作

3. 就没有状态概念的测试来说,寻找和确定造成程序crash的测试例是个麻烦事情,必须把周围可能的测试例单独确认一遍。而就有状态的测试来说,就更麻烦了,尤其不是一个单独的tEStcase造成的问题。这些在堆的问题中表现的更为突出。

灰盒测试介于白盒测试与黑盒测试之间

java相关测试的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java测试技术、java相关测试的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-29,除非注明,否则均为首码项目网原创文章,转载请注明出处。