>50000 1400+0.04*(income-50000)
免税部分:
exemption = 人数*50;
实缴所得税:
TaxTotal = TaxSubtotal – exemption
程序Java代码:
package P.test;
import java.util.Scanner;
public class TexTotal { private double totals; private double income; private int per;
public double gettotals(){ return totals; }
public void setShuru(double income,int per){ this.income=income; this.per=per; }
public boolean getShuru() { try {
Scanner in = new Scanner(System.in);
System.out.println("请输入你的工资和家庭人数(以空格隔开):
");
this.income = in.nextInt();
this.per = in.nextInt(); } catch (Exception e) {
System.out.println("请输入正确的工资数目!
"); System.out.println("错误类型:
" + e); return false; }
return true; }
public void Income(){
if(this.income<=0||this.per<=0){
System.out.println("请输入正确的家庭人数和收入!
");
}else if(this.income < 10000){
this.totals=this.income*0.02-this.per*50; }else if(this.income>=10000 && this.income<50000){
this.totals=200+(this.income-10000)*0.03-this.per*50;
}else{
this.totals=1400+(this.income-50000)*0.04-this.per*50;
}
if(this.totals<0){ this.totals=0; } }
public void Prints() {
System.out.println("需要缴纳的税为:
"+this.totals); }
public static void main(String args[]){ TexTotal d=new TexTotal(); if(d.getShuru()){ d.Income(); d.Prints(); } } }
}
if(this.totals<0){ this.totals=0; } }
public void Prints() {
System.out.println("需要缴纳的税为:
"+this.totals); }
public static void main(String args[]){ TexTotal d=new TexTotal(); if(d.getShuru()){ d.Income(); d.Prints(); } } }
测试代码:
package P.test;
import static org.junit.Assert.*; import junit.framework.Assert;
import org.junit.After; import org.junit.Before; import org.junit.Test;
public class TexTotalTest { TexTotal s=new TexTotal();
@Before
public void setUp() throws Exception { }
@After
public void tearDown() throws Exception { } @Test
public void testGetShuru1() { s.setShuru(9994,5); s.Income();
Assert.assertEquals(0.0,s.gettotals()); } @Test
public void testGetShuru2() { s.setShuru(10023,3); s.Income();
Assert.assertEquals(50.69,s.gettotals()); } @Test
public void testGetShuru3() { s.setShuru(59232,4); s.Income();
Assert.assertEquals(1569.28,s.gettotals()); } @Test
public void testGetShuru4() { s.setShuru(500,0); s.Income();
Assert.assertEquals(0.0,s.gettotals()); } @Test
public void testGetShuru5() {
s.setShuru(-50000,4); s.Income();
Assert.assertEquals(0.0,s.gettotals()); } }
3 测试数据
测试均顺利通过。
路径覆盖率为100%。
实验三、
1、运行Winrunner,新建一个测试项目。
点击【开始】按钮,选择【程序】-【WinRunner】-【WinRunner】,点击【NewTest】。
2、开始录制。
录制前查看如下设置是否正确。
主菜单“Tools”—“GeneralOptions”—“General”选项卡设置如下,选择GUIMap模式为“TheGUIMapTest”
图3-1-1
点击工具栏上“录制”按钮
,WinRunner进入录制状态。
3、启动需录制界面窗口。
使用WinRunner自带的演示程序,运行Flight4B程序,进入“Login”窗口如图3-1-2。
具体运行方法为:
点击【开始】按钮,选择【程序】-【WinRunner】-【SampleApplications】,点击【Flight4A】。
4、操作图形用户界面。
点击“AgentName”输入框,输入“tester”;点击“Password”输入框,输入“mercury”;点击“OK”按钮。
图3-1-2
5、在图3-1-3中选择Order。
图3-1-3
在随后的窗口中,选中OrderNo(在checkBox中打上勾),输入数字3,按“OK”按钮。
如图3-1-4。
图3-1-4
在图3-1-3中,选择Order。
在图3-1-4窗口中输入传真号码(数字)如:
0109812320。
并将签名选项打上勾。
图3-1-5
在AgentSignature窗口中写下你的名字。
用鼠标在白板上签名(画名)。
仔细查看WinRunner如何在ContextSensitive录制模式下进行签名。
清除刚才所做的签名轨迹。
按下“ClearSignature”按钮。
将FaxOrder窗口移动到屏幕上不同的位置。
(在更换AnoLog录制模式时,重新设置窗口位置)
按F2转换到AnoLog录制模式下。
并在AgentSignature窗口中写下你的名字(画下你的名字)。
仔细观察WinRunner如何在Anolog录制模式下进行签名录制。
再次按下F2转换回ContextSensitive录制模式,按下Send按钮,发送传真。
窗口将提示发送成功。
6、停止录制。
按左Ctrl+F3键停止录制。
查看WinRunner中记录的脚本。
7、保存脚本。
点击工具栏中“保存”按钮把脚本保存到指定目录。
8、回放脚本。
关闭“Flight4A”程序。
选择工具栏上“FromTop”按钮。
观察脚本的运行。
插入同步点
操作前请先确保如下设置:
主菜单“Tools”—“GeneralOptions”—“Settings”选项卡设置如下,选择TimeoutforcheckpointsandCSstatements为1000msec。
图3-1-6
1、运行WinRunner,并创建一个新的测试。
2、打开“飞机预定票系统”(Flight4A)。
(PASSWORD:
mercury)
3、录制一个脚本。
在“飞机预定票系统”中创建一个新的定单。
选择“Order”。
填写飞机与乘客信息。
如图3-1-7:
图3-1-7
插入定单存到数据库。
单击“InsertOrder”按钮,当插入完成,“InsertDone”信息将出现在状态栏(在界面上方)。
再单击“DeleteOrder”按钮,并确认删除此订单。
停止录制。
保存脚本。
(例如脚本名为Lesson)
4、 关闭“Flight4A”程序。
回放刚才录制的脚本。
观察发生的情况,删除订单时出现错误提示。
原因是回放脚本速度太快,插入还没有成功就要删除脚本。
插入同步点步骤
1、确认窗口处在Lesson测试脚本下。
(由于间隔时间不够导致失败)
2、移动鼠标到所要插入同步点的脚本位置。
将鼠标移动到“button_press("InsertOrder");”末尾,并回车新增行,如图3-1-8:
图3-1-8
3、插入同步设置。
策略:
当“Insertdone”的提示在主窗口上方出现时,再让测试继续。
选择菜单“Insert>SynchronizationPoint>ForObject/windowBitmap”。
图3-1-9
4、将手的形状移到“飞机预定票主窗口”,捕获“insertdone”的位图信息。
如图3-1-10:
图3-1-10
5、在脚本窗口原鼠标所在位置,将添加一行脚本语言描述。
如图3-1-11:
并修改其中的时间参数,将1秒改为10秒。
6、保存修改后的脚本。
图3-1-11
7、关闭“Flight4A”程序。
回放刚才的脚本。
脚本运行成功。
建立数据驱动测试
录制
1、 运行WinRunner。
2、 运行通讯簿。
从开始—程序—附件启动通讯簿。
3、 点击菜单【文件】-【新建联系人】,显示属性窗口。
4、 输入用户信息。
(例如姓:
张;名:
三;电子邮件地址:
)
5、 确定。
6、 退出通讯簿程序。
7、 停止录制。
数据驱动
数据驱动的步骤如下:
1、选中所有脚本。
2、选择菜单【Table】-【DataDriverWizard】,进入数据驱动向导。
3、单击按钮“Next”。
4、第二步使用缺省选项,单击按钮“Next”。
5、在本用例里,共享联系人这一项不进行参数化,因此选择“Donotreplacethisdata”,单击按钮“Next”。
6、“姓”这一项进行参数化,选择“AnewColumn”,字段名根据自己喜好输入,这里使用缺省值“姓L”,单击按钮“Next”。
7、“名”这一项用相同的方式,用缺省字段名“名F”,单击按钮“Next”。
8、“电子邮件地址”用相同的方式,更改字段名为“Email”,单击按钮“Next”。
9、选中“Showdatatablenow”选项,单击按钮“Finish”,进入数据表格窗口。
10、输入几个用户数据,保存后退出。