软件测试大赛-嵌入式 代码书写

本文详细介绍了自动化测试在不同场景下的应用,包括功能测试、递推表达式计算、读写操作以及输入输出接口测试。针对温度传感器和车速传感器,展示了如何进行数值截断检查、递推算法实现以及数据读写的步骤。同时,提供了输入接口测试的帧构造和输出接口测试的数据验证方法。
摘要由CSDN通过智能技术生成

2019年省赛题目为例

写在前面的话:
1.功能测试里不涉及包的发送,所以写的方式都是 协议写(Protocol…write())协议写是让待测件显示数据。
2.输入接口测试需要自己设计帧,然后通道写(带参数的)把帧送到硬件里。注意要把帧拆分之后再转成十六进制
3.输出接口测试需要自己给字段赋值, 然后协议写相关元器件(这个元器件是发给待测件的),然后待测件相应的包发给 接受包的元器件,该元器件进行BlockRead()
4. 用BlockRead() 是可以接收数据的器件,写这个语句前一般是对 输入设备进行了字段赋值操作,用BlockRead()的好像用的都是 协议写
5.涉及通道的操作只有 通道清除Clear输入接口测试的写操作

功能测试:

一.测数值是否被截断的代码:

1.清空 接受器件的通道
2.赋值 接受器件的值
3.协议写 待测件前端
4.延时1s
以温度传感器为例:

def Test(arg,exp):
	CH_232_温度传感器.Clear()
	Protocol_温度传感器.温度值.Value = arg[1]
	bool=Protocol_温度传感器.Write()
	API.Common.Timer.Normal.Sleep(1000)
Standard_Test(Test)

再以预选赛试题为例:

# coding:utf-8
import Manu
def Test(arg,exp):
      Protocol_车速传感器.speed.Value=arg[0]
      bool=Protocol_车速传感器.Write()
      show=[]
      show.append("车速为:"+str(exp[0]))
      passed=Manu.Check(show)
Standard_Test(Test)

二.涉及递推表达式的代码

1. 递推函数
2.声明全局变量(因为递推会用到上次的值)

3.清空 接受器件的通道
4.赋值 接受器件的值
5.协议写 待测件前端

6.相关器件包读待测件发来的包
7.调用相关器件的函数进行运算
再以温度传感器为例:

# coding:utf-8
#设定温度为10℃
#散热风扇输出值0为关,1为开
#Segment 加热棒输出电压 StandardFloat
import math, Manu
def VK(t, td, e1, e2):
    Dp = 0.05
    Di = 0.1
    Dd = 0.1
    e = td - t
    result = Dp * (e - e1) + Di * e + Dd * (e - 2 * e1 + e2)
    return result
def Test(arg,exp):
      global e1
      global e2
      global v1
      seekresult=CH_232_加热棒.Clear()
      seekresult=CH_232_温度传感器.Clear()
      Protocol_温度传感器.温度值.Value = arg[2]
      bool=Protocol_温度传感器.Write()
      API.Common.Timer.Normal.Sleep(1000)
      if arg[0] == 1:
          e1 = arg[1] - arg[2]
      if arg[0] == 2:
          e2 = arg[1] - arg[2]
          Protocol_加热棒.BlockRead()
          v1 = Protocol_加热棒.加热棒输出电压.Value
      if arg[0] > 2:
          V = VK(arg[2], arg[1], e1, e2) + v1
          print VK(arg[2], arg[1], e1, e2)
          print v1
          e2 = e1
          e1 = arg[1] - arg[2]
          Protocol_加热棒.BlockRead()
          v1 = Protocol_加热棒.加热棒输出电压.Value
Standard_Test(Test)

三.读写的代码

1.清空通道
2.赋值相关元器件
3.相关器件包读待测件发来的包
4.调用相关器件的字段进行验证
以温度传感器为例:

# coding:utf-8
#设定温度为10℃
#散热风扇输出值0为关,1为开
def Test(arg,exp):
      CH_232_温度传感器.Clear()
      CH_232_散热风扇.Clear()
      
      Protocol_温度传感器.温度值.Value = arg[1]
      Protocol_温度传感器.Write()
      API.Common.Timer.Normal.Sleep(500)
      
      Protocol_温度传感器.温度值.Value = arg[2]
      Protocol_温度传感器.Write()
      API.Common.Timer.Normal.Sleep(500)
      
      Protocol_温度传感器.温度值.Value = arg[3]
      Protocol_温度传感器.Write()     
      Protocol_散热风扇.BlockRead()
      
      print '第%d次期望散热风扇输出值%d,实际输出值%d'%(arg[0], exp[0],Protocol_散热风扇.操作指令.Value)
      API.Common.Timer.Normal.Sleep(2000)

Standard_Test(Test)

四.普通程序书写

1.常量变量自由定义,没有约束。
2.注意循环的书写,变量的更替赋值等。
以 预选赛题目为例:


Dp = 0.05
Di = 0.1
Dd = 0.1

vd = 80
spd = [60, 63, 67, 71, 73, 76, 79, 81, 83, 85]
UK = 0
uk1 = 1
seekresult=CH_油门.Clear()

for i in range(len(spd)):
   vk = spd[i]
   if (i==0):
       ek = vd - vk
       ek1 = 0
       ek2 = 0
   elif (i == 1):
       ek =  vd - vk
       ek1 = vd - spd[i-1]
       ek2 = 0
   else:
       ek =  vd - vk
       ek1 = vd - spd[i-1]
       ek2 = vd - spd[i-2]
       
   UK = Dp*(ek - ek1) + Di*ek + Dd*(ek - 2* ek1 + ek2) + uk1
   print UK
   uk1 = UK
   Protocol_车速传感器.speed.Value = vk
   bool=Protocol_车速传感器.Write()
   Protocol_油门.BlockRead()
   print "预期输出电压 %f"% (Protocol_油门.voltage.Value)
   API.Common.Timer.Normal.Sleep(1000)

接口测试

一.输入接口测试(输入接口需要自己构造数据)

1.清空通道
2.读包,用spilt分割,创建数组把拆分的包转成16进制
3.通道写入相应器件。
以温度传感器为例

# coding:utf-8
import Manu
def Main(arg,exp):
      CH_232_温度传感器.Clear()
      str=arg[0].split(' ')
      data=[]
      for i in str:
            data.append(int(i,16))
      bool=CH_232_温度传感器.Write(data)
      show=[]
      show.append(exp[0])
      passed=Manu.Check(show)
      print exp[0]
      if passed:#测试通过
          print '本次测试通过。'
      else:
          print '本次测试不通过。'

Standard_Test(Main)
# coding:utf-8
import Manu

def Test(arg,exp):
      seekresult=CH_车速传感器.Clear()
      arr = arg[0].split(' ')
      data = []
      for i in arr:
           data.append(int(i,16)) 
      bool=CH_车速传感器.Write(data)
      a=Manu.Check([exp[0]])
      print exp[0] + ":" + str(a)
      API.Common.Timer.Normal.Sleep(500)
      Protocol_车速传感器.speed.Value=100
      bool=Protocol_车速传感器.Write()
      API.Common.Timer.Normal.Sleep(500)
      if Protocol_车速传感器.head.Value != 0xFF55:
            print '包头错误,错误的包头为%x'%Protocol_车速传感器.head.Value
      if Protocol_车速传感器.cmdType.Value != 0x08:
            print 'cmdType错误,错误的cmdType为%d'%Protocol_车速传感器.cmdType.Value
      if Protocol_车速传感器.dataLength.Value != 4:
            print '数据长度错误,错误的长度值为%d'%Protocol_车速传感器.dataLength.Value
      if Protocol_车速传感器.checksum.Checked != True:
            print '检验值错误,错误的校验值为%x'%Protocol_车速传感器.checksum.Value
      if Protocol_车速传感器.tail.Value !=0xFF55:
            print '包尾错误,错误的包尾为%x'%Protocol_车速传感器.tail.Value
Standard_Test(Test)

二.输出接口测试

1.输出设备设定初始值
2.将输出设备信息输出到待测件
3.输入设备进行包读(BlockRead())
4.判断各个信息

在这里插入图片描述

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值