关键字驱动测试模式初探

发表于:2012-12-29 11:12

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:雷藏    来源:TaoBao QA Team

  曾经在“我看软件测试”这篇文章中论述过,“测试效率的提高关键是测试手段的改进”。尤其在软件测试领域,没有千遍一律的测试方法,别人都说好的商业工具拿到你产品线来却未必合适。没有最好只有更好,如何才能产出符合淘宝框架的特色测试工具呢?之前在入淘宝之初,对淘宝架构、测试工具不甚熟悉的情况下,提出过《基于TTCN-3的Web应用自动化测试框架》一文,但却与淘宝现有的测试工具不相符合。随着对淘宝环境逐渐熟悉,一直都在思考改进测试的方法,这种方法一定要以现在使用的ITEST为基础,在经过不断地实践摸索以后,结合自己的经验,提出以下测试理论,望大家参详。

  一、概念提出

  在阐述我的观点之前,先来看看下面的例子。

  在ITEST中,订购一个套餐的用例代码如下所示:

public class PlanSubTest extends BaseCase{
 

         final static String NICK= "leizang_test";
         final static String PASS_WORD= "taobao1234";
        
         @BeforeClass
         public static void login(){
                   command.login(LOGIN_URL, NICK, PASS_WORD);
         }
        
         @AfterClass
         public static void loginOut(){
                   command.loginOut();
         }
        
         @Before
         public void cleanDB(){
                  
                   String nick= NICK;
                   command.dbExecute(
                                     "DELETE FROM upp_sub_plan WHERE nick= '"+ nick+ "'",
                                     "DELETE FROM upp_biz_order WHERE nick = '"+ nick+ "'",
                                     "DELETE FROM upp_prod_subscription WHERE nick = '"+ nick+ "'");
         }
        
         @Test
       public void test_planSub_雷藏_case01(){
                  
                   logTestName();
                  
                   //构造入参
                   SubOption subOption= new SubOption(getPlanSubUrl(827L), CycleEnum.HALF_YEAR, false);
                  
                   //从页面订购
                   command.doSub(subOption);
                  
                   //结果校验
                   Command.checkSubResult(subOption,
TableEnum.UPP_BIZ_ORDER,
TableEnum.UPP_SUB_PLAN,
TableEnum.UPP_PROD_SUBSCRIPTION);
}
}

  好了,虽然例子比较简单,但足以说明问题。

  “command”是在“BaseCase”中生成的一个静态的“遥控器”(姑且这么理解):

  “protected static ActionCommand command= new ActionCommandImpl(); “

  它就像我们的电视遥控器,空调遥控器一样,一旦你拥有了它,你就可以发出遥控器所支持的各种指令。所以,下面就理所当然地发出了各种“登录”,“退出”,“清除数据库“,“订购”,“校验”等各种指令,而代码就会依照我们发出的指令去执行,这就是所谓“关键字驱动测试”理念。

  二、测试建模

  试想一下,现在呈现在你面前的是一个万能机器人,而操控这个机器人的“遥控器“就在你手中,你按下”做饭“键,它会去做饭,你按下”洗衣“键,它会遵照你的命令去洗衣服。但是”巧妇难为无米之炊“,更何况是个没有生命的机器人。你在发出”做饭“指令之前,需要事先给它准备好”米“和”水“,这样它才会按照你预期的要求去做。当它完成任务的时候你需要去检查看看它完成的如何,饭做熟了没有。按照这种思路,我们对”指挥机器人做饭“的任务进行分解:

  1)准备米和水

  2)发出做饭指令

  3)检查饭做好了没有

  当你把这些跟上面的测试代码联系起来思考的时候,你会发现这一切是惊人的相似。在你对套餐订购进行测试的时候,你需要做如下几件事情:

  1)准备相关数据

  2)发出订购指令

  3)校验订购结果

  我们在编写测试用例的时候,如果能够方便地准备“入参“、”预期“,然后发出指令,代码就能自动地完成测试工作那该多好啊!

41/41234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号