在嵌入式领域和大型软件领域,测试越来越彰显其重要性,公司会投入更多的人力来从事测试工作,在人力成本上升的,自动测试软件的需求开始变的越来越火,因为这显然已经直接跟成本挂钩了。

  写这篇文章算是自己近工作的一些感想和总结吧,可用于一些小型工程的自动测试软件设计。

  首先来想一下自动测试软件的工作的内容,即软件需求。

  我们的自动测试软件无论是真的硬件性能的测试或者真的软件功能模块稳健性的测试,对我们来说都可以把她抽象成一个个独立功能的Item(Process或者function),在每一项item里又会有其特定的执行过程,我们可以将这个过程抽象出一个个step,当然这些step对我们来说都是表象的step,没必要去考虑每个step具体的运行环境和执行流程,画个图吧:

  对于复杂的系统,每个item采用注册机制是好的,那需要新增一部分模块,我们对于固定的item和固定的step的设计实现思路,即将他们放入一个固定的数组或链表中进行统一的处理。

  先阐述此软件实现需系统提供的基础:

  1)定时器,用于实现回调

  2)定位当前item是否进行step递进的资源,如场景ID (Screen ID)或某索引ID等

  此处我们申请两个定时器,一个用于item的切换,一个用于step的切换,我们这里用伪函数来描述。

  我们定义当前item索引为i,当前step索引为s,先阐述定时器的回调:

void ItemHandler(void)
{
    items[i].DeInit();
    i++;
    if(i>ItemNum)i=0;
   
    items[i].Init();//或者应命名为entry
 
    s=0;//reset step index
}
 void StepHandler(void)
{
     switch(i)
    {
        case ItemX:
             switch(s)
            {
                case StepX:
                {
                    //do something let step going on
                    s++;
                }
                break;
                ……
            }
        break;
        ……
    }
 
}