1. 程式人生 > >【軟體測試】功能性測試方法(決策

【軟體測試】功能性測試方法(決策

題目

前一日函式 Pre Date 是 NextDate的逆函式,即給定一 個月份、日期、年,會返回前一天的日期。

年的取值在1812年到2017年。 

日的取值 在 1日到 31 日之間。 

月的取值 在 1到 12 月之間

測試程式實現

package test2;
import java.util.*;
public class Date {
	public static void main(String[] args)
	{
		int day=0,preday = 0,month = 0,premonth = 0, year = 0,preyear = 0,flag = 0,right = 0;
		while(right==0)
		{//提示從鍵盤輸入年月日
			System.out.println("Input year:");
			Scanner sc = new Scanner(System.in);
			year = sc.nextInt();
			System.out.println("Input month:");
			Scanner sc1 = new Scanner(System.in);
			month = sc1.nextInt();
			System.out.println("Input day:");
			Scanner sc2 = new Scanner(System.in);
			day = sc2.nextInt();
			if(year<=2017&&year>=1812)//判斷是否在合法年份內
			{
				if((year%4==0&&year%100!=0)||year%400==0)//判斷閏年
				{
				     flag=1;
				}
				if(month==1){
					if(day<=31&&day>=1)
					{
						right=1;	
					}
					if(day==1){//判斷一月的臨界情況
					preyear=year-1;
					premonth=12;
					preday=31;
					}
					else{
						preyear=year;
						premonth=month;
						preday=day-1;
					}
					}
				if(month==2){
					if(flag==1&&(day<=29&&day>=1)||flag==0&&(day<=28&&day>=1))
					{
						right=1;	
					}
					if(day==1){//判斷二月的臨界情況
					preyear=year;
					premonth=1;
					preday=31;
					}
					else{
						preyear=year;
						premonth=month;
						preday=day-1;
					}
					}
				if(month==3){
					if(day<=31&&day>=1)
					{
						right=1;	
					}
					if(day==1&&flag==1){//當年為閏年時臨界情況
					preyear=year;
					premonth=month-1;
					preday=29;
					}
					else{
					if(day==1&&flag==0){//當年為平年的臨界情況
					preyear=year;
					premonth=2;
					preday=28;
					}
					else{
						preyear=year;
						premonth=month;
						preday=day-1;
					}
					}
				}
				if(month==4||month==6||month==9||month==11){//非特殊月份前一月為31天且當月為30天的月份
					if(day<=30&&day>=1)
					{
						right=1;
					}
					if(day==1){
					preyear=year;
					premonth=month-1;
					preday=31;
					}
					else{
						preyear=year;
						premonth=month;
						preday=day-1;
					}
				}
				if(month==5||month==7||month==10||month==12){//非特殊月份前一月為30天且當月為31天的月份
					if(day<=31&&day>=1)
					{
						right=1;	
					}
					if(day==1){
					preyear=year;
					premonth=month-1;
					preday=30;
					}
					else{
						preyear=year;
						premonth=month;
						preday=day-1;
					}
				}
				if(month==8){//八月為特殊月份,當月和前一月均為31天,單獨判斷該月份
					if(day<=31&&day>=1)
					{
						right=1;
					}
					if(day==1){
					preyear=year;
					premonth=month-1;
					preday=31;
					}
					else{
						preyear=year;
						premonth=month;
						preday=day-1;
					}
				}
				
		}
			 if(right==0)//輸入出錯,提示重新輸入
				    System.out.println("input error, please input again!");
				}

				System.out.println("the predate is "+preyear+"——"+premonth+"——"+preday);

				}
}

決策表

Y1={年:年是閏年}

Y2={年:年不是閏年}

M1={月:此月是1月}

M2={月:此月是2月}

M3={月:此月是3月}

M4={月:此月是8月}

M5={月:此月前一月有30天}

M6={月:此月前一月有31天,一月和十二月除外}

D1={日:日期=1}

D2={日:日期不等於1}

1

2

3

4

5

6

7

8

9

c1:月

M1

M1

M2

M2

M2

M3

M3

M3

M4

c2:日

D1

D2

D1

D2

D2

D1

D1

D2

D1

c3:年

-

-

-

Y1

Y2

Y1

Y2

行為:

a1:不可能

a2:日期減1

X

X

X

X

a3:日期復位

X

X

X

X

X

a4:月份減1

X

X

X

X

a5:月份復位

X

A6:年減1

X

10

11

12

13

14

c1:月

M4

M5

M5

M6

M6

c2:日

D2

D1

D2

D1

D2

c3:年

-

-

-

-

行為

a1:不可能

a2:日期減1

X

X

X

a3:日期復位

X

X

a4:月份減1

X

X

a5:月份復位

A6:年減1

測試結果

用例ID

輸入資料

預期輸出

實際輸出

是否通過

備註

1

2016 1 1

2015 12 31

2015——12——31

2

2016 1 2

2016 1 1

2016——1——1

3

2016 2 1

2016 1 31

2016——1——1

4

2016 2 2

2016 2 1

2016——2——1

5

2017 2 2

2017 2 1

2017——2——1

6

2016 3 1

2016 2 29

2016——2——29

7

2017 3 1

2017 2 28

2017——2——28

8

2016 3 2

2016 3 1

2016——3——1

9

2017 8 1

2017 7 31

2017——7——31

10

2017 8 2

2017 8 1

2017——8——1

11

2017 2 29

輸入無效

input error, please input again!

12

1900 2 29

輸入無效

input error, please input again!

13

2018 13 1

輸入無效

input error, please input again!


相關推薦

軟體測試功能性測試方法(決策

題目前一日函式 Pre Date 是 NextDate的逆函式,即給定一 個月份、日期、年,會返回前一天的日期。年的取值在1812年到2017年。 日的取值 在 1日到 31 日之間。 月的取值 在 1到 12 月之間測試程式實現package test2; import j

軟體測試功能性測試方法(黑盒測試

題目對電話賬單來說,春季和秋季的標準時間與夏時制時間的轉換會帶來有意思的問題。春 季,這種轉換髮生在(3 月末,4 月初的)星期日凌晨 2:00 時,這時時鐘要設定為凌晨 3: 00 時。對稱的轉換通常發生在 10 月最後一個星期日,時鐘要從 2:59:59 調回到 2:00

軟體工程軟體測試

前言 軟體測試,相當於建築立面的監工,監工要比干活的知識面要廣。 一、(一)軟體測試的內容 軟體測試不光是測試我們程式設計師所編寫的軟體,還有我們寫的文件,程式的介面,執行的環境等。 (二)軟體測試的目的 1、軟體測試是程式的執行過程,目的在於發現錯誤 2、好的測試用例是

軟體測試介面測試的簡介

1.介面測試的背景 1.1    什麼是介面測試 介面測試是測試系統元件間介面的一種測試。介面測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的互動點。測試的重點是要檢查資料的交換,傳遞和控制管理過 程,以及系統間的相互邏輯依賴關係等。 1.2   為什麼要做

親測Appium測試Android混合應用時,第二次切換到WebView失敗

源碼 drivers asc 切換 ole setup client module already 要解決的問題:Appium測試Android混合應用時,第二次切換到WebView時失敗 原因分析:在用Appium測試Android混合應用時,當程序第一次切換到WebV

星雲測試開發者測試(3)-採用精準測試工具對springcloud微服務應用進行穿透測試

1、微服務簡介   微服務英文名稱Microservice,Microservice架構模式就是將整個Web應用組織為一系列小的Web服務。這些小的Web服務可以獨立地編譯及部署,並通過各自暴露的API介面相互通訊。它們彼此相互協作,作為一個整體為使用者提供功能,卻可以獨立地執行。 2、Sp

星雲測試開發者測試(2)-採用精準測試工具對J2EE Guns開發框架進行測試

配置測試Guns  Guns簡介      Guns是一個近幾年來基於SpringBoot的開源便利且較新的JavaEE專案開發框架,它整合了springmvc + shiro + mybatis-plus + beetl + flowable多項開源技術,致力於讓Java後臺開發更簡潔快速

星雲測試開發者測試-採用精準測試工具對Spring Boot應用進行測試

簡介:本文主要介紹把現今主流的springboot框架專案和精準測試工具進行結合和應用,通過精準測試的資料穿透、資料採集、測試用例與程式碼的雙向追溯、資料分析等一系列精準測試的特有功能,達到對專案質量的保證。   本次環境搭建分為基礎環境準備、springboot環境搭建、精準測試環境搭建、精準

介面測試介面測試學習之資料總結

一、什麼是介面? 應用程式介面(Application Programming Interface,簡稱:API),又稱為應用程式設計介面。通俗講就是HTTP請求。   二、介面型別 介面一般分為兩種: 1、程式內部的介面 2、系統對外的介面 &

星雲測試開發者測試(4)-采用精準測試工具對dubbo微服務應用進行測試

星雲測試 term 重命名 text gen 計算方法 url 生產者和消費者 local 簡介:本文主要目的是把現今主流的Dubbo框架項目和精準測試進行對接,通過精準測試的數據穿透、數據采集、測試用例與代碼的雙向追溯、數據分析等一系列精準測試的特有功能達到對項目質量的保

劉文彬原始碼解讀EOS測試外掛:txn_test_gen_plugin.cpp

原文連結:醒者呆的部落格園,https://www.cnblogs.com/Evsward/p/txn_test_gen_plugin.html 本文內容本屬於《【精解】EOS TPS 多維實測》的內容,但由於在編寫時篇幅過長,所以我決定將這一部分單獨成文撰寫,以便於理解。

專欄目錄[ 介面測試工具篇 ] 目錄

一、介面抓包工具 (1)fiddler ①【fiddler】fiddler的下載和安裝 ②【fiddler】fiddler配置:HTTPS或手機APP介面資料的抓包配置步驟 ③【fiddler】fiddler設定:設定HTTPS勾選了Decrypt HTTPS traffic時出

TP5.1單元測試

author:咔咔 wechat:fangkangfk 建立test模組 並寫index控制器 原始碼: <?php namespace app\test\contr

已解決面試測試崗位遇到的幾個未解決的問題

本來可以問面試官的,面的太差,不想開口啦,哈哈哈哈 1. api介面中的冪等性有什麼解決方案? 冪等性三個字平常倒是聽說過,但只浮於表面聽過而已,是什麼意思,不清楚; 百度給出但解釋是: 抄用一段數學上的定義:f(f(x)) = f(x)。x被函式f作用一次和作用無限次的結果是一樣的。冪等性應用在軟體系統中

測試Jmeter測試CPU、I/O等伺服器效能

安裝配置Jmeter        PS:        個人環境是Windows,伺服器環境是Linux,故需要在個人環境和伺服器環境分別安裝Jmeter:        通過伺服器環境的Jmete

軟體工程三、軟體開發方法學——結構化分析方法

首先回顧一下軟體開發方法學在整個軟體開發過程中的位置: 結構化方法 一種系統化的軟體開發方法,包括: 結構化分析方法——需求 結構化設計方法——設計 結構化程式設計方法——coding 一、 結構化分析方法 目的是為了給出問題的模型。

原始碼解讀EOS測試外掛:txn_test_gen_plugin.cpp

本文內容本屬於《【精解】EOS TPS 多維實測》的內容,但由於在編寫時篇幅過長,所以我決定將這一部分單獨成文撰寫,以便於理解。 關鍵字:eos, txn_test_gen_plugin, signed_transaction, ordered_action_resu

開發工具壓力測試:2、Jmeter的安裝使用(TCP測試

一、工具介紹         Apache JMeter是Apache組織開發的基於Java的壓力測試工具,用於對軟體做壓力測試,它最初被設計用於Web應用測試但後來擴充套件到其他測試領域。 它可以用於測試靜態和動態資源例如靜態檔案、Java小服務程式

QAComplete教程建立測試測試

QAComplete為您的測試用例提供集中式的管理,讓您可以跨版本檢視自己的測試和操作缺陷,告別複雜的測試管理。本文旨在介紹在QAComplete中建立測試和測試集,供大家學習交流。 在QAComplete中,使用測試來確保完全覆蓋需求。將測試儲存在測試庫中並將它們組織到測試集中,以便以一致的邏

高併發壓力測試 java.io.IOException: Too many open files解決方案

 對作業系統做相關的設定,增加最大檔案控制代碼數量。Linux在Linux核心2.4.x中需要修改原始碼,然後重新編譯核心才生效。編輯Linux核心原始碼中的 include/linux/fs.h檔案,將 NR_FILE 由8192改為65536,將NR_RESERVED_FILES 由10 改為 128。編