• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

SilkTest入门快打4-appstate

发布: 2011-3-25 09:20 | 作者: 不详 | 来源: 领测软件测试网采编 | 查看: 31次 | 进入软件测试论坛讨论

领测软件测试网

  SilkTest入门快打4-appstate    软件测试

  大伙好,吃了么,什么?还没有吃?那还不快去吃饱了听我继续讲课!

  在前三讲里,我们已经会用SilkTest 做简单的测试了,为了以后讲解过程中代码尽可能的简洁,我现在把上一讲中的CalWithFunction.t 脚本再精简一下,让它仅仅测试计算器1+2= 的功能是否正常,下面就是精简过后的代码:

  [-] testcase CalWithFunction()

  [ ] 计算器.SetActive() //2

  [ ] 计算器.C.Click () //3

  [ ] String sResultValue = Cal1Plus2()

  [ ] Verify(val(sResultValue), 3, "Expect: 3, actually it is {sResultValue}")

  [-] String Cal1Plus2()

  [ ] 计算器.N1.Click ()

  [ ] 计算器.Plus.Click ()

  [ ] 计算器.N2.Click ()

  [ ] 计算器.Equal.Click ()

  [ ] String sResultValue = 计算器.CalResult.GetText()

  [ ] return sResultValue

  现在我们考虑一下,如果去掉行2/3 ,会有什么问题?答案是可能会出现问题:在计算器应用打开的情况下,如果计算器上已经输入了一个数值,这时由于testcase 没有按C 进行清零,导致测试无法通过。也就是说,每次在进行测试之前,将计算器清零是一个前置条件。我们一方面可以继续保留行2/3 在testcase 里面,或者我们还可以将它们抽取出来作为一个appstate 进行声明。当然,我们这个case 运行的前置条件很简单,只有这两步,看不出appstate 有什么优势。实际上,在企业级的应用测试开始前,待测应用可能需要很多步才能进入待测状态,比如要先将待测软件置于某种特殊的状态(打开特定的菜单,关闭不需要的窗口等等)。这时,如果我们能把这些准备工作抽取出来封装成一个appstate 就可以为多个testcase 所公用,在一处所做的修改,处处都可以生效,既减少了重复的代码,又便于维护。所以appstate 是非常有用的,我们可以把CalWithFunction.t 重构成为如下:

  [-] testcase CalWithFunction () appstate PrepareCal //1

  [ ] String sResultValue = Cal1Plus2()

  [ ] Verify(val(sResultValue), 3, "Expect: 3, actually it is {sResultValue}")

  [-] String Cal1Plus2()

  [ ] 计算器.N1.Click ()

  [ ] 计算器.Plus.Click ()

  [ ] 计算器.N2.Click ()

  [ ] 计算器.Equal.Click ()

  [ ] String sResultValue = 计算器.CalResult.GetText()

  [ ] return sResultValue

  [-] appstate PrepareCal() basedon DefaultBaseState //2

  [ ] 计算器.SetActive() //3

  [ ] 计算器.C.Click () //4

  我简单解释一下,行1 指定了PrepareCal 为testcase 的开始状态,你可以简单理解成在testcase 开始前,必须运行PrepareCal 这段代码。而行2 声明了PrepareCal 是一个appstate ,它的父状态是DefaultBaseState 。DefaultBaseState 是SilkTest 系统默认的appstate 。一个appstate 的父状态表明,testcase 进入该appstate 之前必须先进入它的父状态。对于我们这个case 来说,SilkTest 在运行testcase 之前就先设置自己的状态为DefaultBaseState ,然后再设置自己的状态为PrepareCal ,然后才开始从String sResultValue = Cal1Plus2() 执行。

  动手运行一下,看看效果如何。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网