#正常用例
#前提条件:
##############################尽量不要依赖于测试环境的数据,如果没有,就自己造环境。###########
#1.用户已登陆
#2.有能够投资的标 #如果没有标,则先加标。#通过查询数据库来处理,或者接口的方式加标。
#操作系统的数据库,只能查询,不能随便改系统的数据。这个系统不是你实现的,它内部有一些逻辑操作,
#你不知道它是怎么做的,会牵连到很多这种关联的数据库,如果不懂表之间的结构关系,你也没有办法做得到,
#那就别随便修改数据库里面的数据,可能你一改,这个系统就要出很多bug。
#接口发生过程中,会对关联的表结构都去做处理的,你是不知道的,所以只能查询不能改。
#你自己的测试数据存在数据库中,可以单独做处理,系统数据就不要去动它。
#3.用户有余额可以投资
#1.充一个亿
#2.接口方式查询下当前用户还有多少钱。> 6000 不用充值。 如果小于用例中投资的金额,那就充值。
#步骤
#1.在首页选标---不根据标名,根据抢头标。默认第一个标。
###标页面-获取一下投资前的用户余额
#2.标页面--输入投资金额、点击投资按钮。
#3.标页面--点击投资成功的弹出框-查看并激活,进入个人页面。
#断言
#钱 投资后的金额,是不是少了投资的量
#个人页面 - 获取投资后的金额
#投资前的金额-投资后的金额=投资金额
#投资记录对不对
#利息对不对?
这个页面除了自动化测试人员使用,还有功能测试人员使用,有人使用,就会创造数据,创造数据就会导致页面发生变化。
不要根据标名,无论哪个标名,都有抢头标按钮,就根据抢头标按钮来选就好了。无论它的标名是谁,就点第一个抢头标按钮就好了,证明你是可以投资的。
随便在哪个环境,无论环境的变化,都是默认第一个标,就基本上所有环境通用了。
每个标,都可点击抢头标的,但是实际项目中,如果这个标已经满了,或者流标了,这个地方是根本不能点击的。
只有允许投标操作的标,才能允许点击这样的按钮。如果它不可以投标,意味着它有一个属性disabled
或者别的属性让你不可以点击,或者将它隐藏起来。
所以,大家需要根据业务的逻辑展示来观察下在首页展示的这几个标,到底是能投资的还是不能投资的。
如果是不能够投资的,一定会在页面上体现它的区别。页面上有区别就意味着内容有区别,内容有区别意味着可以通过这样的标识过滤元素,过滤定位表达式。
通过定位表达式,直接锁定可以抢头标的元素。
如果3个标都满了,本质上不会遇到这样的情况。
前提条件,只需想办法准备这个条件就好,这个不是重点,所以这个前提条件不需走页面。步骤是必须走页面的。
Web自动化是模拟用户的一一操作。
其它情况下是永远都看不到查看并激活按钮的。
需要先处理这个弹出框,再进入个人页面。
可用余额:自己可以随便用的钱。
资产总值:包括投资后还没有回本的东西。--这个不用管。
第一种,进入自己的个人页面,进入我的账户。进去后,首先获取自己的个人余额,再去在这个页面进行投资。
点击抢头标,可看到界面有可用余额这个东西。当你观察页面的样式结构,会发现这里也有个可用余额:
点击我的账户-投资项目。
这种情况下,我要不要去查数据库啊?
这里显示得是83.33,要不要去数据库里查下是不是也是83.33呢?
不需要。
因为客户并不知道你的数据库在哪,客户并不知道你的接口是什么。
如果是做接口层面的自动化测试,那你是需要查数据库的。但是我如果走的是界面版本,我只看页面上是对还是不对。
如果不对,要么是前端开发人员做错了,要不是接口哪里错了。
Web自动化中,断言和步骤必须走页面。但是有时候步骤中有些非常小的点,影响了整个用例的稳定性,那你还是可以用点小手段,把影响稳定性的小问题给过了,不影响大局就行。
没有其它特殊情况,步骤和断言一律走页面。
前提条件:随便走数据库还是接口。
利息83.33走页面,要计算这个利息,要不要把这个断言也放在这个用例当中?
其实要判断下,有没有这个投资记录。
在投资项目当中,我作为一个用户,不但关心我的钱少没少,我还关心我的投资记录有没有。
如果想看第一条投资记录是不是你的,需要首先分析业务,投资项目都是按照时间顺序,最近投资的一条绝对是排在第一位的。
只需要在投资之后,获取第一条投资记录就可以。看下本金对不对,标名对不对,以及时间。
这个是表格数据的获取,大家可以去获取下。竞标中是不需要管的,只想看下标名对不对,本金对不对,时间对不对,投资记录对不对。
一个用例中断言不能太多。不要指望一条用例把所有该做的断言都做了。比如投资记录对不对,这个可以考虑。因为只要你投资,就一定会生成一条投资记录,而且只是获取下数据就可以了,好像也没有额外的测试用例可以设计。
利率不同,利息也不一样。还款的方式不一样,也意味着算的方式不一样。
还款的方式,年利率以及借款时间的不一样,肯定是每种都不一样的。
那你针对利息,是不是有不同的利率设计,那你需要跟它放在一起吗?
不需要同时断言处理。
可以额外设计测试用例,专门针对利息这一项来做。
这一项,你就不需要关注用户的余额少了多少,也不需要关注其它的一些事情。只需要关注,你一投资之后,马上去看投资记录,投资记录中它给你结算的利息对于否就可以了。 包括还款方式等等。
所以设计测试用例的时候要注意,要单一,断言1到2个就可以,太多了不合适,用别的用例来做这件事就行了。
利息对不对,就可以改成别的事情来做就可以。完全根据你的用例设计来。所以,在前期的工作中一定要有用例的评审。你认为不重要,不代表其它的测试觉得这个点不重要,或者说用户认为这个点不重要。结合大家看法,来确认下所有的自动化用例怎么设计。
用户已登录是可以通过代码来登录的。
第一种方式,能用就用,用不了就不用:
@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,不用充值。如果小于用例中投资的金额,那就充值。至于充值多少,看自己心情。
前提条件都是自己创造的,没有依赖于当前的测试环境。你会根据当前测试环境的状态去做改变,这种是自动化用例中非常重要的原则。
尽量不要依赖于测试环境的数据,如果没有,就自己造环境。
环境随时都会变,如果公司有钱,专门搭建了个自动化环境你自己用的,那你就尽可能省事得去做,哈哈哈,这种公司在哪里?
但是你在其它功能测试人员也在测试得环境中做自动化测试,那就要把这些非常重要的前提条件做好。因为别人会随时改变测试环境的数据,包括你们的测试人员可能会定期清理下整个数据库,将数据库中的垃圾数据初始化,偶尔你们会去同步下你们生产环境的数据,这种都是时有发生的。
所以环境是动态变化的,不要依赖它,自己想办法造。
造出来之后,随便你放在哪个环境,放在集成环境可以啊,不需要改代码,放在预生产环境也可以,不需要改代码,放在生产环境,可能需要考虑下权限的问题。
以上,是正常用例需要考虑的事情。