白盒测试的学习之路----(二)需求说明,编程

三角形的问题在很多软件测试的书籍中都出现过,问题虽小,五脏俱全,是个很不错的软件测试的教学例子。本文借助这个例子结合教学经验,从更高的视角来探讨需求分析、软件设计、软件开发与软件测试之间的关系与作用。

  题目:根据下面给出的三角形的需求完成程序并完成测试:

  一、输入条件:

  1、 条件1:a+b>c

  2、 条件2:a+c>b

  3、 条件3:b+c>a

  4、 条件4:0<a<200

  5、 条件5:0<b<200

  6、 条件6:0<c<200

  7、 条件7:a==b

  8、 条件8:a==c

  9、 条件9:b==c

  10、条件10:a2+b2==c2

  11、条件11:a2+ c2== b2

  12、条件12:c2+b2== a2

  二、输出结果:

  1、不能组成三角形

  2、等边三角形

  3、等腰三角形

  4、直角三角形

  5、一般三角形

  6、某些边不满足限制

需求的逻辑比较简单,三角形的三条边暂时就直接从程序中读入,不让用户输入(假设用户的输入都是整数的情况)。初步形成的代码如下:

package com.loleina.whiteTest;

public class TriangleP {

public static void main(String[] args) {
           int a, b,c;
          a=3;
          b=3;
          c=3;

if(a>0&&a<200&&b>0&&b<200&&c>0&&c<200)
{
      if(a+b>c&&a+c>b&&b+c>a)
{
     if(a*a+b*b==c*c||b*b+c*c==a*a||a*a+c*c==b*b)
{
     System.out.println(" 4、直角三角形");
}
    if(a==b&&a==c&b==c)
{
    System.out.println("2、等边三角形");
}
   if((a==b&&a!=c)||(a==c&&a!=b)||(b==c&&b!=a))
{
   System.out.println(" 3、等腰三角形");
}
   else {
   System.out.println(" 5、一般三角形");
}
} else
{
   System.out.println("1、不能组成三角形");
}
}else
{
  System.out.println("6、某些边不满足限制");
}
}
}

时间: 2024-08-07 08:40:05

白盒测试的学习之路----(二)需求说明,编程的相关文章

java痛苦学习之路[二] ---JSONObject使用

一.Strut2必须引入的包 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包: 1.commons-lang.jar 2.commons-beanutils.jar 3.commons-collections.jar 4.commons-logging.jar 5.ezmorph.jar 6.json-lib-2.2.2-jdk15.jar 当然除了这些包,strut2基础包也得引入 struts2-core-2.1.6.jar freemarker-2.

白盒测试的学习之路----(一)概述

白盒测试对于一般的测试人员来说,就是一道很难过去的坎,问题产生原因之一:是对程序代码本身的恐惧:问题产生原因之二:是测试人员的平均水准还没到这个地步,所以大家都望而止步.15年整整的一年,基于对java web 代码还有一些接口自动化项目的学习和研究,又学了c++的语法,我感觉自己略有了些许基础,应该在16时这之上再多学习,多总结下,故此开始在网上大量的搜索资料来学习白盒测试,部分的资料和教程还是给了我很大的启示,再结合自己之前项目编程的经验,就把白盒测试和接口测试,自动化测试做了个小整合,参考

zigbee学习之路(二):点亮LED

一.前言 今天,我来教大家如何点亮led,这也是学习开发板最基础的步骤了. 二.原理分析 cc2530芯片跟虽然是51的内核,但是它跟51单片机还是有区别的,51单片机不需要对IO口进行配置,而cc2530芯片却需要对IO口进行配置,才能对它进行赋值,需要配置的寄存器有PXSEL,PXDIR,PXINP,x可以代表任意IO口,如P1SEL. 下面介绍PXSEL的功能: 下面介绍PXDIR的功能: 下面介绍PXINP的功能: 通过配置以上寄存器的,就可以控制IO口德输入输出状态,是否做为普通IO口

学习之路二:关于集合和数组内在联系的深入了解

前一阵子有幸看到了abatei大牛的泛型系列文章,学习了两周左右,大概学会了50%左右,说实话挺难的,有兴趣的朋友可以去看看! http://www.cnblogs.com/abatei/archive/2008/02/20/1075760.html ,讲的真不错,很赞的文章! 在此记录下我的学习感受,欢迎拍砖! 文章主要讲的是关于List<T>和数组之间的联系! 1.集合和数组 数组:大家都知道数组必须指定大小,而且大小一但指定就不能更改了,也就是说数组不能动态的增加容量,那么对于一些需要动

Android开发学习之路-二维码学习

这个月装逼有点少了,为什么呢,因为去考软件射鸡师了,快到儿童节了,赶紧写篇博纪念一下逝去的青春,唔,请忽略这句话. 二维码其实有很多种,但是我们常见的微信使用的是一种叫做QRCode的二维码,像下面这样的,可以放心的扫,这只是我的博客主页链接啦: 关于QR码编码的二维码,我们要知道几个特点: 1. 扫描时可以从各个角度去扫,也就是旋转多少度都没关系,不信吗?下次去肯德基买单试试咯. 2. 二维码有容错率,容错率越大,生成的二维码也就越复杂,但是越不容易出错,并且,当二维码被遮挡的时候也越容易扫描

Python学习之路二

今天主要学习了列表,python的列表真的事太强大了,由于内容比较多,今天就先简单的介绍一下新学的几个成员函数吧. 首先我们要了解list是一种序列类型,其构造方式有四种形式: (1)空列表 [] (2)直接添加元素 [a] [a,b,c] (3)使用列表解析 [x for x in iterable] (4)使用构造函数 list() or list(iterable) 成员函数: append() 在末尾添加一个元素 extend() 以列表的形式在末尾添加 insert() 两个参数,第一

react.js学习之路二

看react.js对我来说真的不是难不难的问题,问题是我的思路太难转变了,真是坑死我了,react里面的坑也很多.算了,这些抱怨没啥用,记录一下今天学习的内容. 今天看了to-do-list经典示例 总结起来可以概括为 1.首先划分组件:父组件--子组件 2.显示数据:创建初始数据,并将数据显示到页面上 3.创建函数:①:添加函数,输入框中输入数据,显示到页面上 ②:删除函数,点击删除按钮,将该条数据删除 代码有很多,一会给一个链接,自己看就行,没必要我重新复制 其中踩过的坑: 1. 首先就是版

linux学习之路二 ------登陆篇

上一篇中讲了如何搭建虚拟机学习平台,在这篇中将介绍如何登陆Linux系统和修改超级用户密码 1.打开虚拟机后,进入界面,需要让我们输入账号密码,在前面安装的时候我们设置过.如图 2.输入账号密码,输入密码的时候是不显示的,所以不要认为没有输入.如图 3.验证成功之后,出现[[email protected] ~]$ ,则说明登陆成功,Linux系统有超级用户和普通用户之分,超级用户也就是root用户了,如我们的就是普通用户, 普通用户[[email protected] ~]$中$就是代表了普通

白盒测试的学习之路----(四)搭建测试框架TestNG测试

TestNG是一个开源自动化测试框架; TestNG是类似于JUnit,但它不是一个JUnit扩展.它的灵感来源于JUnit.它的目的是优于JUnit的,尤其是当测试集成的类. TestNG消除了大部分的旧框架的限制,使开发人员能够编写更加灵活和强大的测试. 因为它在很大程度上借鉴了Java注解(JDK5.0引入的)来定义的测试,它也可以告诉你如何使用这个新功能在真实的Java语言生产环境中.一般开发使用的是JUnit做单元测试,而测试一般都是勇士TestNG. 首先,就是下载相关jar包(te