嵌入式测试 模拟共享单车

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xxxslinyue/article/details/82992764

题目分享:链接:https://pan.baidu.com/s/1P16uKgLtrLjIl1o5Jo9y1Q 密码:nmbs
模拟共享单车

//功能三描述
2.3 位置信息的接收处理(GN_WZ)
GPS 模块定时(1s)向外发送位置信息,锁具控制模块接收并处理 GPS 发送
位置信息。
序号 数据名称 单位 范围
1 经度 度 0-180
2 经度标志位 固定值 0X45(E-东经),0X57(W-西经)
3 纬度 度 0-90
4 纬度标志位 固定值 0X4E(N-北纬),0X53(S-南纬)
由于位置信息是 GPS 模块定时发送的,为可靠性起见,需要进行如下容错处
理:
1、当接收到的位置信息超出范围时,该 GPS 数据帧无效,做丢包处理,锁
具控制模块使用上一帧的信息;
2、经纬度标志位不正确时,锁具控制模块使用上一帧的位置信息。
3、经度、纬度四舍五入方式保留三位小数。

测试代码示例:

import Manu
############标准测试模板#######################
## Test:测试数据执行函数体,【测试数据】每一行数据调用一次Test
## arg:输入参数
## exp:预期输出
def Test(arg,exp):
  print 'Hello World!'
  for a in arg:
    print a
  for e in exp:
    print e

  Protocol_gpstime.Hour.Value=arg[0]
  Protocol_gpstime.Minute.Value=arg[1]
  Protocol_gpstime.Second.Value=arg[2]
  Protocol_gpstime.JingDu.Value=arg[3]
  Protocol_gpstime.Flag_JD.Value=arg[4]
  Protocol_gpstime.WeiDu.Value=arg[5]
  Protocol_gpstime.Flag_WD.Value=arg[6]
  Protocol_gpstime.Write()
  show=[]
  str='输入数据:时%d,分%d,秒%d,经度%f,经度标识%d,纬度%f,纬度标识%d\n' %(arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6])
  show.append(str)
  show.append(exp[0])
  passed=Manu.Check(show)
  print '测试结果:%s' %passed


# 断言:根据实际需求修改一下注释的部分 
  assertor=API.Platform.Assertion.Create()
  assertor.AddInput('时',arg[0])
  assertor.AddInput('分',arg[1])
  assertor.AddInput('秒',arg[2])
  assertor.AddInput('经度',arg[3])
  assertor.AddInput('经度标识',arg[4])
  assertor.AddInput('纬度',arg[5])
  assertor.AddInput('纬度标识',arg[6])
  assertor.AddOutput('界面显示',exp[0],passed)
  if passed:#测试通过
    assertor.Pass()
  else:
    assertor.Failed()
  b=assertor.Commit()

## Standard_Test:标准测试的方法入口,使用【测试数据】表循环调用Test方法
Standard_Test(Test)
#############################################


############自定义测试模板#######################
## 如果不希望使用测试数据驱动测试,则将【标准测试模板】删除,使用【自定义模板】
## 否则可以删除本节
#def Main():
#  print 'Hello world'
#Main()
#################################################

测试结果既可以通过应用程序查看
单车模拟
也可以通过日志文件进行查看
单车测试日志

再来看一个接口测试的示例
接口4的需求为:

在骑行状态下,锁具控制模块要在相对固定的时间(6-10S)内向服务器上
报位置信息

为了清除刚才的环境,可以点击清除环境设置,然后点开接口4的测试,自己写上测试代码,点击清理环境。
这是例题给的测试代码:

import time,Manu
############标准测试模板#######################
## Test:测试数据执行函数体,【测试数据】每一行数据调用一次Test
## arg:输入参数
## exp:预期输出
def Test(arg,exp):
  print 'Hello World!'
  print '输入参数:%s' %arg[0]
  print '预期输出:%s' %exp[0]
  arg=arg[0].split(',')
  l=[]
  for a in arg:
    l.append(int(a,16))

  b=RS232通道.Write(l)
  API.Common.Timer.Normal.Sleep(100)

  t1=time.time()
  t2=t1
  out=''
  while t2-t1<10:
    bool=Protocol_ServerOutput.Read()
    t2=time.time()
    if bool and Protocol_ServerOutput.Flag.Value==2:
#      array=Protocol_ServerOutput.ToBytes()
#      for a in array:
#        h='%02X' %a
#        out+=str(h)
#        out+=','
#
#      print '输出的数据:%s' %out[:-1]
      break

  passed=True
  if Protocol_ServerOutput.Head.Value!=0x55AA:
    passed=False
    print '包头错误! %s' %Protocol_ServerOutput.Head.Value
  if Protocol_ServerOutput.BikeID.Value!=0xBB:
    passed=False
    print '包头错误! %s' %Protocol_ServerOutput.Head.Value
  if Protocol_ServerOutput.jiaoyanhe.Checked!=True:
    passed=False
    print '校验和错误!'
  if Protocol_ServerOutput.Tail.Value!=0x55AA:
    passed=False
    print '包尾错误! %s' %Protocol_ServerOutput.Tail.Value

## 断言:根据实际需求修改一下注释的部分 
  assertor=API.Platform.Assertion.Create()
  assertor.AddInput('输入数据:',arg[0])
  assertor.AddOutput('输出数据:',exp[0],out)
  if passed:#测试通过
    assertor.Pass()
    print "服务器位置与时间上报输出接口正确。"
  else:
    assertor.Failed()
    print "服务器位置与时间上报输出接口错误!"
  b=assertor.Commit()

## Standard_Test:标准测试的方法入口,使用【测试数据】表循环调用Test方法
Standard_Test(Test)
#############################################

运行结果为
接口测试运行结果

性能测试示例:
需求:

在骑行状态下,锁具控制模块定时上报位置与时间信息要控制在 6-10s 之间

示例代码:

import time
t1=time.time()
def Test(arg,exp):
  global t1
  print 'Hello World!'
  t2=time.time()
  while True:
    bool=Protocol_ServerOutput.Read()
    t2=time.time()
    if bool:
      break

  print 'GPS上报时间间隔为:%.2f秒' %(t2-t1)
  passed=False
  if int(t2-t1)>=6 and int(t2-t1)<=10:
    passed=True

## 断言:根据实际需求修改一下注释的部分 
  assertor=API.Platform.Assertion.Create()
  assertor.AddOutput('输出参数1',exp[0],str(t2-t1))

  if passed:#测试通过
    assertor.Pass()
  else:
    assertor.Failed()

  t1=t2
  b=assertor.Commit()

## Standard_Test:标准测试的方法入口,使用【测试数据】表循环调用Test方法
Standard_Test(Test)
#############################################

测试结果:
性能测试运行结果

猜你喜欢

转载自blog.csdn.net/xxxslinyue/article/details/82992764