计算器软件测试报告
Win7计算器软件测试报告要点(可编辑修改word版)
W i n7计算器功能测试报告目录1.前言 (1)1.1测试目的 (1)1.2测试背景 (1)2.测试软件 (1)2.1软件名称 (1)2.2获取方式 (1)2.3功能模块 (1)3.功能测试设计 (3)3.1测试目标 (3)3.2测试模块 (3)3.3等价类划分及测试用例 (4)4.功能测试实施 (8)4.1测试时间 (8)4.2测试过程及结果 (8)5.测试分析及缺陷描述 (11)5.1测试分析 (11)5.2缺陷描述 (12)6.附录—测试分工 (13)班级:信管 101姓名:褚伟梁1.前言1.1测试目的根据 Windows 7 计算器的帮助文档,制定对 Windows 7 计算器的测试用例,用来测试计算器功能。
包括:输入输出、计算换算、日期计算等。
根据本次测试来评估当前的计算器是否符合设计要求和使用要求,并进而做出测试分析报告。
1.2测试背景1)测试计划所从属的软件系统:Windows 7;2)在开始执行本测试计划之前必须完成的工作:需要阅读计算器的帮助文档。
2.测试软件2.1软件名称Windows7 自带计算器2.2获取方式2.3功能模块1)标准型(进行加减乘除百分制等简单运算)2)科学型(进行较为复杂的科学计算)3)程序员(二进制、八进制、十进制、十六进制之间的转换等)4)日期计算(计算两个日期之差或一个日期加上、减去到指定日期的天数)3.功能测试设计3.1测试目标该测试目标是核实数据的接受,处理和检索是否正确。
此类测试基于黑盒测试技术(手工测试),该技术通过图形界面与应用程序进行交互,并对交互的输出和结果进行分析,以此来核实应用程序及其内部进程。
3.2测试模块1)模块 1:执行基本的运算(功能模块 1&2)因果图:2)模块 2:执行进制的换算(功能模块 3)因果图:3)模块 3:执行日期计算功能(功能模块 4)3.3等价类划分及测试用例a.基本运算等价类(以科学型为主)b.基本运算测试用例c.进制换算等价类(基于四字)d.进制转换测试用例e.日期计算等价类f.日期计算测试用例4.功能测试实施4.1测试时间功能测试安排时间:5 天4.2测试过程及结果a.模块 1测试内容描述b.模块 2测试内容描述c.模块 3测试内容描述4.选择“”,进行如下计算8. 单击“计算”已输入在框中显示目标日期与预期一致5.测试分析及缺陷描述5.1测试分析经测试证实了的 Win7 系统自带的部分计算器功能符合要求,输出类型基本全部合理,测试输出结果与预期输出结果相同并无较大偏差,而且界面布局显示合理,能进行基本的十进制运算,输入数据和结果数据范围在-99…9(32位)到99…9(32位)之间,若超过 32 位,将以“1.e+33”的形式显示,且能进行简单的二进制,八进制,十进制,十六进制间的转换及运算,以四字二进制为准,输入数据和结果数据范围在-1…1(64位)到1…1(64位)之间,还能进行 1601.1.1 到9999.12.31 之间的日期计算。
计算器 实验报告
计算器实验报告计算器实验报告引言:计算器是一种广泛应用于日常生活和工作中的电子设备。
它的出现极大地方便了人们的计算工作,提高了计算的准确性和效率。
本实验旨在深入了解计算器的原理和工作方式,并通过实际操作,探索计算器的功能和使用方法。
一、计算器的原理和结构计算器是一种基于数字电路和逻辑电路的电子设备。
它主要由处理器、显示屏、键盘和电源等组成。
处理器是计算器的核心部件,负责执行各种计算操作。
显示屏用于显示计算结果和输入的数据。
键盘则用于输入数字和操作符。
电源为计算器提供电能。
二、计算器的基本功能1. 四则运算:计算器可以进行加、减、乘、除等基本的四则运算。
用户只需按下相应的数字和操作符键,计算器即可自动完成计算,并在显示屏上显示结果。
2. 百分数计算:计算器还可以进行百分数的计算。
用户只需输入百分数和相应的操作符,计算器将自动将百分数转换为小数,并进行计算。
3. 平方根和乘方计算:计算器还具备开平方根和乘方的功能。
用户只需按下相应的键,输入要计算的数字,计算器将自动进行计算,并在显示屏上显示结果。
4. 括号和优先级计算:计算器支持括号和优先级计算。
用户可以使用括号来改变计算的顺序,并通过设置优先级来控制计算的顺序。
三、计算器的使用方法1. 数字输入:用户可以通过按下相应的数字键来输入数字。
计算器一般有0到9的数字键,用户可以按下多次来输入多位数。
2. 操作符输入:计算器一般有加、减、乘、除等操作符键。
用户可以按下相应的操作符键来输入操作符。
3. 清除和删除:计算器一般有清除和删除键。
用户可以使用清除键来清除计算器的显示屏和内存中的数据。
删除键则用于删除输入的数字和操作符。
4. 计算结果:用户可以按下等号键来计算结果。
计算器将根据输入的数字和操作符进行计算,并在显示屏上显示结果。
四、实验过程和结果在实验中,我们使用了一款普通的计算器进行操作。
首先,我们按下数字键输入了一组数字,然后按下操作符键进行四则运算。
简单计算器实验报告
简单计算器实验报告简单计算器实验报告引言:在现代社会,计算器已经成为人们生活中不可或缺的工具之一。
无论是在学校、办公室还是家庭,计算器都扮演着重要的角色。
本实验旨在设计和构建一个简单的计算器,并通过实验验证其功能和准确性。
实验步骤:1. 设计计算器的外观和功能:我们首先对计算器进行了外观设计,选择了简洁、易于使用的界面。
然后确定了计算器的基本功能,包括加法、减法、乘法和除法。
2. 选择合适的硬件和软件:为了构建计算器,我们选择了合适的硬件和软件。
硬件方面,我们选用了一块Arduino开发板、液晶显示屏和按键。
软件方面,我们使用了Arduino编程语言。
3. 连接硬件和编写代码:我们将液晶显示屏和按键与Arduino开发板连接起来,并编写了相应的代码。
代码中包括了计算器的逻辑运算和界面显示。
4. 测试计算器的功能和准确性:在完成硬件连接和代码编写后,我们对计算器进行了测试。
我们输入了一系列的算术表达式,包括简单的加减乘除运算,以及复杂的多步运算。
通过与手动计算的结果进行对比,我们验证了计算器的功能和准确性。
实验结果:经过多次测试,我们的计算器表现出了良好的功能和准确性。
无论是简单的加法还是复杂的多步运算,计算器都能够正确地给出结果。
液晶显示屏清晰地显示了算术表达式和计算结果,而按键的响应速度也非常迅速。
讨论:虽然我们的计算器在功能和准确性方面表现出色,但仍有一些改进的空间。
首先,我们可以增加更多的功能,如开方、求余等。
其次,我们可以改进界面设计,使其更加美观和易于使用。
此外,我们还可以考虑加入更强大的处理器和更大的内存,以提高计算器的性能。
结论:通过本次实验,我们成功设计和构建了一个简单的计算器,并验证了其功能和准确性。
计算器在各种算术运算中表现出色,并且具有清晰的界面和快速的响应速度。
然而,我们也意识到计算器仍有改进的空间,包括增加更多功能和改进界面设计。
总的来说,本次实验为我们深入了解计算器的原理和构造提供了宝贵的经验。
windows计算器测试报告-
Windows计算器测试报告学号:姓名:专业:指导老师:2010年11月25日目录1. 项目简介 (3)1.1 目的 (3)1.2 项目简述 (3)1.3 定义 (3)1.4 参考文档 (3)2. 测试概要 (3)2.1 测试用例设计方法和工具 (3)2.2 测试环境与配置 (3)3. 测试情况 (4)3.1 测试版本情况 (4)3.2 差异 (4)3.3 测试充分性评价 (4)3.4 测试组织 (4)测试时间 (4)4. 测试结果及分析 (4)4.1 测试情况统计分析 (8)4.2 覆盖分析 (8)需求覆盖 (8)测试覆盖 (8)4.3 缺陷的统计与分析 (8)缺陷汇总 (8)4.4 缺陷分析 (9)5. 测试结论 (9)5.1 残留缺陷与未解决问题 (9)6. 批准 (9)windows计算器测试报告1.项目简介1.1编写文档目的本测试报告反映在<计算器>的一个版本内的质量情况。
包含该版本经开发部发布后测试组的接受结果与原因、存在的问题描述与分析。
Windows计算器的测试文档有助于实现以下目标:1.确定现有项目的信息和应测试的软件构件2.列出推荐的测试需求3.推荐可采用的测试策略,并对这些策略加以说明4.确定所需的资源,并对测试的工作量进行估计5.对整个测试工作的工作量进行估计6.对测试活动的进程进行有计划的实施7.列出测试项目的可交付元素1.2项目简述背景项目名称:计算器。
windows自带软件••••••••您可以使用计算器来执行加、减、乘和除运算。
计算器还提供了科学计算器和统计计算器的高级功能。
可以单击计算器按钮来执行计算,或者使用键盘键入进行计算。
通过按 Num Lock,数字键盘也可以用来键入数字和运算符。
1.3定义各种进制:十六进制、八进制、十进制、二进制。
1.4参考文档用到的参考资料:1)、Window计算器的帮助文档2)、《软件测试教程》宫云站机械工业出版社 2008年9月2.测试概要测试范围:本文档适用于windows计算器的功能测试。
计算器实验报告 (1)
HTML网页实验报告院系:计算机控制与工程学院班级:计124-1学号:姓名:完成日期:2014年12月18日一.实验名称:设计一个网页计算器二.需求分析:计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。
要实现计算功能,可以用HTML的知识编写程序来解决此问题。
该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。
该计算器使用非常简单和方便,对广大学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。
三.实验目的:1.熟悉html5图形用户界面的设计原理和程序结构2.能设计复核问题要求的图形用户界面程序3.熟悉javascript css、button和table的组合4.会应用button和table组件进行应用程序设计四.实验硬件软件环境:1.Dreamweaver开发环境五.详细内容:使用《网页设计与开发》课程讲授内容,编写一个简单的计算器,要求实现如下功能:1.进行图形界面设计通过图形界面设计,掌握文本框、标签及按钮的使用方法。
2.实现计算器的基本功能计算器的设计按软件工程的方法进行,网页具有良好的界面;必要的交互信息;简约美观的效果。
使用人员能快捷简单地进行操作。
即可单击按钮进行操作,也可直接通过键盘直接输入。
即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。
包含的功能有:加、减、乘、除运算,开方、求倒数等功能.计算器的扩展功能包括乘方、对数、正弦、余弦、正切、余切、反正弦、反余弦、反正切、反余切等功能。
4.计算器工作流程图六.实验设计:1、实验算法设计<script type="text/javascript">// JavaScript Documentvar NUM=1var endNumber=truevar mem=0var carry=10var hexnum="0123456789abcdef"var angle="d"var stack=""var level="0"var layer=0function doit(){document.getElementById("txt1").value=eval(document.getElementById("txt 1").value) }function add(obj){ if(NUM==1) { document.getElementById("txt1").value+=obj.value;}else {clears();NUM=1; document.getElementById("txt1").value+=obj.value;}}function results(){var obj=document.getElementById("txt1").value;if(obj.indexOf("=")<0){NUM=0;if(bic==1){num=document.getElementById("txt1").value;document.getElementById("txt1").value=Math.pow(Num,num);bic=0;}else{document.getElementById("txt1").value=eval(obj);}}}//角度制和弧度制function inputChangAngle(a){endNumber=trueangle=aif (angle=="d")document.getElementById("txt1").value=radiansToDegress(document.getElem entById("txt1").value)elsedocument.getElementById("txt1").value=degressToRadians(document.getElem entById("txt1").value)endNumber=true}function degressToRadians(degress){return(degress*Math.PI/180)}function radiansToDegress(radians){return(radians*180/Math.PI) }//+/-function changeSign(){if (document.getElementById("txt1").value!="0")if(document.getElementById("txt1").value.substr(0,1) == "-") document.getElementById("txt1").value = document.getElementById("txt1").value.substr(1)elsedocument.getElementById("txt1").value = "-" + document.getElementById("txt1").value}//ln函数function ln10(){document.getElementById("txt1").value=Math.LN10}function clears(){ document.getElementById("txt1").value="";}function Cos(){x=document.getElementById("txt1").valueif(x=='')alert('Error: Input Required');else document.getElementById("txt1").value=Math.cos(x); }function Sin(){x=document.getElementById("txt1").valueif(x=='')alert('Error: Input Required');else document.getElementById("txt1").value=Math.sin(x);}function Tan(){x=document.getElementById("txt1").valueif(x=='')alert('Error: Input Required');else document.getElementById("txt1").value=Math.tan(x);}function Atan(){x=document.getElementById("txt1").valueif(x=='')alert('Error: Input Required');else document.getElementById("txt1").value=Math.atan(x);}function Acos(){x=document.getElementById("txt1").valueif(x=='')alert('Error: Input Required');else document.getElementById("txt1").value=Math.acos(x);}function Asin(){x=document.getElementById("txt1").valueif(x=='')alert('Error: Input Required');else document.getElementById("txt1").value=Math.asin(x);}//pi的值function pi(){var x=3.141592653589793;document.getElementById("txt1").value=x;}//E的值function e(){var x=2.718281828459045;document.getElementById("txt1").value=x;}function Sqrt(){x=document.getElementById("txt1").valueif(x=='')alert('Error: Input Required');else document.getElementById("txt1").value=Math.sqrt(x);}function Pow(){Num=Number(document.getElementById("txt1").value);bic=1;clears();}function Square(){x=document.getElementById("txt1").valueif(x=='')alert('Error: Input Required');else document.getElementById("txt1").value=x*x }function nation(){x=document.getElementById("txt1").value;y=document.getElementById("txt1").value;if(x==''||y='')alert('Error: Input Required');else document.getElementById("txt1").value=x*y;}function Log(){x=document.getElementById("txt1").valueif(x=='')alert('Error: Input Required');else document.getElementById("txt1").value=Math.log(x); }function Round(){x=document.getElementById("txt1").valueif(x=='')alert('Error: Input Required');else document.getElementById("txt1").value=Math.round(x); }function Ran(){x=document.getElementById("txt1").valuedocument.getElementById("txt1").value=Math.random(x); }function del(){x=document.getElementById("txt1").valuedocument.getElementById("txt1").value=x.substring(0,document.getElement ById("txt1").value.length-1)}function two(){x=document.getElementById("txt1").valueif(x=='')alert('Error: Input Required');else document.getElementById("txt1").value=x/2;}function three(){x=document.getElementById("txt1").valueif(x=='')alert('Error: Input Required');else document.getElementById("txt1").value=x/3;}function four(){x=document.getElementById("txt1").valueif(x=='')alert('Error: Input Required');else document.getElementById("txt1").value=x/4;}function five(){x=document.getElementById("txt1").valueif(x=='')alert('Error: Input Required');else document.getElementById("txt1").value=x/5;}function six(){x=document.getElementById("txt1").valueif(x=='')alert('Error: Input Required');else document.getElementById("txt1").value=x/6;}function seven(){x=document.getElementById("txt1").valueif(x=='')alert('Error: Input Required');else document.getElementById("txt1").value=x/7;}function X1(){x=document.getElementById("txt1").valueif(x==''||x=='0')alert('Error: Input Required');else document.getElementById("txt1").value=1/x;}function X2(){x=document.getElementById("txt1").valueif(x==''||x=='0')alert('Error: Input Required');else document.getElementById("txt1").value=2/x;}function X3(){x=document.getElementById("txt1").valueif(x==''||x=='0')alert('Error: Input Required');else document.getElementById("txt1").value=3/x;}function nine(){x=document.getElementById("txt1").valueif(x=='')alert('Error: Input Required');else document.getElementById("txt1").value=x/9;}function ten(){x=document.getElementById("txt1").valueif(x=='')alert('Error: Input Required');else document.getElementById("txt1").value=x/10;}function adddel(){x=document.getElementById("txt1").value;if(x.indexOf('-')<0){ document.getElementById("txt1").value.indexOf('-' )=-x}else document.getElementById("txt1").value=-x;adddel();}</script>2、实验界面显示设计:运用<table>表格设计计算机基本页面显示,加上css设计表格样式:CSS代码:<style type="text/css" >#txt1{border:dashed 0px #000000;-moz-border-radius: 0px;-webkit-border-radius: 0px;border-radius: 0px;height:50px;width:400px;}input{border:inset 8px #0f191a;-moz-border-radius: 24px;-webkit-border-radius: 24px;border-radius: 24px;width:100px;}.STYLE3 {font-family: "新宋体"; font-weight: bold; font-size: xx-large;}</style>七.程序测试记录与结果说明:1、运行得出以下图片:角度制和弧度制:八.实验分工:九.总结经过了一个学期的HTML的学习,我们受益良多,最终设计出了一款网页计算器,虽然它有待进一步完善,但却融入了我们两人的心血,只要有所付出,就会有所收获。
计算器黑盒测试实验报告
西实科技验报算告?实验名称计算器黑盒测试I实验地点____________________实验日期_______________指导教师__________________学生班级________________学生姓名__________________学生学号_________________提交日期软件教研室制一、测试目的设计测试用例、使用各种测试方法进行计算器的测试,并对测试结果进行分析二、测试内容1•软件说明:实现一个小的计算器程序,只需要完成加、减、乘、除运算,设计测试用例,并对测试结果进行分析,同时计算器运行稳定。
2、设计测试用例3、执行测试4、测试结果分析5、源代码三、测试步骤(一)、计算器界面2、设计测试用例(1)等价类测试:1、4个等价类测试用例的分析过程如下:2、对应测试的结果分析: 整型:1.加(55+50)2.减(78-24)3.乘(15*25)4.除(36/4)小数1.加(25.3+12.7)2.减(14.3-11.7)3.乘(25.6*12.8)4.除(50.2/20.7)负数6.加-20+-217.减(-15)-(-14)8.乘-12*-129.除-16/-5(其中算式写法错误导致正常运算错误)无效输入1.加(E1+t2):程序中无效数字无法正常输入,程序无法进行。
2.减(G4-k5)程序中无效数字无法正常输入,程序无法进行。
(同上)3.乘(I5*l6)程序中无效数字无法正常输入,程序无法进行。
(同上)4.除(Ff/se)程序中无效数字无法正常输入,程序无法进行。
(同上)简易计食器1、计算器4个标准等价类测试用例的分析过程如下:测试用例被加数加数预期输出Testi 0 10 正常运算Test2 1 10 正常运算Test3 40 10 正常运算Test4 55.5 10 正常运算Test5 -70 10 正常运算Test6 10 10 正常运算Test7 101 10 正常运算Test8 10 0 不能运算Test9 10 1 正常运算Test10 10 40 正常运算Testil 10 55.5 正常运算Test12 10 -78 正常运算Test13 10 100 正常运算2、对应测试与结果:测试结果运算均属正常,对应的部分的示图如下:Testi结果:Test2结果:Test3结果:Test4结果:Test5结果:Test6结果:减法:1、计算器4个标准等价类测试用例的分析过程如下:2、对应测试与结果:测试结果运算均属正常,对应的部分的示图如下:Testi结果:Test3结果:Test4结果:Test5结果:Test6结果:乘法1、计算器42、对应测试与结果:测试结果运算均属正常,对应的部分的示图如下:Testi结果:Test3结果:Test4结果:Test5结果:Test6结果:除法1、计算器4个标准等价类测试用例的分析过程如下:测试用例被除数除数预期输出Test2结果:Test3结果:Test8结果:附录:源代码CCalculateDlg::CCalculateDlg(CWnd* pParent /*=NULL*/):CDialog(CCalculateDlg::IDD, pParent){//{{AFX_DATA_INIT(CCalculateDlg)m_parameter = 0.0;//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);CalculatePara = 0;CalculateResult = 0;Ispoint = false;Sumpoint = 0;} void CCalculateDlg::DoDataExchange(CDataExchange* pDX)CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CCalculateDlg)DDX_Text(pDX, IDC_EDIT, m_parameter);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CCalculateDlg, CDialog)//{{AFX_MSG_MAP(CCalculateDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_clear, Onclear)ON_BN_CLICKED(IDC_calculate, Oncalculate)ON_BN_CLICKED(IDC_para1, Onpara1)ON_BN_CLICKED(IDC_para2, Onpara2)ON_BN_CLICKED(IDC_para3, Onpara3)ON_BN_CLICKED(IDC_para4, Onpara4)ON_BN_CLICKED(IDC_para5, Onpara5)ON_BN_CLICKED(IDC_para6, Onpara6)ON_BN_CLICKED(IDC_para7, Onpara7)ON_BN_CLICKED(IDC_para8, Onpara8)ON_BN_CLICKED(IDC_para9, Onpara9)ON_BN_CLICKED(IDC_para0, Onpara0)ON_BN_CLICKED(IDC_point, Onpoint)ON_BN_CLICKED(IDC_minus, Onminus)ON_BN_CLICKED(IDC_plus, Onplus)ON_BN_CLICKED(IDC_subtrack, Onsubtrack)ON_BN_CLICKED(IDC_multiply, Onmultiply)ON_BN_CLICKED(IDC_divide, Ondivide)//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////// // CCalculateDlg message handlersBOOL CCalculateDlg::OnInitDialog(){CDialog::OnInitDialog();// Add "About..." menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon// TODO: Add extra initialization herereturn TRUE; // return TRUE unless you set the focus to a control}void CCalculateDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}}// If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework.void CCalculateDlg::OnPaint(){if (IsIconic())CPaintDC dc(this); // device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);// Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// Draw the icon dc.DrawIcon(x, y, m_hIcon);}else{CDialog::OnPaint();}}// The system calls this to obtain the cursor to display while the user drags // the minimized window.HCURSOR CCalculateDlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}void CCalculateDlg::Onclear(){UpdateData(true);m_parameter = 0;CalculatePara = 0;CalculateResult = 0;Ispoint = false;Sumpoint = 0;UpdateData(false);// TODO: Add your control notification handler code herevoid CCalculateDlg::Oncalculate(){UpdateData(true);CalculatePara = m_parameter;switch(CalculateExpre){case'+':CalculateResult += CalculatePara;m_parameter = CalculateResult;break;case,-':CalculateResult -= CalculatePara;m_parameter = CalculateResult;break;case,*,:CalculateResult *= CalculatePara;m_parameter = CalculateResult;break;case,/':if (CalculatePara){CalculateResult /= CalculatePara;m_parameter = CalculateResult;}else{m_parameter = 0;MessageBox(”除数不能为零!”);} break;}// TODO: Add your control notification handler code hereCalculatePara = 0;CalculateResult = 0;Ispoint = false;Sumpoint = 0;UpdateData(false);}void CCalculateDlg::Onpara1(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 1;}else{CalculatePara = m_parameter + 1/pow(10,Sumpoint);Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara2(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 2;elseCalculatePara = m_parameter + 2/pow(10,Sumpoint);Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara3(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 3;}else{CalculatePara = m_parameter + 3/pow(10,Sumpoint);Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara4(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 4;}elseCalculatePara = m_parameter + 4/pow(10,Sumpoint);Sumpoint++;m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara5(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 5;}else{CalculatePara = m_parameter + 5/pow(10,Sumpoint);Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara6(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 6;}else{CalculatePara = m_parameter + 6/pow(10,Sumpoint);Sumpoint++;m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara7(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 7;}else{CalculatePara = m_parameter + 7/pow(10,Sumpoint);Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara8(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 8;}else{CalculatePara = m_parameter + 8/pow(10,Sumpoint);Sumpoint++;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara9(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 9;}else{CalculatePara = m_parameter + 9/pow(10,Sumpoint);Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara0(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 0;}else{Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here void CCalculateDlg::Onpoint(){Ispoint = true;Sumpoint = 1;// TODO: Add your control notification handler code here}void CCalculateDlg::Onminus(){UpdateData(true);m_parameter = 0 - m_parameter;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onplus(){UpdateData(true);CalculateResult = m_parameter;CalculateExpre = '+';m_parameter = 0;Ispoint = false;Sumpoint = 0;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onsubtrack(){UpdateData(true);CalculateResult = m_parameter;CalculateExpre =m_parameter = 0;Ispoint = false;Sumpoint = 0;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onmultiply(){UpdateData(true);CalculateResult = m_parameter;CalculateExpre = '*';m_parameter = 0;Ispoint = false;Sumpoint = 0;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Ondivide(){UpdateData(true);CalculateResult = m_parameter;CalculateExpre = '/';m_parameter = 0;Ispoint = false;UpdateData(false);// TODO: Add your control notification handler code here。
软件测试实验报告刘天元2011年40
实验报告黑龙江大学教务处目录引言 (3)1.1编写目的 (3)1.2项目背景 (3)1.3定义 (3)1.4参考资料 (3)实验名称 (4)实验目的 (4)实验要求 (4)实验类型 (4)实验环境 (4)测试计划 (4)测试结论 (20)评价 (21)引言1.1编写目的测试windows附件中的计算器的一些性能。
1.2项目背景Windows附件中的计算器我们无法查看源代码,所以要用黑盒测试计算器的一些功能1.3定义等价类划分以需求规格说明书为依据,不用考虑程序的内部结构,只参照对程序的要求和说明,通过分析说明书的各项需求,特别是功能需求,把对输入的要求和输出的要求区别开来,并把输入域分解成若干等价类,每个类中的一个典型值在测试中的作用与这一类中所有其他值的作用相同,因此可以在每个等价类中选用一组数据作为测试用例进行测试来发现程序中的错误。
等价类分为有效等价类和无效等价类两种类型。
有效等价类是指对于程序的规格说明来说是合理的输入数据构成的集合。
利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
无效等价类与有效等价类的定义相反。
设计测试用例时,要同时考虑这两种等价类。
因为软件不仅要能接收合理的数据,也要能经受不合理数据的考验,这样的测试才能确保软件具有更高的可靠性和坚固性。
边界值分析也是一种黑盒测试方法,是一种补充等价类划分的测试用例设计技术,它选择一组测试用例检查边界值。
它不是选择等价类的任意元素,而是选择等价类边界的测试用例。
在设计测试用例时,对边界处理必须给予足够重视,为检查边界的处理而专门设计测试用例,常常可以取得良好的测试效果。
提出边界条件时,一定要测试临近边界的合法数据以及刚超过边界的非法数据。
边界值分析的基本思想是使用最小值,略低于最小值、正常值、略高于最大值和最大值作为输入变量值。
1.4参考资料在“开始”菜单中搜索“计算器”,拼音字母不行哦~或者在“所有程序”-“附件”中找到“计算器”。
计算器_实验报告
一、实验目的1. 熟悉计算器的基本原理和设计方法。
2. 掌握计算器程序的设计与实现。
3. 提高编程能力和软件工程实践能力。
二、实验环境1. 操作系统:Windows 102. 编程语言:Java3. 开发工具:Eclipse三、实验内容1. 计算器界面设计2. 计算器功能实现3. 计算器测试与优化四、实验步骤1. 计算器界面设计(1)创建一个Java项目,命名为“Calculator”。
(2)在项目中创建一个名为“CalculatorFrame”的类,继承自JFrame。
(3)在“CalculatorFrame”类中,创建一个JPanel作为计算器的面板,命名为“calculatorPanel”。
(4)在calculatorPanel中,添加一个JTextField作为显示输入和计算结果的文本框,命名为“resultField”。
(5)添加一个JButton数组,作为计算器的按钮,包括数字按钮、运算符按钮和功能按钮。
(6)为每个按钮设置事件监听器,实现按钮点击事件。
2. 计算器功能实现(1)在“CalculatorFrame”类中,定义一个私有成员变量,用于存储当前输入的字符串。
(2)为每个按钮的事件监听器添加逻辑,实现以下功能:- 数字按钮:将按钮对应的数字字符串添加到当前输入字符串中。
- 运算符按钮:将当前输入字符串、运算符和下一个输入字符串组合成一个表达式,并计算结果。
- 功能按钮:实现计算器的其他功能,如清除、求倒数、开平方等。
(3)计算结果存储在resultField中。
3. 计算器测试与优化(1)对计算器进行测试,确保所有功能正常运行。
(2)优化计算器的性能,提高计算速度。
(3)美化计算器界面,提高用户体验。
五、实验结果与分析1. 实验结果成功设计并实现了一个具有基本功能的计算器,界面简洁、操作方便。
2. 实验分析(1)通过学习计算器的基本原理和设计方法,掌握了计算器程序的设计与实现。
java 计算器实验报告
java 计算器实验报告Java计算器实验报告引言:计算器是我们日常生活中常用的工具,使用计算器可以快速进行数学运算。
在计算器中,我们可以通过输入数字和运算符来执行各种算术操作。
为了更好地理解计算器的工作原理,我们进行了Java计算器的实验。
一、实验目的本次实验的目的是设计和实现一个简单的Java计算器。
通过这个实验,我们可以加深对Java编程语言的理解,并且掌握Java图形用户界面(GUI)的基本知识。
二、实验环境本次实验使用的是Java开发工具包(JDK)和Eclipse集成开发环境(IDE)。
在实验之前,我们需要确保已经正确安装了JDK和Eclipse。
三、实验步骤1. 创建一个新的Java项目,并命名为"Calculator"。
2. 在项目中创建一个新的Java类,命名为"CalculatorGUI"。
3. 在"CalculatorGUI"类中,创建一个窗口,并设置窗口的标题和大小。
4. 在窗口中添加一个文本框,用于显示计算结果。
5. 在窗口中添加一些按钮,用于输入数字和运算符。
6. 为每个按钮添加事件监听器,以便在用户点击按钮时执行相应的操作。
7. 实现计算器的基本功能,包括加法、减法、乘法和除法。
8. 运行程序,测试计算器的功能。
四、实验结果经过实验,我们成功地实现了一个简单的Java计算器。
用户可以通过按钮输入数字和运算符,并且计算器可以正确地执行相应的运算。
计算结果会显示在文本框中。
五、实验总结通过这个实验,我们学习了如何使用Java编程语言创建图形用户界面,并且掌握了Java计算器的基本实现方法。
在实验过程中,我们遇到了一些问题,比如如何处理用户输入错误的情况,如何处理除数为零的情况等。
通过不断调试和改进,我们最终解决了这些问题,并实现了一个功能完善的计算器。
在今后的学习和工作中,我们可以进一步扩展这个计算器的功能,比如添加科学计算功能、实现复杂运算等。
win7计算器软件测试
软件测试报告班级:计科142姓名:***学号:************系别:信息技术系专业:计算机科学与技术指导老师:***目录1.前言 (2)1.1测试目的 (2)1.2测试背景 (2)2.测试计划 (2)2.1测试计划名称 (2)2.2项目背景和内容概要 (2)2.3相关资料、缩略语、定义 (2)2.4参考资料: (3)2.5测试过程 (3)2.6测试目标 (3)2.7测试分工 (3)2.8测试步骤及方法 (3)2.9测试通过标准 (3)2.10修正错误并重新测试的步骤与要求 (3)2.11进度计划 (3)2.12测试小结 (4)2.13测试用例的简单描述 (4)2.14需求跟踪 (4)3.性能测试用 (4)3.1测试用例的目的 (4)3.2测试用例的输入 (4)3.3期待的输出 (5)3.4测试方法 (6)3.5实际的输出 (6)4.设计测试环境 (8)4.1软件: (8)4.2硬件: (8)4.3网络环境: (8)4.4测试工具: (8)5.测试软件 (9)5.1软件名称 (9)5.2获取方式 (9)5.3功能模块 (10)6.功能测试计划 (12)6.1测试目标 (12)6.2测试模块 (12)6.3等价类划分及测试用例 (12)7.测试实施 (14)7.1测试时间 (14)7.2测试过程及结果 (14)8.测试分析及缺陷描述 (15)8.1测试分析 (15)8.2缺陷描述 (15)9.实验总结 (16)1.前言1.1测试目的根据Windows 7计算器的帮助文档,制定对Windows 7计算器的测试用例,用来测试计算器功能。
包括:输入输出、计算换算、日期计算等。
根据本次测试来评估当前的计算器是否符合设计要求和使用要求,并进而做出测试分析报告。
1.2测试背景1)测试计划所从属的软件系统:Windows 7;2) 在开始执行本测试计划之前必须完成的工作:需要阅读计算器的帮助文档。
2.测试计划2.1测试计划名称Windows 7计算器的测试2.2项目背景和内容概要该项目是自己找的,委托单位是老师,开发单位主管单位都是window公司的员工。
计算器实验报告
计算器实验报告计算器实验报告引言:计算器是一种现代化的数学工具,它的出现极大地方便了人们的生活和工作。
本实验旨在通过对计算器的研究和实践,了解其原理和功能,并对其性能进行评估。
一、计算器的原理和功能计算器是一种能够进行数学运算的电子设备。
它基于数字电路和微处理器技术,通过输入数据和运算符号,能够进行加减乘除等基本运算,同时还具备一些高级功能,如开方、取余、百分比等。
二、计算器的基本操作1. 开机与关机:按下计算器上的电源按钮,即可启动计算器。
在使用结束后,长按电源按钮即可关闭计算器。
2. 数字输入:计算器通常配备有0-9的数字键,通过按下相应的数字键,可以输入需要计算的数字。
3. 运算符输入:计算器上通常还有加减乘除等运算符号键,通过按下相应的运算符键,可以选择所需的运算方式。
4. 结果显示:计算器的显示屏会实时显示输入的数字和运算结果。
三、计算器的性能评估1. 精确度:计算器的精确度是评估其性能的重要指标之一。
通过进行一系列精确度测试,比较计算器的计算结果与实际值的差异程度,可以评估其精确度水平。
2. 反应速度:计算器的反应速度是指在输入数据后,计算器进行计算并显示结果的时间。
通过对不同计算器的反应速度进行对比,可以评估其性能优劣。
3. 功能完整性:计算器的功能完整性是指计算器是否具备基本的数学运算功能,并能够满足用户的需求。
通过测试计算器的各项功能,如开方、取余、百分比等,可以评估其功能完整性。
4. 电池寿命:对于便携计算器而言,电池寿命是一个重要的考量因素。
通过测试计算器在不同使用情况下的电池寿命,可以评估其续航能力。
结论:通过本次实验,我们对计算器的原理和功能有了更深入的了解。
计算器作为一种重要的数学工具,不仅能够进行基本的数学运算,还具备多种高级功能。
通过评估计算器的性能指标,我们可以选择适合自己需求的计算器。
计算器的发展将进一步推动数学学科的发展,为人们的生活和工作提供更多便利。
参考文献:无。
软件测试实验报告刘天元20104000
实验报告课程名称软件测试实验项目名称软件测试试验2(黑盒)实验时间(日期及节次)专业学生所在学院年级学号姓名指导教师实验室名称实验成绩预习情况操作技术实验报告附加:综合创新能力实验综合成绩教师签字黑龙江大学教务处目录引言 (3)1.1编写目的 (3)1.2项目背景 (3)1.3定义 (3)1.4参考资料 (3)实验名称 (4)实验目的 (4)实验要求 (4)实验类型 (4)实验环境 (4)测试计划 (4)测试结论 (20)评价 (21)引言1.1编写目的测试windows附件中的计算器的一些性能。
1.2项目背景Windows附件中的计算器我们无法查看源代码,所以要用黑盒测试计算器的一些功能1.3定义等价类划分以需求规格说明书为依据,不用考虑程序的内部结构,只参照对程序的要求和说明,通过分析说明书的各项需求,特别是功能需求,把对输入的要求和输出的要求区别开来,并把输入域分解成若干等价类,每个类中的一个典型值在测试中的作用与这一类中所有其他值的作用相同,因此可以在每个等价类中选用一组数据作为测试用例进行测试来发现程序中的错误。
等价类分为有效等价类和无效等价类两种类型。
有效等价类是指对于程序的规格说明来说是合理的输入数据构成的集合。
利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
无效等价类与有效等价类的定义相反。
设计测试用例时,要同时考虑这两种等价类。
因为软件不仅要能接收合理的数据,也要能经受不合理数据的考验,这样的测试才能确保软件具有更高的可靠性和坚固性。
边界值分析也是一种黑盒测试方法,是一种补充等价类划分的测试用例设计技术,它选择一组测试用例检查边界值。
它不是选择等价类的任意元素,而是选择等价类边界的测试用例。
在设计测试用例时,对边界处理必须给予足够重视,为检查边界的处理而专门设计测试用例,常常可以取得良好的测试效果。
提出边界条件时,一定要测试临近边界的合法数据以及刚超过边界的非法数据。
简易计算器实验报告
目录1.概述 (1)2.系统软件设计 (1)2.1设计目标和实现方法 (1)2.2整体方案论证 (1)3.系统硬件的设计 (2)3.1复位电路的设计 (2)3.2时钟振荡器电路的设计 (3)3.3输入电路的设计 (4)3.4输出电路的设计 (7)4.系统程序的设计与介绍 (9)4.1读键输入程序流程图设计 (9)4.2 LED显示程序流程图设计 (11)4.3主程序流程图设计 (12)5.程序设计体会........................................... . (12)附 1 源程序代码 (14)附 2 计算器电路图 (24)1.概述随着社会的发展, 科学的进步, 人们的生活水平在逐步地提高, 尤其是微电子技术的发展犹如雨后春笋般的变化。
电子产品的更新速度快就不足惊奇了。
计算器在人们的日常中是比较常见的电子产品之一, 如何使计算器技术更加的成熟, 充分利用已有的软件和硬件条件, 设计出更出色的计算器, 使其更好地为各个行业服务, 成了如今电子领域重要的研究课题。
1、现如今, 人们的日常生活中已经离不开计算器了, 社会的各个角落都有它的身影, 比如商店、办公室、学校……因此设计一款简单实用的计算器会有很大的实际意义。
2、本设计旨在进一步掌握单片机理论知识, 理解嵌入式单片机系统的硬软件设计, 加强对实际应用系统设计的能力。
通过本设计的学习, 使我掌握单片机程序设计和微机接口应用的基本方法, 并能综合运用本科阶段所学软、硬件知识分析实际问题, 提高解决毕业设计实际问题的能力, 为单片机应用和开发打下良好的基础。
对字符液晶显示模块的工作原理, 如初始化、清屏、显示、调用及外特性有较清楚的认识, 并会使用LCD(液晶显示模块)实现计算结果的显示;掌握液晶显示模块的驱动和编程, 设计LCD和单片机的接口电路, 以及利用单片机对液晶显示模块的驱动和操作;在充分分析内部逻辑的概念, 进行软件和调试, 学会使用, 并能够以其为平台设计出具有四则运算能力简易计算器的硬件电路和软件程序。
静态测试实验报告
静态测试实验报告静态测试实验报告引言静态测试是软件测试中的一种重要方法,通过对软件代码、文档、设计等进行检查和分析,发现潜在的问题和错误,以提高软件质量。
本实验旨在通过进行静态测试,评估一个简单的软件程序的质量,并提供相关的实验报告。
实验背景本次实验选择了一个简单的计算器程序作为测试对象。
该程序能够实现基本的四则运算功能,并具备一定的界面交互。
通过对该程序进行静态测试,我们可以了解在代码实现和设计方面是否存在问题,并进一步优化和改进。
实验过程1. 静态代码分析首先,我们对计算器程序的源代码进行静态代码分析。
通过阅读代码,我们可以发现以下几个问题:a. 变量命名不规范:部分变量命名不符合命名规范,不易于理解和维护。
b. 冗余代码:部分代码存在冗余,影响代码的可读性和性能。
c. 逻辑错误:部分代码中存在逻辑错误,导致程序运行结果不符合预期。
2. 文档评估除了对源代码进行分析,我们还评估了计算器程序的相关文档,包括用户手册和设计文档。
通过评估,我们发现以下问题:a. 用户手册不完善:用户手册中缺少对程序使用方法的详细说明,对用户来说不够友好。
b. 设计文档不清晰:设计文档中对程序的架构和模块划分描述不够清晰,不利于后续的维护和扩展。
实验结果基于以上的静态测试分析,我们得出了以下实验结果:1. 代码优化:针对代码中的变量命名不规范和冗余代码问题,我们进行了优化和改进。
通过重新命名变量和删除冗余代码,提高了代码的可读性和性能。
2. 逻辑修复:通过对逻辑错误的分析和修复,我们确保了程序运行结果的正确性。
3. 文档改进:根据对用户手册和设计文档的评估,我们对文档进行了改进和完善。
添加了详细的使用说明和清晰的架构描述,提升了用户体验和程序的可维护性。
讨论与总结静态测试是软件测试中的重要环节,通过对软件代码和文档的分析,可以发现潜在的问题和错误,提高软件的质量和可维护性。
本次实验中,我们对一个简单的计算器程序进行了静态测试,并根据测试结果进行了优化和改进。
计算器软件测试报告
希望对大家有所帮助.名谢您的浏览!江西工业职业技术学院毕业综合实践课题名称: 安卓手机计算器作者:廖杰学号:20112715分院:电子与信息工程分院______________ 专业:计算机网络技术 ________________ 指导老师:占华为专业技术职务讲师2013年11月14日一、问题描述:用Java实现求两整数的加、减、乘、除运算结果,要求两整数的范圉都是[0,100]。
从键盘输入数m,数n,判断他们的范围,若不在[0, 100]范围内,则输出提示语,要求重新输入,并且在做除法运算时,当除数为0时,输出提示语, 说明除数不能为0。
将两数的范围定在[0, 100],以更好的进行边界值分析,等价类测试等黑盒测试方法;为充分体现口盒测试的特点,有些地方故意用了辻-else语句,wh订e 循环;另外,力口、减、乘、除运算分别用了四个函数来计算,这样既可以在主函数中调用,乂可以在Junit 框架中分别对这四种运算进行测试。
二.程序源代码:1. 2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23. import java .util.Scanner;public class Computer {private int a;private int b;public Computer (int x, int y) / '构造函数,初始化b=y;}public double add()//注意:Juint中需要输入测试值在0~100范用内〃加法return a+b;}public double minus(){return a-b;}public double multiplyOreturn a*b;}public double divide()〃减法//乘法//除法,要求除数不能为0,否则输岀提示语if(b!=0) return a/b ; elseSystem, out. printin (“除数不能为0! ”); return 0;public static void main(StringEl args) Scanner scanner = null ;scanner = new Scanner(System. in);System, out. print In (“ 请输入 O'lOO 的两个 m, n 整数:");System, out. println("请输入第一个数:”);while (true) { //若输入值不任要求范I 付内,则有循环直到输入匸确为止 int m= scanner ・nextint 0 ;if (m>=0&&m<=100)System, out. print In in 输入第二个数:"); while(true){int n = scanner ・nextlnt();if(n>=0&&n<=100)Computer cpt=new Computer(m, n); System, out. printing 运算结果是:");System. out ・ println("力2去:"+m+"+"+n+"二"+cpt ・ add0); System. out. printin ("减》去:一"+n+"二"+cpt ・ minus 0);Syste m ・ out ・ print In ("乘扌去:“*"+n+"二"+cpt ・ multiplyO ; System ・ our ・ printin ("除[去:"+m+"/"+n+"二"+cpt ・ divideO); } elseSystem, out. print ("输入n 值不在要求区间,请重新输入n : \n"); } } elseSystem, out. print ("输入m 值不在要求区间,请重新输入m : \n"); } }1、边界值测试:1.K 边界值分析:输入要求是o'loo 之间的整数,因此产生了 o 和loo 两个边界,边界值分析 可产生 4*2+1 二9 个测试用例。
windows计算器_测试报告
Windows计算器测试报告共4页拟制年月日审核年月日会签年月日批准年月日1 范围本文档适用于windows计算器的功能测试。
1.2 系统概述Windows 系统自带的计算器软件,具有执行简单的计算、科学计算、统计计算、在标准型和科学型间转换数据等功能。
1.3 文档概述本文档用于对windows计算器的测试工作阶段成果的描述。
包括对软件测试的整体描述,软件测试的分类和级别,软件测试的过程描述,软件测试的结果等内容。
2 引用文档《计算器软件帮助文档》3 测试概述本次测试主要为功能测试和简单的界面测试。
功能测试部分运用QTP测试了计算器的最主要功能:简单的计算。
其他功能和界面测试都由人工手动测试。
3.1被测软件的基本概况使用的编程语言:VB3.1.1. 测试小结本次测试共分为两个阶段:第一阶段为用测试工具测试计算器的主要功能;第二阶段为手动测试计算器的次要功能和简单界面测试。
3.1.1.1 功能测试小结功能测试使用的测试工具QTP为windows计算器进行测试。
总共测试脚本:4个。
分别是加、减、乘、除,全部由测试人员人工设计。
总共的测试用例数:16个。
全部由测试人员人工设计。
这几组用例分别对应操作数为整数、小数、正负数、0等各种情况。
经过测试发现的软件缺陷有0个。
下图为QTP中关键测试数据的截图乘法:除法:加法:减法:3.1.1.2 其他功能测试小结其他功能测试和简单界面测试主要以测试人员手工测试为主,具体测试用例参考《计算器用例测试设计》文档。
总共测试用例数:30个,全部由测试人员设计通过此项测试没有发现任何软件缺陷。
3.1.2 测试记录a 测试时间:2009年12月20日至2009年12月20日。
b 地点:东软。
c 硬件配置:core 2 CPU/2.1G,内存2G,硬盘20Gd 软件配置:Windows XPe 被测软件版本号:5.1f 所有测试相关活动的日期和时间、测试操作人员等记录见软件测试记录文档。
白盒测试 实验报告
白盒测试实验报告白盒测试实验报告引言:白盒测试是软件测试中常用的一种测试方法,它通过分析程序的内部结构和逻辑,以验证软件的正确性和稳定性。
本实验旨在通过对一个简单的计算器程序进行白盒测试,探索白盒测试的原理和方法,并评估其在软件开发中的实际应用价值。
实验设计:本实验使用了一个基于Python的计算器程序作为被测试对象,该程序具有加、减、乘、除等基本运算功能。
实验设计包括了以下几个步骤:1. 程序结构分析:通过查看程序的源代码,了解程序的整体结构和模块之间的关系,为后续的测试设计提供依据。
2. 程序覆盖率分析:使用代码覆盖率工具对程序进行分析,确定测试用例需要覆盖的代码行数和分支情况,以提高测试的全面性和准确性。
3. 测试用例设计:根据程序的功能和结构特点,设计一系列测试用例,包括正常输入、边界值和异常情况等,以覆盖不同的测试场景。
4. 测试执行:按照设计的测试用例,逐个执行测试,并记录测试结果和执行过程中的问题和异常情况。
5. 结果分析:对测试结果进行分析,评估程序的稳定性和正确性,并提出改进建议。
实验过程:1. 程序结构分析:通过阅读源代码,了解到该计算器程序由界面层、逻辑层和数据层三个模块组成,各模块之间通过接口进行通信。
这样的结构设计使得程序的扩展和维护更加方便。
2. 程序覆盖率分析:使用代码覆盖率工具对程序进行分析,发现在逻辑层中有几个分支未被覆盖到,这可能导致在某些特定情况下程序出现错误。
因此,在测试用例设计中,需要特别关注这些分支情况。
3. 测试用例设计:根据程序的功能和结构特点,设计了一系列测试用例。
例如,对于加法功能,设计了正常输入的测试用例,包括两个正整数相加、两个负整数相加、一个正整数和一个负整数相加等;同时,还设计了边界值测试用例,例如对于两个最大整数相加、两个最小整数相加等。
4. 测试执行:按照设计的测试用例,逐个执行测试。
在测试过程中,发现了一些问题,例如在除法功能中,当除数为0时,程序没有正确处理异常情况,导致程序崩溃。
软件测试实验报告总结
软件测试实验报告总结1. 引言软件测试是软件开发过程中至关重要的一环,通过对软件的各项功能进行测试,能够及早发现并修复潜在的问题,保障软件的质量。
本实验报告对进行的软件测试实验进行总结和分析,总结实验过程中所遇到的问题和解决方案,以及对实验结果的评估和反思。
2. 实验概述本次实验旨在利用软件测试技术对一款简单的计算器应用进行功能和性能测试。
具体实验过程如下:1.分析计算器应用的功能需求,确定测试用例和测试计划。
2.开展功能测试,验证计算器应用在各种输入情况下的正确性。
3.进行性能测试,测试计算器应用在大量计算情况下的运行效率和稳定性。
4.分析测试结果,评估计算器应用的质量,并提出改进意见。
3. 实验过程3.1 功能测试功能测试是对计算器应用的各项功能进行逐个验证的过程。
我们设计了一系列测试用例涵盖了计算器应用的基本功能,包括加法、减法、乘法、除法等运算。
在每个测试用例中,我们分别测试了各种输入情况,包括正数、负数、零以及特殊符号的情况。
通过运行测试用例,我们验证了计算器应用在各种输入情况下的计算结果是否正确。
3.2 性能测试性能测试旨在测试计算器应用在大量计算情况下的运行效率和稳定性。
我们设计了一组性能测试用例,包括对大整数的加法、乘法等运算,以及对大量连续运算的测试。
通过运行性能测试用例,我们评估了计算器应用在高负载情况下的性能表现,并发现了一些潜在的问题。
3.3 测试结果分析通过功能测试和性能测试,我们对计算器应用的质量进行了评估。
在功能测试中,我们发现计算器应用在大多数情况下能够正确计算结果,但在某些特殊输入情况下出现了错误。
在性能测试中,我们发现计算器应用在大量连续运算的情况下,运行效率较低,且有时会出现意外的崩溃情况。
4. 问题与解决方案4.1 功能测试问题在功能测试过程中,我们遇到了一些问题,例如计算器应用在处理除法时对零的处理不正确。
为了解决这个问题,我们分析了计算器应用的代码,发现了对零除法的错误逻辑,并进行了相应的修改和重新测试。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
江西工业职业技术学院毕业综合实践课题名称:安卓手机计算器作者:廖杰学号:20112715 分院:电子与信息工程分院专业:计算机网络技术指导老师:占华为专业技术职务讲师2013年 11 月 14日一、问题描述:用Java实现求两整数的加、减、乘、除运算结果,要求两整数的范围都是[0,100]。
从键盘输入数m,数n,判断他们的范围,若不在[0,100]范围内,则输出提示语,要求重新输入,并且在做除法运算时,当除数为0时,输出提示语,说明除数不能为0。
将两数的范围定在[0,100],以更好的进行边界值分析,等价类测试等黑盒测试方法;为充分体现白盒测试的特点,有些地方故意用了if-else语句,while循环;另外,加、减、乘、除运算分别用了四个函数来计算,这样既可以在主函数中调用,又可以在Junit框架中分别对这四种运算进行测试。
二、程序源代码:1. import java.util.Scanner;2. public class Computer {3. private int a;4. private int b;5. public Computer (int x,int y) //构造函数,初始化6. {7. a=x; //注意:Juint中需要输入测试值在0~100范围内8. b=y;9. }10. public double add() //加法11. {12. return a+b;13. }14. public double minus() //减法15. {16. return a-b;17. }18. public double multiply() //乘法19. {20. return a*b;21. }22. public double divide() //除法,要求除数不能为0,否则输出提示语23. {24. if(b!=0)25. return a/b;26. else27. System.out.println("除数不能为0!");28. return 0;29. }30. public static void main(String[] args)31. {32. Scanner scanner = null;33. scanner = new Scanner(System.in);34. System.out.println("请输入0~100的两个m,n整数:");35. System.out.println("请输入第一个数:");36. while(true){ //若输入值不在要求范围内,则有循环直到输入正确为止37. int m = scanner.nextInt();38. if(m>=0&&m<=100)39. {40. System.out.println("请输入第二个数:");41. while(true){42. int n = scanner.nextInt();43. if(n>=0&&n<=100)44. {45. Computer cpt=new Computer(m,n);46. System.out.println("运算结果是:");47. System.out.println("加法:"+m+"+"+n+"="+cpt.add());48. System.out.println("减法:"+m+"-"+n+"="+cpt.minus());49. System.out.println("乘法:"+m+"*"+n+"="+cpt.multiply();50. System.out.println("除法:"+m+"/"+n+"="+cpt.divide());51. }52. else53. System.out.print("输入n值不在要求区间,请重新输入n:\n");54. }55. }56. else57. System.out.print("输入m值不在要求区间,请重新输入m:\n");58. }59. }60. }三、黑盒测试:1、边界值测试:1.1、边界值分析:输入要求是0~100之间的整数,因此产生了0和100两个边界,边界值分析可产生4*2+1=9个测试用例。
可构造(50,0)、(50,1)、(50,50)、(50,99)、(50,100)、(0,50)、(1,50)、(99,50)、(100,50) 这9组测试用例。
表1 边界值分析测试用例用例m n 预期输出(+、-、*、/) 实际输出(+、-、*、/)1 50 0 50.0、50.0、0.0、除数不为0!50.0、50.0、0.0、0.02 50 1 51.0、49.0、50.0、50.0 51.0、49.0、50.0、50.03 50 50 100.0、0.0、2500.0、1.0 100.0、0.0、2500.0、1.04 50 99 149.0、-49.0、4950.0、0.505 109.0、-9.0、2950.0、0.50505050505050515 50 100 150.0、-50.0、5000.0、0.5 150.0、-50.0、5000.0、0.56 0 50 50.0、-50.0、0.0、0.0 50.0、-50.0、0.0、0.07 1 50 51.0、-49.0、50.0、0.02 51.0、-49.0、50.0、0.028 99 50 149.0、49.0、4950.0、1.98 149.0、49.0、4950.0、1.989 100 50 150.0、50.0、500.0、2.0 150.0、50.0、500.0、2.0在该测试时,发现(50,0)这个测试的除法的预期输出和实际输出不一致,是因为代码中return 0;当除数n=0时,实际返回的是0.0。
public double divide(){if(b!=0)return a/b;elseSystem.out.println("除数不能为0!");return 0; //出现Bug}1.2健壮性测试:健壮性测试可产生6*2+1=13个测试用例,在上面边界值分析测试用例的基础上再添加(50,-1)、(50,101)、(-1,50)、(101,50)这4个测试用例即可。
表2 健壮性测试用例用例m n 预期输出(+、—、*、/)实际输出10 50 -1 49.0、51.0、-50.0、-50.0 输入n值不在要求区间11 50 101 151.0、-51.0、5050.0、0.495 输入n值不在要求区间12 -1 50 49.0、-51.0、-50.0、-0.02 输入m值不在要求区间13 101 50 151.0、51.0、5050.0、2.02 输入m值不在要求区间2、等价类测试:规定了输入值m,n的范围[0,100],则变量的有效等价类:M1={m:0≤m≤100}N1={n:0≤n≤100}变量的无效等价类:M2={m:m≤0}M3={m:m≥100}N2={n:n≤0}N3={n:n≥0}2.1、弱一般等价类测试:该测试可用每个等价类的一个变量实现,可生成1个测试用例。
2.2、强一般等价类测试:该测试基于多缺陷假设,需要1*1=1个测试用例。
表3 强、弱一般等价类测试用例用例m n 预期输出(+、—、*、/)实际输出WN1,SN150 50 100.0、0.0、2500.0、1.0100.0、0.0、2500.0、1.0 2.3、弱健壮等价类测试:该测试基于单缺陷假设,不仅对有效值测试,还考虑了无效值,可生成1+2+2=5个测试用例。
表 4 弱健壮等价类测试用例用例m n 预期输出(+、—、*、/)实际输出WR150 50 100.0、0.0、2500.0、1.0100.0、0.0、2500.0、1.0 WR250 -1 49.0、51.0、-50.0、-50.0输入n不在要求区间WR3 50 101 151.0、-51.0、5050.0、0.495 输入n不在要求区间WR4 -1 50 49.0、-51.0、-50.0、-0.02 输入m不在要求区间WR5 101 50 151.0、51.0、5050.0、2.02 输入m不在要求区间2.4、强健壮等价类测试:该测试基于多缺陷假设,从所有等价类笛卡尔积的每个元素中获得测试用例,可生成(1+2)*(1+2)=9个测试用例。
表5 弱健壮等价类测试用例用例m n 预期输出(+、—、*、/)实际输出SR1-1 -1 -2.0、0.0、1.0、1.0输入m值不在要求区间SR2-1 50 49.0、-51.0、-50.0、-0.02 输入m值不在要求区间SR3 -1 101 100.0、-102.0、-101.0、0099输入m值不在要求区间SR4 50 -1 49.0、51.0、-50.0、-50.0输入n值不在要求区间SR5 50 50 100.0、0.0、2500.0、1.0 100.0、0.0、2500.0、1.0 SR6 50 101 106.0、-51.0、5050.0、0.495输入m值不在要求区间SR7 101 -1 100.0、102.0、-101.0、-101.0输入m值不在要求区间SR8 101 50 151.0、51.0、5050.0、20.2输入m值不在要求区间SR9 101 101 202.0、0.0、10201.0、1.0输入m值不在要求区间3、因果图:C1:输入m值在[0,100]内 C2:输入n值在[0,100]内e1:输出结果 e2:输入m值不在区间 e3:输入n值不在区间3.基于决策表的测试:变量的有效等价类:M1={m:0≤m≤100}N1={n:0≤n≤100}变量的无效等价类:M2={m:m≤0}M3={m:m≥100}N2={n:n≤0}N3={n:n≥0}表6 基于决策表的测试用例桩 1 2 3 4C1:第一个数在:C2:第二个数在:M1N1M1N2,N3M2,M3N1M2,M3N2,N3 C1e1e2C2e3mA1:正常输出结果:A2:输入m值不在要求区间,重新输入A3:输入n值不在要求区间,重新输入XXX XX二、白盒测试:1.测试覆盖指标:流程图:afF TbdFF Tc1.1、语句覆盖:每个可执行的语句必须至少执行一次,则测试用例:表 7 语句覆盖测试用例测试用例通过路径条件取值m1=-1,m2=1;n1=101,n2=99 a,f,b,d,c F1,T1,F2,T2入口m>=0&&m<=100执行语句块1n>=0&&n<=100执行语句块2出口执行语句块4执行语句块5执行语句块31.2、(判定)分支覆盖:每个判定必须至少获得一次“真”值和“假”值,则测试用例:表 8(判定)分支覆盖测试用例通过路径条件取值m=1,n=99 a,b,c T;Tm1=-1,m2=1,n=99 a,f,b,c F1,T1;T2m=1,n1=-1,n2=99 a,b,d,c T;F1,T1m1=-1,m2=1;n1=101,n2=99 a,f,b,d,c F1,T1;F2,T2 1.3、条件判定覆盖:每个判定中的每个条件的所有可能值(真/假)至少出现一次并且每个判定本身的结果(真/假)也至少出现一次,则测试用例:表 9 条件判定覆盖测试用例通过路径条件取值m=1,n=99 a,b,c T,T1.4、路径覆盖:测试用例要求覆盖所有可能的路径:表10 路径覆盖测试用例通过路径条件取值m1=-1,m2=1;n1=101,n2=99 a,f,b,d,c F1,T1,F2,T22.基路径测试:(为简便画图,开始点从主要代码第36行开始,其他无分支节点用省略号表示)1(从节点1到节点36)...(从节点43到51) ...所以:圈复杂度V(G)= 54个独立路径为:P1:1,...,36,37,38...42,43...54,55,58,59,60P2:1,...,36,37,56,57,58,59,60P3:1,...,36,37,38...42,52,53,54,55,58,59,60P4:1,...,36,37,38...42,43...54,42,52,53,54,55,58,59,60 P5:1,...,36,37,56,57,58,36,37,56,57,58,59,6051 53585960365443 52424157403938 563755三、Junit动态测试:import junit.framework.TestCase; //引入Junit框架中所有类public class ComputerTest extends TestCase {private Computer a; //定义变量private Computer b;private Computer c;private Computer d;public ComputerTest (String name) {super(name); //构造函数,使用super关键字直接引用父类TestCase的构造函数}protected void setUp() throws Exception {super.setUp(); //建立环境,可以进行一些测试数据的初始化,还可以把数据库联接写在此处,以减少重复性工作,提高效率a = new Computer(1,99);b = new Computer(101,5);c = new Computer(1,2);d = new Computer(1,0);}protected void tearDown() throws Exception {super.tearDown();}public void testComputer() {int x=1;int y=1;assertSame(x,y); //assertSame() }public void testAdd() { //加法测试assertEquals(100.0, a.add());}public void testAdd1() {assertEquals(106.0, b.add()); //输入值超出要求范围 ,测试失败,因为要求0~100范围,所以,在构造Computer()函数时,要规定变量x,y的范围}public void testMinus() { //减法测试assertEquals(-89,a.minus()); //预期值和结果不相等,测试失败}public void testMinus1() {assertEquals(-89.0,a.minus());}public void testMultiply() {assertEquals(2.0,c.multiply());}public void testMultiply1() {Object tx = null;try{assertEquals(2.0,c.multiply());//c.multiply()的正常结果是2.0,所以在此不应抛出异常fail("should have thrown an exception"); //上面不抛出异常,不执行fail()}catch (Exception e) {tx = e;}assertNotNull(tx); //断言tx不为空,则一定有异常}public void testDivide() {assertEquals(0.0,d.divide()); //因divide()函数中,当d=0时,返回0.0,所以这里测试应该成功,虽然希望得到“被除数不能为0!”的情况}public void testDivide1() {assertEquals(0.5, c.divide());}public void testEmpty(){try{c.divide();fail("should have thrown an exception ");}catch(RuntimeException Ex){assertTrue(true); //assertTrue(true);}}}截图:(1)、测试testAdd1()时,由于b=newComputer(101,5);assertEquals(106.0, b.add());输入值范围超出定义范围,测试异常;(2)、测试testMinus()时,assertEquals(-89,a.minus());预期值和实际值不相同,测试异常;(3)、测试testMultiply()时,断言不为空,抛出异常Junit集成测试:在Junit中,Test Case总是对所有方法进行测试,而Test Suite中可对其中的一部分方法测试,而且一个测试类中还可以包含其他测试类。