实验04.使用基本路径测试法求解“自动售货机”问题
测试用例设计—自动售货机因果图分析
命题有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。
其规格说明如下:若投入5角钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。
若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。
分析根据该命题,我们可以分析出,自动售货机的业务中一共存在5个条件和5个结果,分别是: 条件:1.售货机有零钱找2.投入1元硬币3.投入5角硬币4.押下橙汁按钮5.押下啤酒按钮 结果:1.售货机〖零钱找完〗灯亮 当售货机中没有零钱的时候就有亮红灯2.退还1元硬币 当投入1元,而且售货机中没有零钱可找的时候3.退还5角硬币 当投入1元,而且售货机中有零钱可找的时候4.送出橙汁饮料5.送出啤酒饮料因果图-画条件和结果有零钱选橙汁选啤酒投5角投1元红灯亮出橙汁出啤酒找5角找1元因果图-画简单关系在画完空白的条件和结果之后,我们可以将题目中最直接和简单的因果条件标出1、条件“有零钱”和结果“红灯亮”是一个“非”的关系,当“有零钱”的时候,红灯是不亮的,而当售货机中“没有零钱”的时候,红灯必须要亮的。
2、条件“投1元”和条件“投5角”是一个“E ”的关系,这两个动作不可能同时发生,即同时投入1元钱和5角钱(不能同时为真);但是我们允许即“不投入1元钱”也“不投入5角钱”(可以同时为假)。
3、条件“选啤酒”和条件“选橙汁”是一个“E ”的关系,这两个动作不可能同时发生,即同时“选择啤酒”和“选择橙汁”(不能同时为真);但是我们允许即“不选择啤酒”也“不选择橙汁”(可以同时为假)。
4、条件“选啤酒”和条件“选橙汁”对于程序处理过程是等价的,即二者无论是价格还是系统的处理方法都是相同的,因此这两个条件可以合并为一个中间节点。
而且这两个条件之间使用“或”的关系。
5、注意,条件“投1元”和条件“投5角”不是等价关系,表面上看,他们都是“钱”,好像差不多,但是对于程序的处理过程确实完全不同的,“投5角”后完全不用判断当前售货机中是否有零钱(因为题目中规定所有的商品都是5角钱),而“投1元”就不行了。
软件测试技术实验指导书
《软件测试技术》实验指导书实验1、自由测试实验目的1. 理解软件测试的概念。
2. 提高反向思维的能力。
二、实验任务针对某产品Beta 的版本,对照其竞争对手的产品,进行测试,以发现该软件产品 潜在的任何问题,记录下来。
Discuz! X beta 对比 PHPWi nd实验2、黑盒测试方法:等价类划分法+边界值分析方法、实验目的1. 掌握等价类、有效等价类、无效等价类、边界值等概念。
2. 掌握边界值分析法、等价类划分法的测试用例设计方法。
3. 能够将这两种方法结合起来,灵活运用二、实验任务以下三个任务、至少完成一个1、对三角问题综合运用边界值分析方法、等价类划分方法设计测试用例。
三角形问题:void Triangle (int a, int b, int c) 函数规定输入三个整数 a 、b 、c 分别作为三边的边长构成三角形。
通过程序判定所构成的三角形的类型(等边三角形、等腰三角形、一般三角形、构不成三角形),并在屏幕上输出。
1<=a,b,c<=200实验步骤:①划分等价类,得到等价类表。
等价类表格式如下:②综合运用这两种方法设测试用例,得到测试用例表:③ 综合运用这两种方法设测试用例,得到测试用例表:④ 根据上述测试用例表,能否进行优化,获得最小测试用例集合:2、对于找零钱最佳组合问题运用边界值分析法设计测试用例。
实验步骤:①分析边界值。
②运用健壮性边界条件法设计测试用例,得到测试用例表(测试用例表格式同实验1)。
③执行测试,填写软件缺陷报告(软件缺陷报告格式同实验1)。
3、现有一个程序int CheckTel(char *rc, char *n)执行电话号码有效性检查功能,中国的固定电话号码由两部分组成。
这两部分的名称和内容分别是:地区码(rc):以0开头的三位或者四位数字(包括0)。
电话号码(n):以非0、非1开头的七位或者八位数字。
对该程序进行边界值分析,然后进行等价类划分,分别运用边界值条件、等价类划分的结果来设计测试用例,并尽可能优化所设计的测试用例。
基本路径测试法的步骤
基本路径测试法的步骤嘿,朋友们!今天咱来聊聊基本路径测试法。
这就好比你要去一个陌生的地方探险,得有个靠谱的路线图才行呀!基本路径测试法呢,就是帮你找到软件里那些关键的路径。
你想想看,软件就像一个大大的迷宫,里面有好多好多的路,你要是随便乱走,那可就晕头转向啦!但有了基本路径测试法,就像有了指南针一样。
咱先得把软件的各个模块呀、功能呀都搞清楚,这就像你得知道迷宫里都有哪些房间一样。
然后呢,找出那些最重要的流程,这就是你要走的主要道路啦。
比如说,一个购物软件,从挑选商品到下单付款,这就是一条关键路径呀。
接下来,可不能马虎,得仔细地沿着这些路径走一走,看看会不会有什么问题。
就像你走在路上,得留意有没有坑洼呀,有没有绊脚石呀。
如果有,那可得赶紧标记出来,让开发人员去修好。
有时候啊,你还得变着法儿地走。
比如故意走一些不太正常的路,看看软件能不能应对。
这就好像你在迷宫里突然想绕个弯,看看会不会有新发现。
要是软件在这些奇怪的情况下也能正常工作,那才叫厉害呢!再说说这测试的过程,可不能马马虎虎。
要像侦探一样,不放过任何一个小细节。
一个小按钮没反应,那可不行;一个页面显示不正常,那也不行。
这都得找出来解决掉呀!不然用户用起来得多别扭呀。
而且呀,基本路径测试法可不是一次性的事儿。
就像你家的东西时不时要检查检查一样,软件也得经常用这个方法来测一测。
万一有新的功能加进去了,那可得重新找找新的路径,再好好测试一番。
你说,要是没有基本路径测试法,那软件不就乱套啦?用户用着用着就出错,那多糟糕呀!所以呀,这个方法可太重要啦!咱可得好好重视,让软件变得稳稳当当的,让用户用得开开心心的,对不对?总之呢,基本路径测试法就像是软件的保护神,有了它,软件才能更好地为我们服务呀!咱可不能小瞧了它哟!。
EDA实验报告---自动售货机
自动售货机的设计一.实验内容:本自动售货机系统,结合EDA技术,采用ALTERA公司可编程逻辑器件(CPLD)EPM7128SLC84-15芯片作为控制核心,再配以必要的外围电路从而实现只销售两种饮料,售价均为15元,可以找零和退币等功能的EDA应用系统。
芯片的设计是以MAX_PLUS II 作为开发平台,VHDL语言作为开发语言,使用掌宇公司CIC_310 CPLD/FPGA数字开发系统完成软件测试。
自己制作下载板与外围电路。
二.实验分析:本自动售货机只销售两种罐装饮料。
售价均为15元。
顾客可以由两个不同投币孔分别投入3个5元硬币或2个10元硬币。
一次交易只能买一罐,且自动找零。
只要按下取消键就会马上无条件退币。
本设计的硬件电路用2个按键电路代替2个投币孔,以LED点亮的数量显示各币种的投入数量,在以4Hz闪烁的LED来显示退币种类与数量。
因为投币是计次电路,应先经过抖动消除电路处理。
本设计采用1000Hz的系统时钟信号来控制所有买卖行为。
系统中设计的复位键为管理人员所用,并未在用户界面中设计。
三.系统设计流程图:四.自动售货机外观图:(为指示灯)五.电路原理图六.PCB图:根据PROTEL99画的系统原理图,成生PCB图。
然后进行布局与布线。
注意:布线时将晶振这种易产生噪声的器件的输出端与芯片时钟输入端的连线尽量布为直线;将电源与地线的宽度定为30mil到100mil之间。
本系统的电流不是很大,所以不用将板子的两面分别布成电源与地。
七.系统实物图:八.软件系统框图九.源程序:1.产生系统频率和退币信号电路首先要根据硬件电路的晶振频率确定分频系数,先产生系统频率,在进一步分频产生退币信号。
由于掌宇公司的开发系统上的晶振频率为20MHz,所以要分频系数分别为20000(COUNT)和250(COUNT1)。
(注:由于在自制的下载板上使用了1MHz的有源晶振,所以把程序中的COUNT的范围改为0到1000即可。
自动售货机实验报告
自动售货机实验报告自动售货机实验报告引言:自动售货机是一种现代化的商业销售设备,它通过自动化技术实现商品销售和支付功能,为消费者提供了便利和选择。
本实验旨在探究自动售货机的工作原理、销售模式以及对消费者行为的影响。
一、自动售货机的工作原理自动售货机通过内部的电子系统和机械结构实现商品的储存、选择、售卖和支付等功能。
其工作原理主要包括以下几个步骤:1. 商品储存:自动售货机内部设置有多个货道,每个货道可以储存一种商品。
商品通过传送带或弹簧等装置储存在货道中,保持整齐有序。
2. 商品选择:消费者通过触摸屏或按键选择所需商品。
自动售货机内部的电子系统会根据消费者的选择信号,控制相应货道的开关门,将商品送至取货口。
3. 商品售卖:当消费者选择的商品位于取货口时,自动售货机会打开门,消费者可以取走商品。
部分自动售货机还配备了自动找零功能,方便消费者支付。
4. 支付方式:自动售货机通常支持多种支付方式,如硬币、纸币、银行卡、移动支付等。
消费者可以根据自己的需求选择适合的支付方式。
二、自动售货机的销售模式自动售货机的销售模式主要分为自动售卖和自助选购两种。
1. 自动售卖:在这种模式下,自动售货机会事先设定好商品的价格,并通过内部的计算机系统实时监测库存和销售情况。
当商品售罄或库存不足时,自动售货机会停止销售并显示相应信息。
这种模式适用于一些固定价格和库存较少的商品,如饮料、零食等。
2. 自助选购:在这种模式下,自动售货机提供了更多的选择和定制化服务。
消费者可以根据自己的需求选择商品的种类、数量和价格等,并通过自动售货机完成支付。
这种模式适用于一些需要个性化定制的商品,如鲜花、礼品等。
三、自动售货机对消费者行为的影响自动售货机的出现改变了传统的购物方式,对消费者行为产生了一定的影响。
1. 购物便利性:自动售货机的24小时不间断运营,为消费者提供了更加便捷的购物体验。
消费者可以在任何时间和地点购买所需商品,无需排队等待。
工程实训报告-Modelsim实验四-有限状态机之自动售货机-(1)
实验项目名称:有限状态机指导教师:实验日期:实验概述:【实验目的及实验设备】实验目的:(1)掌握有限状态机的应用方法。
(2)掌握有限状态机的静态测试方法,能够进行程序设计。
(3)学习测试模块的编写,综合和不同层次的仿真。
(4)用有限状态机设计一个自动售货机(饮料价格为2.5元)。
实验设备及仪器名称:CPU型号:英特尔*****************************操作系统类型:Windows XP SP3仿真软件:MAX Plus 2软件、Modelsim SE-64 10.0c实验内容及步骤:【实验原理及电路图】系统能够根据用户输入的硬币,判断钱币是否足够,当所投硬币达到或者超过购买者所选面值时,则根据顾客的要求自动售货,并找回剩余的硬币,然后回到初始状态,当所投硬币面值不够时,则给出提示,并通过一个复位键退回所投硬币。
然后回到初始状态。
该实验输入有4个clk,reset,表示投一元币y,表示投五角币w。
输出有2个,表示饮料出现的out和找五角钱的w_out.该实验共5个状态,s0:表示投币为0的状态,s1:表示投入5角的,s2:表示投入1元,s3:表示投入1.5元,s4:表示投入2元。
当投入2.5时out输出1,状态回到s0,当投入3元时out 和w_out都输出1,状态回到s0.【实验方案】(实验步骤,记录)1、打开Modelsim SE-64 10.0c软件。
else beginout=0;w_out=0;s=s4;endendcaseendendmodule测试程序:module shou;wire y;reg w;reg reset;reg clk;paramerer clkperiod=100;shouhuoji shou(y,w,reset,clk)initial beginw=0;clk=0;reset=1;#150 reset=0;#100 reset=1;endalways#(clkperiod/2) clk=~clk;always#(clkperiod+30) $random;initial $monitor(Stime, “y=%b”,y);endmodule3、编译并调试程序,出现错误立即修改直至无错误出现。
自动售货机实验报告
软件课程设计实验报告课题:自动售货机班级:电信作者:学号:课程设计实验报告第一部分程序代码 (7)第二部分软件设计文档 (15)一、软件需求说明书 (15)1引言 (15)1.1编写目的 (15)1.2背景 (15)1.3定义 (15)1.4参考资料 (16)2任务概述 (16)2.1目标 (16)2.2用户的特点 (16)2.3假定和约束 (16)3需求规定 (16)3.1对功能的规定 (17)3.2对性能的规定 (17)3.3输人输出要求 (18)3.4数据管理能力要求 (18)3.5故障处理要求 (18)3.6其他专门要求 (19)4运行环境规定 (19)4.1设备 (19)4.2支持软件 (19)4.3接口 (19)4.4控制 (19)二、概要设计说明书 (20)1引言 (20)1.1编写目的 (20)1.2背景 (20)1.3定义 (20)1.4参考资料 (20)2 需求说明 (21)2.1需求规定 (21)2.2运行环境 (21)2.3基本设计概念和处理流程 (21)2.5功能器求与程序的关系 (22)2.6人工处理过程 (23)2.7尚未解决的问题 (23)3接口设计 (23)3.1用户接口 (23)3.2外部接口 (23)3.3内部接口 (23)4运行设计 (23)4.1运行模块组合 (23)4.2运行控制 (24)4.3运行时间 (24)5系统数据结构设计 (24)5.1逻辑结构设计要点 (24)5.2物理结构设计要点 (24)5.3数据结构与程序的关系 (24)6系统出错处理设计 (25)6.1出错信息 (25)6.2补救措施 (25)三、详细设计说明 (26)1引言 (26)1.1编写目的 (26)1.2背景 (26)1.3定义 (26)1.4参考资料 (26)2程序系统的结构 (27)3投币模块 (27)3.1程序描述 (27)3.2功能 (27)3.3性能 (27)3.4输入项 (28)3.5输出项 (28)3.6算法 (28)3.7流程逻辑 (28)3.8接口 (28)3.9存储分配 (29)3.10注释设计 (29)3.11限制条件 (29)3.12测试计划 (29)4退币模块 (30)4.1程序描述 (30)4.2功能 (30)4.3性能 (30)4.4输入项 (30)4.5输出项 (30)4.6算法 (30)4.7流程逻辑 (31)4.8接口 (31)4.9存储分配 (31)4.10注释设计 (31)4.11限制条件 (32)4.12测试计划 (32)4.13尚未解决的问题 (32)5取货模块 (32)5.1程序描述 (32)5.2功能 (32)5.3性能 (32)5.4输入项 (32)5.5输出项 (33)5.6算法 (33)5.7流程逻辑 (33)5.8接口 (33)5.9存储分配 (34)5.10注释设计 (34)5.11限制条件 (34)5.12测试计划 (34)5.13尚未解决的问题 (34)6购买模块 (35)6.1程序描述 (35)6.2功能 (35)6.3性能 (35)6.4输入项 (35)6.5输出项 (35)6.6算法 (36)6.7流程逻辑 (36)6.8接口 (37)6.10注释设计 (38)6.11限制条件 (38)6.12测试计划 (38)6.13尚未解决的问题 (38)四、测试分析报告 (39)1引言 (39)1.1编写目的 (39)1.2背景 (39)1.3定义 (39)1.4参考资料 (39)2测试概要 (39)3测试结果及发现 (40)3.1测试1(启动系统) (40)3.2测试2(退出系统) (42)3.3测试3(货品展示) (42)3.4测试4(投币购买) (42).5测试5(取出物品) (43)3.6测试6(找零) (44)3.7测试7(退币) (44)3.8测试8(报错) (45)4对软件功能的结论 (45)4.1功能 (45)4.2能力 (46)4.3限制 (46)5分析摘要 (46)5.1能力 (46)5.2缺陷和限制 (46)5.3建议 (46)5.4评价 (47)6测试资源消耗 (47)五、项目开发总结报告 (48)1引言 (48)1.1编写目的 (48)1.2背景 (48)1.3定义 (48)1.4参考资料 (48)2实际开发结果 (49)2.1产品 (49)2.2主要功能和性能 (50)2.3基本流程 (50)2.4进度 (50)3开发工作评价 (52)3.1对生产效率的评价 (52)3.2对产品质量的评价 (52)3.3对技术方法的评价 (52)3.4出错原因的分析 (52)4经验与教训 (53)第一部分程序代码//引入awt、swing包import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;//类Seller的定义,用于实现所有的功能public class Seller extends JFrame implements ActionListener{private static final long serialVersionUID = 6843588200041215448L;private double money = 0.0;//"money"表示用户余额private boolean occupy; //"occupy=false"表示出货口未满,用户可以购买;//"occupy=true"表示出货口已满,用户必须取完货才能继续购买。
实验04.使用基本路径测试法求解“自动售货机”问题
实验04:使用基本路径测试法求解“自动售货机”问题实验学时:2实验类型:设计实验要求:必修一、实验目的●理解并掌握基本路径覆盖测试法,能够实际运用;●使用Eclipse+JUnit+EclEmma进行单元测试。
二、实验要求●开发环境:Eclipse v3.7及以上版本;JUnit v4.10及以上版本;文本编辑软件。
●硬件要求:CPU PIV 以上,256M 内存,1G 硬盘空间。
●系统要求:Windows98/Me/XP/NT/2000,IE 5 以上。
三、实验内容1.下载并安装Eclipse+JUnit+EclEmma实验环境;2.通读自动售货机程序,并在Eclipse环境下运行该程序;3.使用基本路径测试法设计测试用例;⏹绘制程序控制流图;⏹计算环路复杂度;⏹确定基本路径;⏹设计测试用例。
4.完整填写以下表格:5.编写JUnit测试用例,并运行程序,保证所有测试用例通过测试;6.使用EclEmma检测测试用例覆盖率,保证覆盖率达到100%。
四、实验结果检查与评定●提交时间:2013年4月24日之前/2013年5月1日22:00之前●提交地址:学习委员邮箱●文档命名方式:12软件专升本X班_0907052XXX_张三_实验04.doc实验报告实验序号:实验项目名称:附录问题描述自动售货机程序:●若投入5角钱或1元钱的硬币,按下“橙汁”或“啤酒”按钮,则相应的饮料就送出来;●若售货机没有零钱找,则显示“零钱找完”的红灯亮,这是再投入一元硬币并按下按钮后,饮料不送出来而且1元硬币也退出来;●若有零钱找,则显示“零钱找完”的红灯灭,在送出饮料的同时退还5角硬币。
程序流程图实验源代码(有缺陷的源代码)public class Sale Mac hine {priv ate in t c ount OfB eer, c o untO fOr ang eJu ice, co unt OfF i veCe nts, c oun tOfO neD oll ar;priv ate St rin g[] typ eOf Goo d s = {"B eer", "Ora nge Jui ce"};priv ate St rin g re sul tOf Dea l;publ ic Sal eMa chin e(){init ial();}publ ic voi d i niti al(){coun tOfBee r = 6;coun tOfOra nge Juic e = 6;coun tOfFiv eCe nts= 6;coun tOfOne Dol lar = 6;}publ ic Sal eMa chin e(i nt fiv e Cent s, int on eDol lar, i nt n umOf Bee r, int num OfO ran ge) //便于测试的初始化函数{coun tOfFiv eCe nts= f ive Cen t s;coun tOfOne Dol lar = o neD oll a r;countOf Bee r = num OfB eer;coun tOfOra nge Juic e = nu mOf O rang e;}publ ic Str ing cur ren tSt ate(){Stri ng sta te = "C urr ent St a te\n" +"Be er: "+ c oun tOf Bee r +"\n"+"Or ang e J uic e: " +co unt Of Oran geJ uic e +"\n" +"5 Cen ts: "+ c oun tOf Fiv eC ents + "\n" +"1 Dol lar: " + cou ntO fOn eD olla r;retu rn sta te;}publ ic Str ing ope rat ion(St r ing typ e, Str ing mon ey)//ty pe是用户选择的产品,m one y是用户投币种类{if(m oney.e qua lsIg nor eCa se("5C")) //如果用户投入5角钱{if(t ype.eq ual s(ty peO fGo ods[0]))//如果用户选择啤酒{if(c oun tOf Bee r>0)//如果还有啤酒{coun tOf Bee r--;coun tOf Fiv eCe nts++;resu ltO fDe al= "I npu t I nfo r mati on \n" +"Ty pe: Be er; Mo ney: 5 Ce nt s; C han ge: 0\n\n" + currentSta te();retu rn res ult OfDe al;}else{resu ltO fDe al= "F ail ure In f orma tio n \n"+ "B eer Sh ort a ge";retu rn res ult OfDe al;}}else if (t ype.equ als(ty peO f Good s[1]))//用户选择橙汁{if(c oun tOf Ora ngeJ uic e > 0){coun tOf Ora nge Juic e--;coun tOf Fiv eCe nts++;resu ltO fDe al= "I npu t I nfo r mati on \n" +"Ty pe: Or ang eJu ice; M one y: 5 C ent s; Cha nge: 0\n\n" + currentSta te();retu rn res ult OfDe al;}else{resu ltO fDe al= "F ail ure In f orma tio n \n"+ "T ype Er ror";retu rn res ult OfDe al;}}else{resu ltO fDe al= "F ail ure In f orma tio n \n"+ "T ype Er ror";retu rn res ult OfDe al;}}else if(mo ney.equ als Ign ore C ase("1D"))//如果用户投入一元钱{if(c oun tOf Fiv eCen ts>0) //如果用户投入一元钱{if(c oun tOf Fiv eCen ts> 0) //如果用户有零钱{if(t ype.eq ual s(ty peO fGo ods[0])&&co unt OfB eer>0)//如果用户选择啤酒而且还有啤酒{coun tOf Bee r--;coun tOf Fiv eCe nts--;coun tOf One Dol lar++;resu ltO fDe al= "I npu t I nfo r mati on \n" +"yp e: Bee r; M one y: 1 Do lla r; Ch ang e: 5 Ce nts\n\n"+ currentSta te();retu rn res ult OfDe al;}else if (t ype.equ als(ty peO f Good s[1]))//如果用户选择橙汁而且还有橙汁{coun tOf Ora nge Juic e --;coun tOf Fiv eCe nts--;coun tOf One Dol lar ++;resu ltO fDe al= "I npu t I nfo r mati on: \n" +"Ty pe: Or ang eJu ice; M one y: 1 D oll ar; Ch ange: 5 Cents\n\n" + curr ent Sta te();retu rn res ult OfDe al;}else{if(t ype.eq ual s(ty peO fGo ods[0])&&co unt OfO rang eJu ice<=0){resu ltO fDe al= "F ail ue Inf o rmat ion \n" +"Be er Sho rta g e";retu rn res ult OfDe al;}else if(ty pe.equa ls(typ eOf G oods[1])&&cou ntOf Ora nge Jui c e<=0){resu ltO fDe al= "Fai lur e Info r mati on \n"+"O ran geJ uice S hor tage";retu rn res ult OfDe al;}else{resu ltO fDe al= "F ail ure In f orma tio n \n"+ "T ype Er ror";retu rn res ult OfDe al;}}}else{resu ltO fDe al= "F ail ure In f orma tio n \n"+ "C han ge Sho r tage";retu rn res ult OfDe al;}}else{resu ltO fDe al= "F ail ure In f orma tio n \n"+ "M one y E rro r";retu rn res ult OfDe al;}}resu ltOfDe al = "F ail ure In f orma tio n \n"+ "M one y E rro r";retu rn res ult OfDe al;}}测试用例示例代码:import static org.junit.Assert.*;import org.junit.Before;import org.junit.Test;public class SaleMachineTest {SaleMachine saleMachine = new SaleMachine();@Beforepublic void setUp() throws Exception {}@Testpublic void testOperation1() {String expectedResult = "Input Information \n" +"Type: OrangeJuice; Money: 5 Cents; Change: 0\n\n" +"Current State\n" +"Beer: 6\n" +"Orange Juice: 5\n" +"5 Cents: 7\n" +"1 Dollar: 6";assertEquals(expectedResult,saleMachine.operation("OrangeJuice", "5C"));}}。
测试用例(自动售货机)
题目:有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。
其规格说明如下:若投入5角钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。
若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。
1.分析这一段说明,列出原因和结果原因:1.售货机有零钱找2.投入1元硬币3.投入5角硬币4.押下橙汁按钮5.押下啤酒按钮结果:21.售货机〖零钱找完〗灯亮22.退还1元硬币23.退还5角硬币24.送出橙汁饮料25.送出啤酒饮料2.画出因果图如图所示。
所有原因结点列在左边,所有结果结点列在右边。
建立中间结点,表示处理的中间状态。
中间结点:11.投入1元硬币且押下饮料按钮12.押下〖橙汁〗或〖啤酒〗的按钮13.应当找5角零钱并且售货机有零钱找14.钱已付清3.转换成判定表:4.设计测试用例1)在售货机有零钱找的情况下,投入1元硬币,押下橙汁按钮,找回5角硬币并送出橙汁饮料。
2)在售货机有零钱找的情况下,投入1元硬币,押下啤酒按钮,找回5角硬币并送出啤酒饮料。
3)在售货机有零钱找的情况下,投入1元硬币,系统不做任何处理。
4)在售货机有零钱找的情况下,投入5角硬币,押下橙汁按钮,送出橙汁饮料。
5)在售货机有零钱找的情况下,投入5角硬币,押下啤酒按钮,送出啤酒饮料。
6)在售货机有零钱找的情况下,投入5角硬币,系统不做任何处理。
7)在售货机有零钱找的情况下,押下橙汁按钮,系统不做任何处理。
8)在售货机有零钱找的情况下,押下啤酒按钮,系统不做任何处理。
9)在售货机没有零钱找的情况下,投入1元硬币,押下橙汁按钮,售货机“零钱找完”灯亮,并退还1元硬币。
10)在售货机没有零钱找的情况下,投入1元硬币,押下啤酒按钮,售货机“零钱找完”灯亮,并退还1元硬币。
11)在售货机没有零钱找的情况下,投入1元硬币,售货机“零钱找完”灯亮。
数字电路综合实验-自动售货机
数字电路综合实验报告之简易自动售货机班级:姓名:班内序号:学号:日期:目录一、任务要求................................................................................ 错误!未定义书签。
二、系统设计 (4)1.结构框图 (4)2流程图 (5)三、波形分析及波形仿真 (6)⒈主程序 (8)⒉分频模块 (13)⒊防抖模块................................................................................................................ 错误!未定义书签。
⒋点阵模块................................................................................................................ 错误!未定义书签。
⒌译码模块................................................................................................................ 错误!未定义书签。
⒍中心模块................................................................................................................ 错误!未定义书签。
五、功能说明及资源利用情况 ....................................................... 错误!未定义书签。
1.功能说明.................................................................................................................... 错误!未定义书签。
实验四 自动售货机的模拟控制
实验面板图
实验步骤
1、输入3
QS
CF
ZL
I0.0 I0.1 I0.2 I0.3 I0.4 I0.5
输出
Y0 Q0.0
A Q0.1
B Q0.2
C Q0.3
D Q0.4
E Q0.5
F Q0.6
G Q0.7
❖ 2、打开主机电源开关将程序下载到主机中。
❖ 3、启动并运行程序观察实验现象。
实验四 自动售货机的模拟控制
❖ 实验目的 ❖ 实验说明 ❖ 实验面板图 ❖ 实验步骤
实验目的
❖ 了解并掌握可逆计数器CTUD在控制系统中 的应用,灵活运用定时器TON使他实现脉冲 的功能。
实验说明
M1、M2、M3三个复位按钮表示投入自 动售货机的人民币面值,YO货币指示(例如: 按下M1则Y0显示1),自动售货机里有汽水 (3元/瓶)和咖啡(5元/瓶)两种饮料,当 Y0所显示的值大于或等于这两种饮料的价格 时,C或D发光二极管会点亮,表明可以购买 饮料;按下汽水按钮或咖啡按钮表明购买饮 料,此时A或B发光二极管会点亮, E或F 发 光二极管会点亮,表明饮料已从售货机取出; 按下ZL按钮表示找零,此时Y0清零,延时 0.6S找零出口 G发光二极管点亮。
❖ L+--------1M、2M、V+; ❖ M--------COM、1L、2L、3L; ❖ 其余接线按照上述要求连线。
基本路径测试方法在仿真训练软件测试中的应用
基本路径测试方法在仿真训练软件测试中的应用在仿真训练软件中,基本路径测试是一种常见的测试方法。
该方法将软件的各种路径进行系统性的测试,可以有效地发现和修复程序中的错误,从而提高软件的可靠性和稳定性。
本文将详细介绍基本路径测试方法在仿真训练软件测试中的应用。
一、基本路径测试的概念和原理基本路径测试是一种测试方法,它可以对程序的所有可能运行路径进行测试,用来检测程序是否能够按照预期的方式运行。
基本路径测试基于控制流图中的路径结构,将程序的所有路径分解成基本路径,然后针对每个基本路径进行测试。
基本路径是指从程序的起点到终点的一条路径,该路径上每个语句只执行一次,且不包含循环语句。
基本路径测试的原理是基于程序的控制流图进行分析。
控制流图是一种图形化表示程序控制流程的方法,其中每个节点表示程序中的一个语句,每个边表示两个语句之间的控制关系。
基本路径测试的目标是发现程序中所有可能的执行路径,并对每个路径进行测试,以确保程序的正确性和鲁棒性。
二、基本路径测试的步骤基本路径测试包括以下四个步骤:1. 绘制程序的控制流图。
控制流图是基本路径测试的前提,它是一种图形化的表示程序控制流程的方法。
通过绘制控制流图,可以清晰地了解程序中各个语句的控制关系,便于识别程序中的可能错误。
2. 确定程序的基本路径。
通过分析控制流图,识别程序中所有可能的执行路径,并将其分解成基本路径。
每个基本路径上必须至少包含一个节点,每个节点至少包含一条进入边和一条出边。
3. 设计测试用例。
对每个基本路径设计测试用例,以覆盖基本路径上的所有语句和分支,并验证程序的正确性和鲁棒性。
4. 执行测试用例。
按照设计的测试用例对程序进行测试,记录测试结果和发现的错误,及时对错误进行修复。
三、基本路径测试的优点和缺点基本路径测试具有以下优点:1. 能够覆盖程序中的所有可能运行路径,发现所有潜在的错误。
通过对每个基本路径进行测试,可以确保程序的正确性和鲁棒性。
北邮数电实验下 简易自动售货机 实验报告
2013~2014第一学期数字电路与逻辑设计实验报告一.设计课题及任务要求1.设计课题:简易自动售货机2.任务要求:设计一个简易的自动售货机,能够完成钱数处理、找零、显示、退币等功能。
基本要求:·用2 个数码管(disp5,disp4)显示钱数,以元为单位。
用3 个按键(btn0,btn1,btn2)分别表示一元、五元、十元,每按一次按键,增加一次相应的钱数,上限99元。
·再用3 个按键(btn3,btn4,btn5)分别对应3 种商品,其中,商品甲售价3 元、商品乙售价8 元、商品丙售价12 元;·买东西时,先输入钱币,再按对应的商品键。
每按一次商品键,钱数要相应地减少, 同时蜂鸣器提示购买成功。
剩余钱数大于3 元可继续按商品键再次购买;当剩余钱数少于3 元时,表示钱数的数码管disp5,disp4 显示为零, 同时用数码管disp0 显示退出的钱数。
·买东西时,按下商品键,若输入的钱数少于商品的价格,表示钱数的数码管disp5, disp4 显示为零,同时用数码管(disp1、disp0)显示退出的钱数,并用蜂鸣器表示购买失败。
·按下商品键时,用数码管disp2 表示当前购买的商品,1 代表商品甲,2 代表商品乙,3 代表商品丙。
·用btn7 做为退出功能键,退出键可以随时按下,按下后,数码管(disp5,disp4)显示为零,同时数码管(disp1、disp0)显示退出的钱数,表示结束购买,钱款全部退出。
提高要求:·用点阵设计显示投币动画、出货动画,购买成功/失败动画;·允许随时输入钱币,购买时,钱款不足有声光报警并等待追加钱币或选择别的商品;二.系统设计1.设计思路根据程序实现的功能,可将其分为分频、防抖、逻辑运算、数码管显示、点阵图形显示五大模块。
将其串联起来即可完成整体功能。
其中,分频模块将芯片50M的时钟信号分为各模块所需的不同频率的时钟。
软件测试实验自动售货机测试,自动售货机测试用例(因果图)讲解学习.doc
软件测试实验⾃动售货机测试,⾃动售货机测试⽤例(因果图)讲解学习.doc题⽬:有⼀个处理单价为5⾓钱的饮料的⾃动售货机软件测试⽤例的设计。
其规格说明如下:若投⼊5⾓钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。
若售货机没有零钱找,则⼀个显⽰〖零钱找完〗的红灯亮,这时在投⼊1元硬币并押下按钮后,饮料不送出来⽽且1元硬币也退出来;若有零钱找,则显⽰〖零钱找完〗的红灯灭,在送出饮料的同时退还5⾓硬币。
1.分析这⼀段说明,列出原因和结果原因:1.售货机有零钱找2.投⼊1元硬币3.投⼊5⾓硬币4.押下橙汁按钮5.押下啤酒按钮结果:21.售货机〖零钱找完〗灯亮22.退还1元硬币23.退还5⾓硬币24.送出橙汁饮料25.送出啤酒饮料2.画出因果图如图所⽰。
所有原因结点列在左边,所有结果结点列在右边。
建⽴中间结点,表⽰处理的中间状态。
中间结点:11. 投⼊1元硬币且押下饮料按钮12. 押下〖橙汁〗或〖啤酒〗的按钮13. 应当找5⾓零钱并且售货机有零钱找14. 钱已付清3.转换成判定表:4.设计测试⽤例在售货机有零钱找的情况下,投⼊1元硬币,押下橙汁按钮,找回5⾓硬币并送出橙汁饮料。
在售货机有零钱找的情况下,投⼊1元硬币,押下啤酒按钮,找回5⾓硬币并送出啤酒饮料。
在售货机有零钱找的情况下,投⼊1元硬币,系统不做任何处理。
在售货机有零钱找的情况下,投⼊5⾓硬币,押下橙汁按钮,送出橙汁饮料。
在售货机有零钱找的情况下,投⼊5⾓硬币,押下啤酒按钮,送出啤酒饮料。
在售货机有零钱找的情况下,投⼊5⾓硬币,系统不做任何处理。
在售货机有零钱找的情况下,押下橙汁按钮,系统不做任何处理。
在售货机有零钱找的情况下,押下啤酒按钮,系统不做任何处理。
在售货机没有零钱找的情况下,投⼊1元硬币,押下橙汁按钮,售货机“零钱找完”灯亮,并退还1元硬币。
在售货机没有零钱找的情况下,投⼊1元硬币,押下啤酒按钮,售货机“零钱找完”灯亮,并退还1元硬币。
c语言自动售货机实验报告
课程设计课程名称 C 语言高级程序设计学院xxx小组成员1XXX小组成员2XXX小组成员3XXX任课教师XXX2016——2017学年第1学期一.所选题目与要求自动售货机问题情景:分析学校教学楼自动售货机的功能,设计一个自动售货系统。
功能要求:1. 系统能提供所售商品的清单(编号,名称,单价,数量)2. 客户输入商品编号及购买数量,系统显示应付的金额,输入客户实付的钱数,系统计算应找的钱数系统如果没有足够的库存或零钱时,现实应返还客户已付的金额。
(不考虑用支付宝付款的情况)3. 可增加商品种类,增加商品库存,查询商品库存,查询商品销售量及销售额。
成果要求:通过网络教学平台中的“研究型教学”建立分组,每组2-3人,通过小组讨论,确定每人的分工,并确定系统设计方案。
各小组成员在网络教学平台上进行讨论、并完成最终的报告,整个过程作为小组及个人工作评价的重要依据。
各小组成员根据系统设计方案分模块进行编程,在系统各模块编码完成后集成调试,并最终完成整个系统的测试。
根据下面的报告模板完成综合实验总结报告,并打印成纸质报告,作为大作业课程结束时上交。
附:综合实验总结报告应包含的内容:1. 系统功能说明2. 程序结构程序结构说明重要数据说明函数清单/* 每个函数的书写格式 */函数名:所在文件名函数功能参数说明算法描述或程序代码3. 系统运行结果4. 系统设计难点及其解决方法5. 不足之处6. 人员分工说明二.问题分析及算法设计主函数void main() //主函数模块{do{system("pause");show(); //显示屏幕函数,商品清单loop1:printf("现在你有%.1f元\n你可以选择商品序号开始选购或按0 退出\n",M);input(); //输入函数if(M-goods[n-1].price>v) {t=0;printf("对不起,售货机没有足够的零钱了\n谢谢光临!退还%.1f元\n",M);break;} //判断售货机是否有足够的零钱,0表无if(n==0){ //确认用户是选择离开还是买东西开始购买t=1;change(M);} //找零函数else {loop2:sell(n,M,1,1); //购买函数if(A==0)//货没有了怎么办input(); //输入函数………………………………………………………………………..if(n==0) //没货离开change(M); //找钱函数else //继续购买其它商品{……………………………………………goto loop2;返回至购买函数} //else} //ifelse if(B==0)//没钱了怎么办{…………………………………..if(m1==0) //离开change(M);返回至找零函数else //加钱{…………………………………………..goto loop1;返回至再次购买} //else} //else ifelse//有钱又有货,继续选goto loop1;返回至购买程序} //else}while(1);} //main结构体定义struct goods//定义物品清单{int number;char name[10];float price;int quantity;}goods[9]={{1,"可口可乐",3,5},{2,"拿铁咖啡",4,5},{3,"橙汁",3,5},{4,"奶茶",4,5},{5,"雪碧",2.5,5},{6,"矿泉水",2,5},{7,"椰子汁",2.5,5},{8,"格瓦斯",3,5}};struct money//定义钱的种类,数量用于记录找零的某值张数{float moneys;int mount;}money[2]={{1,0},{0.5,0}};被调用的函数float show() //显示模块--屏幕{……………………………}int input() //输入模块{…………………………..}}int sell(int n,float m,int a,int b) //出售模块n为序号,m钱,{……………………………if(goods[i].quantity>0) //表示有货{………………………………..}elseA=0; //表示没货了}elseB=0; //表示没钱了if(M==0) B=0;//判断出钱已用光return(a);return(b);}void change(float m) //找钱模块{……………………………switch(a){case 1花光…………………………………….case 2:找零……………………………………………………………………………}}三.程序源代码#include<stdio.h>#include<conio.h>float M;//M为投入的钱数int A=1,B=1,t; //A为数量标记,B为金钱标记,1表示有,0表示没有,t用于标记售货机是否能完成退款int i,n,v=100; //i用于循环显示商品列表,n用于记录输入的货号,v用于保存售货机内可以找零的钱数,初设为v=100//结构体定义struct goods //定义物品清单{int number;char name[10];float price;int quantity;}goods[9]={{1,"可口可乐",3,5},{2,"拿铁咖啡",4,5},{3,"橙汁",3,5},{4,"奶茶",4,5},{5,"雪碧",2.5,5},{6,"矿泉水",2,5},{7,"椰子汁",2.5,5},{8,"格瓦斯",3,5}};struct money //定义钱的种类,数量用于记录找零的某值张数{float moneys;int mount;}money[2]={{1,0},{0.5,0}};float show() //显示模块--屏幕{system("pause");putch('\n');for(i=0;i<8;i++){printf(" |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");printf(" |%d%8s%7.1f元...剩余%7d|\n",goods[i].number,goods[i].name,goods[i].price,goods[i].quantity);} printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("购买东西前,请投入money!(支持1元,5元,10元和20元)\n《温馨提示,投入money过多可能无法完成退币》\n");scanf("%f",&M);return M;}int input() //输入模块{for(;;){scanf("%d",&n);if(n<0||n>8)printf("输入错误,请重新输入商品序号开始选购或按0 退出\n");else {return n;break;}}}int sell(int n,float m,int a,int b) //出售模块n为序号,m钱,{int i=0;while(n!=goods[i].number) i++;if(m>=goods[i].price){if(goods[i].quantity>0){goods[i].quantity--;M=m-goods[i].price;for(i=0;i<8;i++){printf(" |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");printf(" |%d%8s%7.1f元...剩余%7d|\n",goods[i].number,goods[i].name,goods[i].price,goods[i].quantity);} printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("你的商品%d %s 已经出货了\n",goods[n-1].number,goods[n-1].name);}elseA=0; //表示没货了}elseB=0; //表示钱了if(M==0) B=0;//判断出钱已用光return(a);return(b);}void change(float m) /钱模块{int i,a;//用于辅助输出if(m==0) a=1;if(m!=0.0&&t!=1) a=2;switch(a){case 1:printf("钱用光了哦\n谢谢光临!");break;case 2:{for(i=0;i<2;i++)if(money[i].moneys<=m){m=m-money[i].moneys;money[i].mount++;i--;}//继续检索当前的面额是否符合条件,才会有相同面值出现printf(" 谢谢光临!\n找零\n");for(i=0;i<2;i++)if(money[i].mount>0)printf("%d张%.1f元\t\n",money[i].mount,money[i].moneys);m=0;M=0;};money[0].mount=0;break;}}void main() //主函数模块{do{int t=1; //用于标记售货机是否能完成退款,1表能float m1; //m1用于记录用户再次加的钱show(); //显示--屏幕loop1:printf("现在你有%.1f元\n你可以选择商品序号开始选购或按0 退出\n",M);input(); //输入函数if(M-goods[n-1].price>v) {t=0;printf("对不起,售货机没有足够的零钱了\n 谢谢光临!退还%.1f元\n",M);break;} //判断售货机是否有足够的零钱,0表无if(n==0){ //确认用户是选择离开还是买东西开始购买t=1;change(M);} /零函数else {loop2:sell(n,M,1,1);if(A==0)//货没有了怎么办{printf("可惜了,商品%d 已卖完了\n你还有%.1f元\n你可以买其它商品(直接输入商品序号)或按0 离开\n",n,M);input(); //输入函数if(n==0)change(M); /钱函数else{A=1;B=1;//要将标记归位goto loop2;} //else} //ifelse if(B==0)//没钱了怎么办{printf("噢,,,没钱了,你可以继续投入money购买,或按0 离开\n");scanf("%f",&m1);if(m1==0)change(M);else{M=M+m1;A=1;B=1;//标记要归位goto loop1;} //else} //else ifelse//有钱又有货,继续选goto loop1;} //else}while(1);} //main四.系统功能及运行效果图一,系统提供商品清单,并提示购买前投入money二,如果用户投入的money过多,售货机无足够硬币完成退币,自动退还用户已付金额三,用户投入money购买,确定购买商品后,系统显示如下。
自动售货机实验报告
目录一、设计目的 (1)1.控制要求 (1)2.课题要求 (1)二、设计步骤 (1)1.设计思路 (1)2.I/O分配表 (3)3.各种中间继电器 (3)三、实验步骤 (3)四、控制图 (4)1.电器控制图及必要的文字说明 (4)2.硬件链接图 (4)五、程序设计 (4)1.梯形图 (5)2.触摸屏 (11)六、实验总结 (11)1.课题设计的整体分析 (11)2.设计中遇到的问题及解决办法 (11)3.实验中遇到的问题及解决办法 (11)4.主要输入、输出及中间继电器的时序图 (14)5.收获 (14)参考文献 (15)自动售货机的PLC控制一、设计目的1.控制要求:(1)自动售货机可投入5角、1元、5元、10元硬币。
(2)当投入的硬币总值等于或超过5元时,汽水按钮指示灯亮;当投入的硬币总值超过10元时奶茶按钮指示灯亮;当投入的硬币总值超过15元时咖啡按钮指示灯亮。
(3)当汽水按钮指示灯亮时,按汽水按钮,则汽水排出,5秒后自动停止。
汽水排出时,相应指示灯闪烁。
(4)当奶茶和咖啡按钮指示灯亮时,动作同上。
(5)若投入的硬币总值超过按钮所需的钱数时,找钱指示灯亮,同时八段码显示所找钱数。
2.课题要求(1)设计出硬件系统的结构图、接线图、时序图等;(2)运用功能指令进行PLC控制程序设计,并有主程序和子程序;(3)进行系统调试,实现自动售货机的控制要求。
二、设计步骤1.设计思路自动售货机是台机电一体化的自动化装置,在接受到货币已输入的前提下,靠触摸控制按钮输入信号使控制器启动相关的机械装置完成规定动作,将货物输出,用自动控制系统代替现有的人工销售方式,节省人力,减少相应的销售开支,扩大销售覆盖面。
当投入的硬币总值超过5元时,汽水指示灯亮。
当硬币总值超过10元时,汽水和奶茶指示灯亮。
当投入的硬币总值超过15元时,汽水,奶茶和咖啡指示灯都亮。
当汽水指示灯亮时,按汽水按钮,则汽水排出,5秒后自动停止,相应的指示灯闪烁;当奶茶指示灯亮时,按奶茶按钮,则奶茶排出,5秒后自动停止,相应的指示灯闪烁;当咖啡指示灯亮时,按咖啡按钮,则咖啡排出,5秒后自动停止,相应的指示灯闪烁。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
实验序号:04 实验项目名称:使用基本路径测试法求解“自动售货机”问题
一、实验目的及要求
理解基本路径覆盖测试法的概念和方法;
掌握使用Eclipse+JUnit+EclEmma进行基本路径覆盖测试的方法。
二、实验设备(环境)及要求
开发环境:Eclipse 及以上版本;JUnit 及以上版本;文本编辑软件。
硬件要求:CPU PIV 以上,256M 内存,1G 硬盘空间。
系统要求:Windows98/Me/XP/NT/2000,IE 5 以上。
三、实验内容步骤
1.下载并安装Eclipse+JUnit+EclEmma实验环境;
2.通读自动售货机程序,并在Eclipse环境下运行该程序;
3.使用基本路径测试法设计测试用例,完成以下表格;
编号输入值
Type
输入值
money
状态预期输出实际情
况
001Beer5C各资
源剩
余Input Information
Type: Beer; Money: 5 Cents; Change: 0 Current State
Beer: 5
Orange Juice: 6
5 Cents: 7
1 Dollar: 6
002Orange
Juice 5C各资
源剩
余
Input Information
Type: OrangeJuice; Money: 5 Cents;
Change: 0
Current State
Beer: 6
Orange Juice: 5 5 Cents: 7
1 Dollar: 6
003Beer1D没有
啤酒Failure Information Beer Shortage
步骤:
1、解压eclemma软件包,并放到eclipse安装目录的dropins文件夹下:
2、重新启动eclipse软件,菜单栏会出现新的图标:
3、查看Windows的Customize perspective项中的Command Groups Availabiity 多了Coverage 项:
4、编写待测试类文件和测试Junit Test Case文件:
5、先点击运行看看,覆盖了%:
6、分析:红色代表未执行、黄色代表条件没有全部执行、绿色代表执行过了:
7、继续修改测试代码,直到覆盖率达到100%:
共编写了12个测试用例,使待测试代码100%被覆盖,运行如图:。