软件测试技术 实验一:黑盒测试1

这篇具有很好参考价值的文章主要介绍了软件测试技术 实验一:黑盒测试1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实验一 实验报告

小组成员

小组成员 结对测试组成员

实验目的

能熟练应用黑盒测试技术进行测试用例设计,能对测试用例进行优化设计。

实验内容

“隔一天问题”程序要求如下:输入为年、月、日三个变量,输出为输入的隔一天后的年、月、日。例如,输入为2001年2月10日,则输出为2001年2月12日;输入为2000年2月29日,则输出为2000年3月2日等。输入年份要求在1922-2030之间。

程序的主要算法

关键代码
//将string转为char数组并判断输入是否为正整数
int checkNum(string s) {
	int flag = 1;
	for (int i = 0; i < s.length(); i++) {
		if ((int)s[i] < 48 || (int)s[i] > 57) {
			flag = 0;
			break;
		}
	}
	return flag;
}
//获取用户输入
	string n0;
	int year = 0, month = 0, day = 0, isLeap = 0;
	cout << "请输入年月日" << endl;
	cout << "年:";
	//判断输入的n0是否符合要求
	while (year < 1922 || year > 2030) {
		cin >> n0;
		//判断输入的n0是否符合要求
		while (!checkNum(n0)) {
			cout << "Year取值无效\n请输入正整数,不要输入负数或者小数或字母:" ;
			cin >> n0;
		}
		year = s2i(n0);//string转为int存储 
		if (year < 1922 || year > 2030) {
			cout << "Year取值无效\n请输入1922到2030之间的数字:";
		}
	}
	year = s2i(n0);//string转为int存储 
	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) isLeap = 1;
	cout << "月:";
	while (month < 1 || month>12) {
		cin >> n0;
		//判断输入的n0是否符合要求
		while (!checkNum(n0)) {
			cout << "Month取值无效\n请输入正整数,不要输入负数或者小数或字母:" ;
			cin >> n0;
		}
		month = s2i(n0);//string转为int存储 
		if (month < 1 || month>12) {
			cout << "Month取值无效\n请输入1到12之间的数字:" ;
		}
	}
	cout << "日:";
	if (month == 1 || month == 3 || month == 7 || month == 8 || month == 10 || month == 12) {//大月
		while (day < 1 || day > 31) {
			cin >> n0;
			//判断输入的n0是否符合要求
			while (!checkNum(n0)) {
				cout << "Day取值无效\n请输入正整数,不要输入负数或者小数或字母:" ;
				cin >> n0;
			}
			day = s2i(n0);//string转为int存储 
			if (day < 1 || day > 31) {
				cout << "Day取值无效\n请输入1到31之间的整数:";
			}
		}
	}
	else if (month == 4 || month == 5 || month == 6 || month == 9 || month == 11) {//小月
		while (day < 1 || day > 30) {
			cin >> n0;
			//判断输入的n0是否符合要求
			while (!checkNum(n0)) {
				cout << "Day取值无效\n请输入正整数,不要输入负数或者小数或字母:";
				cin >> n0;
			}
			day = s2i(n0);//string转为int存储 
			if (day < 1 || day > 30) {
				cout << "Day取值无效\n请输入1到30之间的整数:" << endl;
			}
		}
	}
	else if (month == 2 && isLeap) {//闰年2月
		while (day < 1 || day > 29) {
			cin >> n0;
			//判断输入的n0是否符合要求
			while (!checkNum(n0)) {
				cout << "Day取值无效\n请输入正整数,不要输入负数或者小数或字母:";
				cin >> n0;
			}
			day = s2i(n0);//string转为int存储 
			if (day < 1 || day > 29) {
				cout << "Day取值无效\n请输入1到29之间的整数:";
			}
		}
	}
	else {//平年二月
		while (day < 1 || day > 28) {
			cin >> n0;
			//判断输入的n0是否符合要求
			while (!checkNum(n0)) {
				cout << "Day取值无效\n请输入正整数,不要输入负数或者小数或字母:";
				cin >> n0;
			}
			day = s2i(n0);//string转为int存储 
			if (day < 1 || day > 28) {
				cout << "Day取值无效\n请输入1到28之间的整数:";
			}
		}
	}
//根据合理范围的年月日得到输出
void Solution(int year, int month, int day, int isLeap) {
	int nYear = 0, nMonth = 0, nDay = 0;
	if (month == 1 || month == 3 || month == 5 || month == 8 || month == 10) {//大月
		nYear = year;
		if (day == 30 || day == 31) {
			nMonth = month + 1;
			if (day == 30) nDay = 1;
			else nDay = 2;
		}
		else {
			nMonth = month;
			nDay = day + 2;
		}
	}
	else if (month == 4 || month == 6 || month == 9 || month == 11) {//小月
		nYear = year;
		if (day == 29 || day == 30) {
			nMonth = month + 1;
			if (day == 29) nDay = 1;
			else nDay = 2;
		}
		else {
			nMonth = month;
			nDay = day + 2;
		}
	}
	else if (month == 2 && isLeap) {//闰年2月
		nYear = year;
		if (day == 28 || day == 29) {
			nMonth = month + 1;
			if (day == 28) nDay = 1;
			else nDay = 2;
		}
		else {
			nMonth = month;
			nDay = day + 2;
		}
	}
	else if (month == 2 && !isLeap) {//平年2月
		nYear = year;
		if (day == 27 || day == 28) {
			nMonth = month + 1;
			if (day == 27) nDay = 1;
			else nDay = 2;
		}
		else {
			nMonth = month;
			nDay = day + 2;
		}
	}
	else {//12月
		if (day == 30 || day == 31) {
			nYear = year + 1;
			nMonth = 1;
			if (day == 30) nDay = 1;
			else nDay = 2;
		}
		else {
			nYear = year;
			nMonth = month;
			nDay = day + 2;
		}
	}
	cout << "隔一天的年月日为:" << nYear << "-" << nMonth << "-" << nDay << endl;
}
流程图
输入检测
计算结果

测试用例

弱健壮等价类
等价类划分
输入
Y1:非数字 M1:非数字 D1:非数字
Y2:整数 x<1922 M2:负整数和零 D2:负整数和零
Y3:整数 x>2030 M3:小数 D3:小数
Y5:小数 M4:2 D4:1~26
Y6:闰年 M5:12 D5:27
Y7:平年 M6:month有31天,不包括12月(1 3 5 7 8 10) D6:28
M7:month有30天(4 6 9 11) D7:29
D8:30
D9:31
弱一般等价类测试用例规则

WR16 = {M6, {D4, D5, D6, D7}, {Y6, Y7}}

WR17 = {M6, D8, {Y6, Y7}}

WR18 = {M6, D9, {Y6, Y7}}

WR19 = {M7, {D4, D5, D6}, {Y6, Y7}}

WR20 = {M7, {D7}, {Y6, Y7}}

WR21 = {M7, {D8}, {Y6, Y7}}

WR22 = {M4, {D4, D5}, {Y6}}

WR23 = {M4, {D6}, {Y6}}

WR24 = {M4, {D7}, {Y6}}

WR25 = {M4, {D4}, {Y7}}

WR26 = {M4, {D5}, {Y7}}

WR27 = {M4, {D6}, {Y7}}

WR28 = {M5, {D4, D5, D6, D7}, {Y6, Y7}}

WR29 = {M5, {D8}, {Y6, Y7}}

WR30 = {M5, {D9}, {Y6, Y7}}

弱健壮等价类测试用例
用例号 year month day 预期输出
WR1 2000 -1 12 Month取值无效
WR2 2000 2.5 12 Month取值无效
WR3 2000 @ 12 Month取值无效
WR4 2000 50 12 Month取值无效
WR5 2000 6 -1 Day取值无效
WR6 2000 6 2.5 Day取值无效
WR7 2000 6 @ Day取值无效
WR8 2000 6 50 Day取值无效
WR9 2000 2 30 Day取值无效
WR10 2001 2 29 Day取值无效
WR11 2000 4 31 Day取值无效
WR12 -1 6 12 Year取值无效
WR13 2.5 6 12 Year取值无效
WR14 @ 6 12 Year取值无效
WR15 5000 6 12 Year取值无效
WR16 2000 7 29 2000-7-31
WR17 2000 7 30 2000-8-1
WR18 2000 7 31 2000-8-2
WR19 2000 6 28 2000-6-30
WR20 2000 6 29 2000-7-1
WR21 2000 6 30 2000-7-2
WR22 2000 2 27 2000-2-29
WR23 2000 2 28 2000-3-1
WR24 2000 2 29 2000-3-2
WR25 2001 2 26 2001-2-28
WR26 2001 2 27 2001-3-1
WR27 2001 2 28 2001-3-2
WR28 2000 12 29 2000-12-31
WR29 2000 12 30 2001-1-1
WR30 2000 12 31 2001-1-2
弱健壮等价类测试结果
边界值分析法

使用边界值分析法设计该问题的测试用例,并检验测试结果。此处采取五点取样法。在year、month、day的有效值范围两侧分别取样,其他两项取有效值进行测试。WN19为三项均取有效值,作为对照组。

边界值分析法测试用例
year month day 预期输出
WN1 1921 6 15 Year取值无效
WN2 1922 6 15 1922-6-17
WN3 1923 6 15 1923-6-17
WN4 2029 6 15 2029-6-17
WN5 2030 6 15 2030-6-17
WN6 2031 6 15 Year取值无效
WN7 2000 0 15 Month取值无效
WN8 2000 1 15 2000-1-17
WN9 2000 2 15 2000-2-17
WN10 2000 11 15 2000-11-17
WN11 2000 12 15 2000-12-17
WN12 2000 13 15 Month取值无效
WN13 2000 7 0 Day取值无效
WN14 2000 7 1 2000-7-3
WN15 2000 7 2 2000-7-4
WN16 2000 7 30 2000-8-1
WN17 2000 7 31 2000-8-2
WN18 2000 7 32 Day取值无效
WN19 2000 6 15 2000-6-17
边界值分析法测试结果
判定表测试方法
判定桩划分

M1 = {1,3,5,7,8,10} M2 = {4,6,9,11} M3 = {2} M4 = {12}

Y1 = {1922到2030间的所有闰年} Y2 = {1922到2030间的所有平年}

D1 = {1,2,…,26} D2 = {27} D3 = {28} D4 = {29} D5 = {30} D6 = {31}

判定表
条件 情况1 情况2 情况3 情况4 情况5 情况6 情况7 情况8 情况9 情况10 情况11 情况12 情况13 情况14 情况15
c1:Month是否属于M1 Y Y Y N N N N N N N N N N N N
c2:Month是否属于M2 N N N Y Y Y N N N N N N N N N
c3:Month是否属于M3 N N N N N N Y Y Y Y Y Y N N N
c4:Month是否属于M4 N N N N N N N N N N N N Y Y Y
c5:Year是否属于Y1 - - - - - - Y Y Y N N N - - -
c6:Year是否属于Y2 - - - - - - N N N Y Y Y - - -
c7:Day是否属于D1 - N N - - - - N N Y N N - N N
c8:Day是否属于D2 - N N - - - - N N N Y N - N N
c9:Day是否属于D3 - N N - - - N Y N N N Y - N N
c10:Day是否属于D4 - N N N Y N N N Y N N N - N N
c11:Day是否属于D5 N Y N N N Y N N N N N N N Y N
c12:Day是否属于D6 N N Y N N N N N N N N N N N Y
动作
a1:Year不变 Month不变 Day+2
a2:Year不变 Month+1 Day=1
a3:Year不变 Month+1 Day=2
a4:Year+1 Month=1 Day=1
a5:Year+1 Month=1 Day=2
判定表测试方法测试用例
情况 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
测试用例 2000-7-10 2000-7-30 2000-7-31 2000-6-10 2000-6-29 2000-6-30 2000-2-10 2000-2-28 2000-2-29 2001-2-10 2001-2-27 2001-2-28 2000-12-10 2000-12-30 2000-12-31
预期输出 2000-7-12 2000-8-1 2000-8-2 2000-6-12 2000-7-1 2000-7-2 2000-2-12 2000-3-1 2000-3-2 2001-2-12 2001-3-1 2001-3-2 2000-12-12 2001-1-1 2001-1-2
判定表测试方法测试结果

对所测试组程序的评价

对于闰年2月1到27日,平年2月1到26日的数据,不能得到正确的预期输出。

对于无效和未预料的输入情况,不能给出清晰的提示信息,全部是相同的提示信息。

对于输出,有“输入的日期”此项不必要的输出。

输入数据时的提示很清晰。文章来源地址https://www.toymoban.com/news/detail-433160.html

到了这里,关于软件测试技术 实验一:黑盒测试1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [软件测试] 07 黑盒 场景法 习题

    软件测试期末复习系列 课件知识点整合 : 软件测试基础 白盒测试 黑盒测试 PTA习题汇总 : 软件测试基础 白盒测试-逻辑覆盖测试 白盒测试-基本路径测试 白盒测试-静态测试 黑盒测试-等价类划分 黑盒测试-边界值测试 黑盒测试-场景法 提示 : 篇幅较长,可以使用 Ctrl+F ,在

    2024年02月04日
    浏览(55)
  • 【软件测试】黑盒测试black box testing

    又称为功能测试function testing、行为测试behavior testing 黑盒测试测试不知道代码细节的软件 Black box testing test software without knowing how it is coded. 测试目的:判断输入和输出是否符合软件要求 1. 不需要知道代码细节 2. 相互独立 3. 可以在说明书完成后就设计测试用例,不用等代码完

    2024年04月23日
    浏览(41)
  • 软件测试之黑盒测试的具体方法详解

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 我们这里要读软件测试的黑盒测试方法进行具体的讲解,大家也不要过于担心,相信我接下来的讲解以后,大家对这些测试方法必然是了然如胸的.当然在我们介绍测试用例的方法之前.我们应该来回顾一下

    2024年02月01日
    浏览(50)
  • 软件测试——黑盒测试(边界值分析、等价类划分)

    黑盒测试有两种类型:静态黑盒测试、动态黑盒测试。静态黑盒测试即测试内部人员在软件开发过程中编写的文档。接下来我们介绍一下动态黑盒测试的两种方法。 1.边界值分析 边界值分析考虑大量的错误是发生在输入或输出范围的边界上,而不是发生在输入、输出范围的内

    2024年02月07日
    浏览(38)
  • 软件测试技术实验一 JUnit 单元测试的环境搭建

    1、确安装并配置 IntelliJ IDEA开发环境 2、安装插件Junit4.x,进行测试环境搭建 3、根据给定的源代码,编写测试代码,并运行成功。 1、调试指导书给定的目标源代码,除掉明显的语法错误,记录正确无误的被测程序代码。被测程序 : (1) Account.Java (2)Tc_Account.java (3)由插

    2024年04月28日
    浏览(44)
  • [软件测试] 05 黑盒 等价类划分 习题

    软件测试期末复习系列 课件知识点整合 : 软件测试基础 白盒测试 黑盒测试 PTA习题汇总 : 软件测试基础 白盒测试-逻辑覆盖测试 白盒测试-基本路径测试 白盒测试-静态测试 黑盒测试-等价类划分 黑盒测试-边界值测试 黑盒测试-场景法 提示 : 篇幅较长,可以使用 Ctrl+F ,在

    2024年02月04日
    浏览(45)
  • 软件测试——测试的分类(重点:黑盒测试、白盒测试、单元测试、集成测试、系统测试)

    界面是直接和用户进行交互的,界面设计的好坏决定了用户使用软件的直观感受 界面测试(UI 测试)一般包括以下内容: 对比 UI 设计稿,验证系统显示界面的一致性和正确性 验证界面上每个功能的正确性 验证界面排版布局是否合理。字体大小、图片排版、清晰程度等 验证

    2024年02月09日
    浏览(61)
  • 软件测试之测试的分类(重点:黑盒测试、白盒测试、单元测试、集成测试、系统测试)

    界面是直接和用户进行交互的,界面设计的好坏决定了用户使用软件的直观感受 界面测试(UI 测试)一般包括以下内容: 对比 UI 设计稿,验证系统显示界面的一致性和正确性 验证界面上每个功能的正确性 验证界面排版布局是否合理。字体大小、图片排版、清晰程度等 验证

    2024年02月03日
    浏览(55)
  • 软件质量保证与测试技术实验:白盒测试用例设计

    目录 前言 一、白盒测试 二、实验目的 三、实验内容 四、实验步骤 五、实验过程 题目一 1、程序流程图 2、测试用例​​​​​​​ 3、测试代码 4、测试结果 题目二 1、控制流图 2、独立路径集合 3、测试用例  4、测试代码  5、测试结果 总结 白盒测试是一种基于程序内部

    2024年02月04日
    浏览(53)
  • 一个黑盒测试和白盒测试区别的软件测试面试题,错失15koffer

    软件测试是确保软件质量的重要环节,而在软件测试中,黑盒测试和白盒测试是两种常见的测试方法。跟小一起学习黑盒测试和白盒测试区别: 它们在测试的角度和目标上存在显著区别,本文将深入探讨这两种测试方法的定义、特点、应用场景以及区别,以帮助读者更好地理

    2024年02月05日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包