前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >做Web自动化需要考虑些什么?

做Web自动化需要考虑些什么?

作者头像
清菡
发布2020-12-02 15:25:46
5790
发布2020-12-02 15:25:46
举报
文章被收录于专栏:清菡软件测试清菡软件测试

文章总览图

代码语言:javascript
复制

#正常用例
#前提条件:
##############################尽量不要依赖于测试环境的数据,如果没有,就自己造环境。###########
#1.用户已登陆
#2.有能够投资的标  #如果没有标,则先加标。#通过查询数据库来处理,或者接口的方式加标。
#操作系统的数据库,只能查询,不能随便改系统的数据。这个系统不是你实现的,它内部有一些逻辑操作,
#你不知道它是怎么做的,会牵连到很多这种关联的数据库,如果不懂表之间的结构关系,你也没有办法做得到,
#那就别随便修改数据库里面的数据,可能你一改,这个系统就要出很多bug。
#接口发生过程中,会对关联的表结构都去做处理的,你是不知道的,所以只能查询不能改。
#你自己的测试数据存在数据库中,可以单独做处理,系统数据就不要去动它。
#3.用户有余额可以投资
  #1.充一个亿
  #2.接口方式查询下当前用户还有多少钱。> 6000 不用充值。 如果小于用例中投资的金额,那就充值。


#步骤
#1.在首页选标---不根据标名,根据抢头标。默认第一个标。
###标页面-获取一下投资前的用户余额
#2.标页面--输入投资金额、点击投资按钮。
#3.标页面--点击投资成功的弹出框-查看并激活,进入个人页面。


#断言
#钱  投资后的金额,是不是少了投资的量
#个人页面 - 获取投资后的金额
#投资前的金额-投资后的金额=投资金额
#投资记录对不对
#利息对不对?

尽量不要依赖于测试环境的数据,如果没有,就自己造环境。

这个页面除了自动化测试人员使用,还有功能测试人员使用,有人使用,就会创造数据,创造数据就会导致页面发生变化。

不要根据标名,无论哪个标名,都有抢头标按钮,就根据抢头标按钮来选就好了。无论它的标名是谁,就点第一个抢头标按钮就好了,证明你是可以投资的。

随便在哪个环境,无论环境的变化,都是默认第一个标,就基本上所有环境通用了。

每个标,都可点击抢头标的,但是实际项目中,如果这个标已经满了,或者流标了,这个地方是根本不能点击的。

只有允许投标操作的标,才能允许点击这样的按钮。如果它不可以投标,意味着它有一个属性disabled或者别的属性让你不可以点击,或者将它隐藏起来。

所以,大家需要根据业务的逻辑展示来观察下在首页展示的这几个标,到底是能投资的还是不能投资的。

如果是不能够投资的,一定会在页面上体现它的区别。页面上有区别就意味着内容有区别,内容有区别意味着可以通过这样的标识过滤元素,过滤定位表达式。

通过定位表达式,直接锁定可以抢头标的元素。

如果3个标都满了,本质上不会遇到这样的情况。

前提条件,只需想办法准备这个条件就好,这个不是重点,所以这个前提条件不需走页面。步骤是必须走页面的。

Web自动化是模拟用户的一一操作。

其它情况下是永远都看不到查看并激活按钮的。

需要先处理这个弹出框,再进入个人页面。

可用余额:自己可以随便用的钱。

资产总值:包括投资后还没有回本的东西。--这个不用管。

1.投资之前怎么获取?

第一种,进入自己的个人页面,进入我的账户。进去后,首先获取自己的个人余额,再去在这个页面进行投资。

点击抢头标,可看到界面有可用余额这个东西。当你观察页面的样式结构,会发现这里也有个可用余额:

2.如果想判断下利息算得对不对?

点击我的账户-投资项目。

这种情况下,我要不要去查数据库啊?

这里显示得是83.33,要不要去数据库里查下是不是也是83.33呢?

不需要。

因为客户并不知道你的数据库在哪,客户并不知道你的接口是什么。

如果是做接口层面的自动化测试,那你是需要查数据库的。但是我如果走的是界面版本,我只看页面上是对还是不对。

如果不对,要么是前端开发人员做错了,要不是接口哪里错了。

Web自动化中,断言和步骤必须走页面。但是有时候步骤中有些非常小的点,影响了整个用例的稳定性,那你还是可以用点小手段,把影响稳定性的小问题给过了,不影响大局就行。

没有其它特殊情况,步骤和断言一律走页面。

前提条件:随便走数据库还是接口。

利息83.33走页面,要计算这个利息,要不要把这个断言也放在这个用例当中?

其实要判断下,有没有这个投资记录。

在投资项目当中,我作为一个用户,不但关心我的钱少没少,我还关心我的投资记录有没有。

如果想看第一条投资记录是不是你的,需要首先分析业务,投资项目都是按照时间顺序,最近投资的一条绝对是排在第一位的。

只需要在投资之后,获取第一条投资记录就可以。看下本金对不对,标名对不对,以及时间。

3.这么多的东西,要所有的都断言吗?

这个是表格数据的获取,大家可以去获取下。竞标中是不需要管的,只想看下标名对不对,本金对不对,时间对不对,投资记录对不对。

一个用例中断言不能太多。不要指望一条用例把所有该做的断言都做了。比如投资记录对不对,这个可以考虑。因为只要你投资,就一定会生成一条投资记录,而且只是获取下数据就可以了,好像也没有额外的测试用例可以设计。

4.利息对不对,可以用不同的方式来设计?

利率不同,利息也不一样。还款的方式不一样,也意味着算的方式不一样。

还款的方式,年利率以及借款时间的不一样,肯定是每种都不一样的。

那你针对利息,是不是有不同的利率设计,那你需要跟它放在一起吗?

不需要同时断言处理。

可以额外设计测试用例,专门针对利息这一项来做。

这一项,你就不需要关注用户的余额少了多少,也不需要关注其它的一些事情。只需要关注,你一投资之后,马上去看投资记录,投资记录中它给你结算的利息对于否就可以了。 包括还款方式等等。

所以设计测试用例的时候要注意,要单一,断言1到2个就可以,太多了不合适,用别的用例来做这件事就行了。

利息对不对,就可以改成别的事情来做就可以。完全根据你的用例设计来。所以,在前期的工作中一定要有用例的评审。你认为不重要,不代表其它的测试觉得这个点不重要,或者说用户认为这个点不重要。结合大家看法,来确认下所有的自动化用例怎么设计。

用户已登录是可以通过代码来登录的。

5.如果面试问,有什么方式提升用例的执行效率?

第一种方式,能用就用,用不了就不用:

代码语言:javascript
复制
   @classmethod
    def setUpClass(cls):
        #通过excel读取本功能当中需要的所有测试数据
        print("===所有测试用例之前的,setup====整个测试用例只执行一次========")
        cls.driver = webdriver.Chrome()
        cls.driver.get(CD.web_login_url)
        cls.lg = LoginPage(cls.driver)
        pass

    @classmethod
    def tearDownClass(cls):
        print("===所有测试用例之后的,teardown====整个测试用例只执行一次========")
        cls.driver.quit()

第二种,在你的前置条件中,你用到了接口或者数据库的方式。直接跳过了页面操作,来提升了你的效率。

用户有余额可以投资:需要判断下当前用户有多少钱。

你不能时刻确定用户时刻都有一千万,用自动化代码天天投,总有一天能投完。充一个亿,这个自动化代码运行一年都可以,哈哈哈。

有的用户可能只有100、200、300万,用着用着就没有了。如果确定你的这条测试用例要投资6000块,可能别的用例也要投资,那就不好说,钱是随时变动的。接口方式查询下当前用户还有多少钱,> 6000,不用充值。如果小于用例中投资的金额,那就充值。至于充值多少,看自己心情。

前提条件都是自己创造的,没有依赖于当前的测试环境。你会根据当前测试环境的状态去做改变,这种是自动化用例中非常重要的原则。

尽量不要依赖于测试环境的数据,如果没有,就自己造环境。

环境随时都会变,如果公司有钱,专门搭建了个自动化环境你自己用的,那你就尽可能省事得去做,哈哈哈,这种公司在哪里?

但是你在其它功能测试人员也在测试得环境中做自动化测试,那就要把这些非常重要的前提条件做好。因为别人会随时改变测试环境的数据,包括你们的测试人员可能会定期清理下整个数据库,将数据库中的垃圾数据初始化,偶尔你们会去同步下你们生产环境的数据,这种都是时有发生的。

所以环境是动态变化的,不要依赖它,自己想办法造。

造出来之后,随便你放在哪个环境,放在集成环境可以啊,不需要改代码,放在预生产环境也可以,不需要改代码,放在生产环境,可能需要考虑下权限的问题。

以上,是正常用例需要考虑的事情。


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 清菡软件测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章总览图
    • 尽量不要依赖于测试环境的数据,如果没有,就自己造环境。
      • 1.投资之前怎么获取?
      • 2.如果想判断下利息算得对不对?
      • 3.这么多的东西,要所有的都断言吗?
      • 4.利息对不对,可以用不同的方式来设计?
      • 5.如果面试问,有什么方式提升用例的执行效率?
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档