计算器测试用例
- 格式:doc
- 大小:102.00 KB
- 文档页数:4
单元测试1引言1.1编写目的根据Windows XP记事本的帮助文档,制定对Windows XP记事本的测试用例。
该计划用来测试记事本功能。
包括:界面设计、输入输出、内部等。
根据本次测试来评估当前的记事本是否符合设计要求和使用要求,并进而做出测试分析报告。
1.2背景说明:a.测试计划所从属的软件系统:Windows XP;b.在开始执行本测试计划之前必须完成的工作:需要阅读有一个记事本的帮助文档。
1.3定义记事本,用来记录各类事情的小册子。
在windows操作系统中是一个简单的文本编辑器。
自从1985年发布的Windows 1.0开始,所有的Microsoft Windows 版本都内置这个软件另外还有名为《记事本》的电影、歌曲。
1.4参考资料用到的参考资料:a. Windows 记事本的帮助文档2计划2.1软件说明以下的图表是用来说明被测软件的功能来作为叙述测试计划的提纲。
2.2测试内容列出组装测试和确认测试中的每一项测试内容的名称标识符、这些测试的进度安排以及这些测试的内容和目的,例如模块功能测试、接口正确性测试、数据文卷存取的测试、运行时间的测试、设计约束和极限的测试等。
具体的测试内容如下:(1)功能测试:对测试对象的功能测试。
该测试目标是核实数据的接受,处理和检索是否正确。
此类测试基于黑盒测试技术,该技术通过图形界面与应用程序进行交互,并对交互的输出和结果进行分析,以此来核实应用程序及其内部进程。
(2)用户界面测试:测试界面之间是否能完成相互转换。
(3)性能测试:测试该记事本的响应时间,以及事务处理速率和其他与时间相关的需求进行评测和评估2.3测试1(RW011新建)设计者创建日期2012-05-07 设计状态初稿用例类型手工操作用例描述在windows2007环境下,测试新建一个空白txt文档目的验证能实现新建空白txt文档的功能前提条件记事本系统可用测试步骤及输入:结果:步骤1 点击开始-所有程序-附件-记事本成功进入记事本系统步骤2 在记事本系统界面,点击文件-新建(ctrl+N)新建一个空白文档步骤3 在编辑区域输入1310906 显示出入值:123456步骤4 在编辑区域输入冉维显示出入值:冉维步骤5 在编辑区域输入ranwei 显示出入值:ranwei步骤6 在编辑区域输入@#$%^& 显示出入值:@#$%^&步骤7 点击文件-新建(ctrl+N)系统提示::点击是保存,点击否不保存,点击取消撤销新建功能步骤8 在桌面点击右键,选择新建-文本文档桌面新建一个,双击打开为空白文档RW012打开RW013保存或另存为RW014页面设置和打印”系统提示“步骤2 打开文件-打印(Ctrl+P)”2.3.1进度安排预计总测试时间(7天)2.3.2测试资料本项测试所需的资料:1. 计算器帮助文档;2. Microsoft公司的Windows XP下的计算器2.4测试2 (RW021编辑)RW02编辑RW021编辑软件记事本系统模块名称编辑名称设创建日期2012-05-07 计者设计初稿用例类型手工状态用例描述在windows2007环境下,测试编辑一个空白txt文档目的验证能对记事本进行操作前提条件记事本系统可用测试步骤及输入:结果:步骤1在编辑区域输入1310906 显示出入值:123456 步骤2在编辑区域输入冉维显示出入值:冉维步骤3在编辑区域输入ranwei 显示出入值:ranwei 步骤4在编辑区域输入@#$%^& 显示出入值:@#$%^&步骤5 点击编辑-撤销(Ctrl+Z)显示内容:ranwei步骤6 点击编辑-剪切(Ctrl+X),选中的内容是ranwei选中内容消失步骤7 点击编辑-复制(Ctrl+C),选中的内容是ranwei选中内容没变化步骤8 点击编辑-粘贴(Ctrl+V),选中的内容是ranwei显示内容:ranweiranwei步骤9 点击编辑-删除(Del),选中的内容是ranwei显示内容:ranwei步骤10 点击编辑-查找(Ctrl+F),查找内容r显示内容:r字符蓝色标记步骤11 点击编辑-查找下一个(F3),查找内容r显示内容:选择一次,则r相应的而后一个字符转变为蓝色,没有则显示步骤12 点击编辑-替换(Ctrl+H),第一个r替换为w显示内容:wanwei步骤13 点击编辑-全选(Ctrl+A)显示内容:wanwei,字体颜色全部变为蓝色步骤14 点击编辑-时间/日期(F5)显示内容:2.4.1测试资料本项测试所需的资料:1. 计算器帮助文档;2. Microsoft公司的Windows XP下的记事本2.5测试3 (RW03格式)RW03格式RW031自动换行软件名称记事本系统模块名称自动换行设计者创建日期2012-05-07 设计状态初稿用例类型手工用例描述在windows2007环境下,测试新建一个空白txt文档目的实现”自动换行”和”非自动换行”的状态间切换功能前提条件记事本系统可用测试步骤及输入:结果:步骤1 打开记事本,选择格式下的自动换行换行成功步骤2 在空白区域里输入的汉字超过一行字的范围,点击自动换行换行成功步骤3 选中在空白区域所编辑的数据。
测试用例测试题
以下是一份简单的测试用例,以及相应的测试题,以供参考:
测试用例:检查一个计算器程序的基本运算功能
测试题:
1. 计算器的基本功能测试:
a. 输入 2 + 2,检查输出是否为 4
b. 输入 5 - 3,检查输出是否为 2
c. 输入 10 2,检查输出是否为 20
d. 输入 8 / 2,检查输出是否为 4
e. 输入 2 ^ 3,检查输出是否为 8
2. 异常处理测试:
a. 输入一个非数字字符,检查程序是否能够提示用户输入错误
b. 输入一个非常大的数字,检查程序是否能够处理溢出情况
c. 输入一个非常小的数字,检查程序是否能够处理下溢情况
3. 其他功能测试:
a. 检查计算器是否支持括号运算,例如输入 (2 + 2) 3,检查输出是否为 12
b. 检查计算器是否支持科学记数法运算,例如输入,检查输出是否为12300
c. 检查计算器是否支持小数运算,例如输入 2,检查输出是否为
d. 检查计算器是否支持负数运算,例如输入 -5 + -3,检查输出是否为 -8
e. 检查计算器是否支持百分数运算,例如输入 50% + 30%,检查输出是否为 80%
请根据以上测试题进行测试,并记录测试结果。
如果程序能够通过所有测试题,则说明程序基本功能正常。
如果程序在某一道测试题上出现错误或异常情况,则需要进行相应的调试和修复。
一、测试目的设计测试用例、使用各种测试方法进行计算器的测试,并对测试结果进行分析二、测试内容1.软件说明:实现一个小的计算器程序,只需要完成加、减、乘、除运算,设计测试用例,并对测试结果进行分析,同时计算器运行稳定。
2、设计测试用例3、执行测试4、测试结果分析5、源代码三、测试步骤(一)、计算器界面2、设计测试用例(1)等价类测试:1、4个等价类测试用例的分析过程如下:测试用例加减乘除预期输出整型55+50 78-24 15*25 36/4 正常运算小数25.3+12.7 14.3-11.7 25.6*12.8 50.2/20.7 正常运算负数-20+-21 (-15)-(-14) -12*-12 -16/-5 正常运算无效输入E1+t2 G4-k5 I5*l6 Ff/se 非法操作无法输入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)程序中无效数字无法正常输入,程序无法进行。
(同上)5.(2)边界值法设计测试:加法:1、计算器4个标准等价类测试用例的分析过程如下:测试用例被加数加数预期输出Test1 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 正常运算Test11 10 55.5 正常运算Test12 10 -78 正常运算Test13 10 100 正常运算Test14 10 101 正常运算2、对应测试与结果:测试结果运算均属正常,对应的部分的示图如下:Test1结果:Test2结果:Test3结果:Test4结果:Test5结果:Test6结果:减法:测试用例被减数减数预期输出Test1 0 10 正常运算Test2 1 10 正常运算Test3 40 10 正常运算Test4 55.5 10 正常运算Test5 -78 10 正常运算Test6 100 10 正常运算Test7 101 10 正常运算Test8 10 0 不能运算Test9 10 1 正常运算Test10 10 40 正常运算Test11 10 55.5 正常运算Test12 10 -78 正常运算Test13 10 100 正常运算Test14 10 101 正常运算2、对应测试与结果:测试结果运算均属正常,对应的部分的示图如下:Test1结果:Test3结果:Test4结果:Test5结果:Test6结果:乘法1测试用例被乘数乘数预期输出Test1 0 50 正常运算Test2 1 5 正常运算Test3 24 10 正常运算Test4 55.5 10 正常运算Test5 -78 10 正常运算Test6 100 10 正常运算Test7 101 10 正常运算Test8 10 0 不能运算Test9 10 1 正常运算Test10 10 40 正常运算Test11 10 55.5 正常运算Test12 10 -78 正常运算Test13 10 100 正常运算Test14 10 101 正常运算2、对应测试与结果:测试结果运算均属正常,对应的部分的示图如下:Test1结果:Test3结果:Test4结果:Test5结果:Test6结果:除法1测试用例被除数除数预期输出Test1 0 10 正常运算Test2 1 10 正常运算Test3 40 10 正常运算Test4 55.5 10 正常运算Test5 -78 10 正常运算Test6 100 10 正常运算Test7 101 10 正常运算Test8 10 0 正常运算Test9 10 1 正常运算Test10 10 40 正常运算Test11 10 55.5 正常运算Test12 10 -78 正常运算Test13 10 100 正常运算Test14 10 101 正常运算2、对应测试与结果:对应的部分的示图如下:Test1结果:Test2结果:Test3结果:Test8结果:附录:源代码CCalculateDlg::CCalculateDlg(CWnd* pParent /*=NULL*/){//{{AFX_DA TA_INIT(CCalculateDlg)m_parameter = 0.0;//}}AFX_DA TA_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_DA TA_MAP(CCalculateDlg)DDX_Text(pDX, IDC_EDIT, m_parameter);//}}AFX_DA TA_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_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_SEPARA TOR);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 icondc.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 here }void 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;}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;}else{CalculatePara = 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;}else{CalculatePara = 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;}elseCalculatePara = 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++;m_parameter = CalculatePara;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;Sumpoint = 0;UpdateData(false);// TODO: Add your control notification handler code here }。
简述判定表法设计用例步骤判定表法是一种用于设计测试用例的有效方法,它可以帮助测试人员针对复杂的业务规则设计出全面的测试用例。
本文将介绍判定表法的基本步骤,以及如何应用该方法来设计测试用例。
下面是本店铺为大家精心编写的4篇《简述判定表法设计用例步骤》,供大家借鉴与参考,希望对大家有所帮助。
《简述判定表法设计用例步骤》篇1一、判定表法的基本步骤判定表法是一种用于设计测试用例的方法,它通常分为以下几个步骤:1. 识别条件和动作测试人员需要先了解业务规则,识别出所有可能的条件和动作。
条件是指影响业务规则执行的因素,动作是指在条件满足时需要执行的操作。
2. 生成判定表根据识别出的条件和动作,测试人员可以生成一个判定表。
判定表通常由四个部分组成,即条件桩、条件项、动作桩和动作项。
条件桩列出决定一组条件的对象,条件项列出各种可能的条件组合,动作桩列出所有的操作,动作项列出在对应的条件组合下的动作。
3. 简化判定表在生成判定表后,测试人员需要对其进行简化。
如果表中有两条或多条规则具有相同的动作,并且其条件项之间存在极为相似的关系,我们就可以将其合并。
4. 转化为测试用例每一条规则都可以转化为测试用例。
测试人员可以根据判定表中的规则,设计出对应的测试用例,以覆盖所有的业务规则。
二、应用判定表法设计用例的案例以一个交易所的手续费计算规则为例,根据交易金额和每股价格和股数的关系,手续费分为三种情况:1. 如果交易金额少于 1000 元,则基本手续费为交易金额的8.4%;2. 如果交易总金额在 1000 元~10000 元之间,则基本手续费为交易金额的 5%,再加 34 元;3. 如果金额超过 10000 元,则基本手续费为交易金额的 4% 加上 134 元。
当每股售价低于 14 元时,附加手续费为基本手续费的 5%,除非买进、卖出的股数不是 100 的倍数,在这种情况下附加手续费的9%。
当每股售价在 14 元到 25 元之间时,附加手续费为基本手续费的某个百分比。
windows自带计算器黑盒测试文档课程名称软件质量保证与测试实验项目名称黑盒测试方法测试计算器的测试文档2009年 11月12 日 6-7节实验时间 2009年 11月19 日 6-7节 (日期及节次) 2009年 11月26 日 6-7节专业软件工程学生所在学院软件学院年级 2006级学号 200608180姓名马小强指导教师金虎实验室名称软件学院第四实验室附加:综合实验预习情况操作技术实验报告创新能力综合成绩实验成绩教师签字黑龙江大学教务处测试计划(GB8567——88) 1引言1.1编写目的根据Windows XP计算器的帮助文档,制定对Windows XP计算器的测试用例。
该计划用来测试计算器功能。
包括:界面设计、输入输出、内部计算等。
根据本次测试来评估当前的计算器是否符合设计要求和使用要求,并进而做出测试分析报告。
1.2背景说明:a( 测试计划所从属的软件系统:Windows XP;b( 在开始执行本测试计划之前必须完成的工作:需要阅读有一个计算器的帮助文档。
1.3定义各种进制:十六进制,八进制,十进制,二进制1.4参考资料用到的参考资料:a( 软件开发标准:GB8567。
b( Windows 计算器的帮助文档c( 《软件测试教程》宫云站机械工业出版社 2008年9月 2计划2.1软件说明以下的图表是用来说明被测软件的功能来作为叙述测试计划的提纲。
序号模块名软件功能描述1 执行简单计算进行简单的加,减,乘,除,的计算2 执行科学计算进行科学计算(包括各种进制的计算)2.2测试内容列出组装测试和确认测试中的每一项测试内容的名称标识符、这些测试的进度安排以及这些测试的内容和目的,例如模块功能测试、接口正确性测试、数据文卷存取的测试、运行时间的测试、设计约束和极限的测试等。
具体的测试内容如下:(1)功能测试:对测试对象的功能测试。
该测试目标是核实数据的接受,处理和检索是否正确。
此类测试基于黑盒测试技术,该技术通过图形界面与应用程序进行交互,并对交互的输出和结果进行分析,以此来核实应用程序及其内部进程。
Python实现简单的四则运算计算器⼀、算法1、算法的主要思想就是将⼀个中缀表达式(Infix expression)转换成便于处理的后缀表达式(Postfix expression),然后借助于栈这个简单的数据结构,计算出表达式的结果。
2、关于如何讲普通的表达式转换成后缀表达式,以及如何处理后缀表达式并计算出结果的具体算法描述不在此叙述了,书上有详细的说明。
⼆、简易计算器使⽤说明使⽤该计算器类的简单⽰例如下:# usagec = Calculator()print('result: {:f}'.formart(c.get_result('1.11+2.22-3.33*4.44/5.55')))# output:result: 0.666000测试案例为了对这个计算器进⾏有效地检验,设计了⼏组测试案例,测试结果如下:Test No.1: (1.11) = 1.110000Test No.2: 1.11+2.22-3.33*4.44/5.55 = 0.666000Test No.3: 1.11+(2.22-3.33)*4.44/5.55 = 0.222000Test No.4: 1.11+(2.22-3.33)*(4.44+5.55)/6.66 = -0.555000Test No.5: 1.11*((2.22-3.33)*(4.44+5.55))/(6.66+7.77) = -0.852992Test No.6: (1.11+2.22)*(3.33+4.44)/5.55*6.66 = 31.048920Test No.7: (1.11-2.22)/(3.33+4.44)/5.55*(6.66+7.77)/(8.88) = -0.041828Test No.8: Error: (1.11+2.22)*(3.33+4.44: missing ")", please check your expressionTest No.9: Error: (1.11+2.22)*3.33/0+(34-45): divisor cannot be zeroTest No.10: Error: 12+89^7: invalid character: ^实现代码栈的实现栈实际上就是⼀个被限制操作的表,所有的操作只能在栈的顶端(⼊栈、出栈等),以下是使⽤Python代码实现的简单的栈:class Stack(object):"""The structure of a Stack.The user don't have to know the definition."""def __init__(self):self.__container = list()def __is_empty(self):"""Test if the stack is empty or not:return: True or False"""return len(self.__container) == 0def push(self, element):"""Add a new element to the stack:param element: the element you want to add:return: None"""self.__container.append(element)def top(self):"""Get the top element of the stack:return: top element"""if self.__is_empty():return Nonereturn self.__container[-1]def pop(self):"""Remove the top element of the stack:return: None or the top element of the stack"""return None if self.__is_empty() else self.__container.pop()def clear(self):"""We'll make an empty stack:return: self"""self.__container.clear()return self计算器类的实现在计算器类中,我们将表达式的合法性验证单独放在⼀个函数中完成,但是实际上如果需要,也可以直接放在中缀表达式转后缀表达式的函数中实现,这样只需要⼀次遍历表达式即可同时完成验证和转换⼯作。
实验三计算器功能测试预习报告(一)实验目的1.理解并掌握WinRunner的测试流程;2.掌握掌握数据驱动测试脚本编写方法;(二)实验内容1.识别windows计算器GUI对象;2.编写数据驱动测试脚本,分别测试windows计算器的加、减、乘、除运算。
(三)实验要求1.分别为windows计算器的加、减、乘、除运算设计测试用例,填写用例设计表;2.编写数据驱动测试脚本,使用Debug模式对脚本除错;实验报告(一)实验步骤一.加法代码:GUI_load("D:\\Program Files\\Mercury Interactive1\\WinRunner\\dat\\calc.gui");set_window ("‹¡ {— Vh ");table = "‹¡ {— Vh .xls";rc = ddt_open(table, DDT_MODE_READ);if (rc!= E_OK && rc != E_FILE_OPEN){pause("Cannot open table.");}ddt_get_row_count(table,table_RowCount);for(table_Row = 1; table_Row <= table_RowCount; table_Row ++){ddt_set_row(table,table_Row);button_press ("C");additive1=ddt_val(table,"additive1");additive2=ddt_val(table,"additive2");add1=length(additive1);while(add1>0)if(substr(additive1,add1,1)==" ")add1--;else break;i=1;while(i<add1)if(substr(additive1,i,1)==" ")i++;else break;additive11=substr(additive1,i,add1);for(i=1;i<=length(additive11);i++)button_press (substr(additive11,i,1));button_press ("+");if(additive2==""){additive2=additive11;}else{add2=length(additive2);while(add2>0)if(substr(additive2,add2,1)==" ")add2--;else break;i=1;while(i<len)if(substr(additive2,i,1)==" ")i++;else break;additive22=substr(additive2,i,add2);for(i=1;i<=length(additive22);i++)button_press (substr(additive22,i,1));}button_press ("=");edit_get_text("Edit",result);len=length(result);while(len>0)if(substr(result,len,1)==" "||substr(result,len,1)==".") len--;else break;i=1;while(i<len)if(substr(result,i,1)==" ")i++;else break;result=substr(result,i,len);if(int(additive1+additive2)==int(result))tl_step("testcase"&table_Row,0,additive1&"+"&additive2&"="&(additive1+additive2)&"is equal with result"&result&",correct.");elsetl_step("testcase"&table_Row,1,additive1&"+"&additive2&"="&(additive1+additive2)&"is not equal with result"&result&",incorrect.");}ddt_close(table);结果:二.减法代码:GUI_load("D:\\Program Files\\Mercury Interactive1\\WinRunner\\dat\\calc.gui");set_window ("‹¡ {— Vh ");table = "QÏ .xls";rc = ddt_open(table, DDT_MODE_READ);if (rc!= E_OK && rc != E_FILE_OPEN)pause("Cannot open table.");ddt_get_row_count(table,table_RowCount);for(table_Row = 1; table_Row <= table_RowCount; table_Row ++){ddt_set_row(table,table_Row);button_press ("C");additive1=ddt_val(table,"additive1");additive2=ddt_val(table,"additive2");add1=length(additive1);while(add1>0)if(substr(additive1,add1,1)==" ")add1--;else break;i=1;while(i<add1)if(substr(additive1,i,1)==" ")i++;else break;additive11=substr(additive1,i,add1);if(substr(additive11,1,1)=="-")for(i=2;i<=length(additive11);i++)button_press (substr(additive11,i,1));button_press("+/-");}elsefor(i=1;i<=length(additive11);i++)button_press(substr(additive11,i,1));button_press("-");if(additive2==""){additive2=additive11;}add2=length(additive2);while(add2>0)if(substr(additive2,add2,1)==" ")add2--;else break;i=1;while(i<len)if(substr(additive2,i,1)==" ")i++;else break;additive22=substr(additive2,i,add2);if(substr(additive22,1,1)=="-"){for(i=2;i<=length(additive22);i++)button_press (substr(additive22,i,1));button_press("+/-");}elsefor(i=1;i<=length(additive22);i++)button_press(substr(additive22,i,1));button_press ("=");edit_get_text("Edit",result);len=length(result);if(substr(result,len,1)==" "||substr(result,len,1)==".")len--;else break;i=1;while(i<len)if(substr(result,i,1)==" ")i++;else break;result=substr(result,i,len);add=additive1-additive2;len=length(add);while(len>0)if(substr(add,len,1)==" "||substr(add,len,1)==".")len--;else break;i=1;while(i<len)if(substr(add,i,1)==" ")i++;else break;add=substr(add,i,len);if(add==result)tl_step("testcase"&table_Row,0,additive1&"-"&additive2&"="&(additive1-additive2)&" is equal with result"&result&",correct.");elsetl_step("testcase"&table_Row,1,additive1&"-"&additive2&"="&(additive1-additive2)&" is not equal with result"&result&",incorrect.");}ddt_close(table);结果:三.乘法代码:GUI_load("D:\\ProgramFiles\\Mercury\\Interactive1\\WinRunner\\dat\\ca lc.gui");set_window ("计算器");table = "date7.xls";rc = ddt_open(table, DDT_MODE_READ);if (rc!= E_OK && rc != E_FILE_OPEN)pause("Cannot open table.");ddt_get_row_count(table,table_RowCount);for(table_Row = 1; table_Row <= table_RowCount; table_Row ++){ddt_set_row(table,table_Row);ddt_set_row(table,table_Row);button_press ("C");additive1=ddt_val(table,"additive1");additive2=ddt_val(table,"additive2");additi1=length(additive1);while(additi1>0)if(substr(additive1,additi1,1)==" ")additi1--;else break;i=1;while(i<additi1)if(substr(additive1,i,1)==" ")i++;else break;t_additive1=substr(additive1,i,additi1);if(substr(t_additive1,1,1)=="-"){for(i=2;i<=length(t_additive1);i++)button_press (substr(t_additive1,i,1));button_press("+/-");}elsefor(i=1;i<=length(t_additive1);i++)button_press(substr(t_additive1,i,1));button_press("*");if(additive2==""){additive2=t_additive1;}additi2=length(additive2);while(additi2>0)if(substr(additive2,additi2,1)==" ")additi2--;else break;i=1;while(i<len)if(substr(additive2,i,1)==" ")i++;else break;t_additive2=substr(additive2,i,additi2);if(substr(t_additive2,1,1)=="-"){for(i=2;i<=length(t_additive2);i++)button_press (substr(t_additive2,i,1));button_press("+/-");}elsefor(i=1;i<=length(t_additive2);i++)button_press(substr(t_additive2,i,1));button_press ("=");edit_get_text("Edit",result);len=length(result);while(len>0)if(substr(result,len,1)==" "||substr(result,len,1)==".")len--;else break;i=1;while(i<len)if(substr(result,i,1)==" ")i++;else break;result=substr(result,i,len);add=additive1*additive2;len=length(add);while(len>0)if(substr(add,len,1)==" "||substr(add,len,1)==".")len--;else break;i=1;while(i<len)if(substr(add,i,1)==" ")i++;else break;add=substr(add,i,len);if(add==result)tl_step("testcase"&table_Row,0,additive1&"*"&additive2&"="&(addit ive1*additive2)&" is equal with result"&result&",correct.");elsetl_step("testcase"&table_Row,1,additive1&"*"&additive2&"="&(addit ive1*additive2)&" is not equal with result"&result&",incorrect.");}ddt_close(table);结果:四.除法代码:GUI_load("C:\\Program Files\\Mercury Interactive\\WinRunner\\dat\\calc.gui"); set_window("计算器");table = "default.xls";rc = ddt_open(table, DDT_MODE_READ);if (rc!= E_OK && rc != E_FILE_OPEN)pause("Cannot open table.");ddt_get_row_count(table,table_RowCount);for(table_Row = 1; table_Row <= table_RowCount; table_Row ++){ddt_set_row(table,table_Row);button_press ("C");additive1=ddt_val(table,"additive1");additive2=ddt_val(table,"additive2");if(length(additive1)==0)additive1=0;elselen1=length(additive1);while(len1>0)if(substr(additive1,len1,1)==" ")len1--;elsebreak;j=1;while(j<len1)if(substr(additive1,j,1)==" ")j++;elsebreak;additive3=substr(additive1,j,len1);additive1=substr(additive1,j,len1);#if(length(additive2)==0)#additive2=additive3;#elselen2=length(additive2);while(len2>0)if(substr(additive2,len2,1)==" ")len2--;elsebreak;i=1;while(i<len2)if(substr(additive2,i,1)==" ")i++;elsebreak;additive2=substr(additive2,i,len2);additive4=substr(additive2,i,len2);if(length(additive2)==0){additive2=additive3;additive4=additive3;}for(j=1;j<=length(additive1);j++)button_press (substr(additive1,j,1));button_press ("/");if(substr(additive2,1,1)=="-"){additive2=substr(additive2,2,len2); for(i=1;i<=length(additive2);i++) button_press (substr(additive2,i,1));button_press ("+/-");}elsefor(i=1;i<=length(additive2);i++)button_press (substr(additive2,i,1));button_press ("=");edit_get_text("Edit",result);len=length(result);while(len>0)if(substr(result,len,1)==" "||substr(result,len,1)==".")len--;elsebreak;i=1;while(i<len)if(substr(result,i,1)==" ")i++;elsebreak;result=substr(result,i,len);if(additive4==0)tl_step("testcase"&table_Row,0,"the result is eror 输入错误 correct");else{if((additive3/additive4)==result)tl_step("testcase"&table_Row,0,"the result is"&(additive3/additive4)&"and"&(result)&",correct");elsetl_step("testcase"&table_Row,1,"the result is"&(additive3/additive4)&"and"&(result)&",incorrect");}}ddt_close(table);结果:(二)实验体会通过此实验让我们理解并掌握WinRunner的测试流程;掌握掌握数据驱动测试脚本编写方法;我们更加认识windows计算器GUI对象;深入了解测试用例的划分,分别为windows 计算器的加、减、乘、除运算设计测试用例。
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计算器的基本实现方法。
在实验过程中,我们遇到了一些问题,比如如何处理用户输入错误的情况,如何处理除数为零的情况等。
通过不断调试和改进,我们最终解决了这些问题,并实现了一个功能完善的计算器。
在今后的学习和工作中,我们可以进一步扩展这个计算器的功能,比如添加科学计算功能、实现复杂运算等。