在进行 UI 测试时,一般来说我们都是编写固定的流程脚本,其中各种数据基本上都预先设定好,或者使用数据驱动的方式列出一部分数据。
这种方式固然有其好处,但是毕竟失掉了一些覆盖度,造成数据选项覆盖不全面。
可以在自动化测试过程中,引入一定的随机测试内容来实现一部分对流程影响不大的内容的随机性测试。可以增加同样代码情况下流程的覆盖。
这里面会用到 Python 中的 random(随机函数库)。
下面以一个系统的注册为例:
在选择用户所在地区时,通过连接点击选择省市:

通过网页结构分析,这些元素都是一个无序列表 ul 中的 a 元素:

可以借助随机库中的 random.choice() 函数,随机选择省市:
# 随机选择省
random.choice(driver.find_elements_by_css_selector('#list_1 a')).click()
# 随机选择市
random.choice(driver.find_elements_by_css_selector('#list_2 a')).click()
另外,诸如姓名、年龄、邮箱、手机号等都可以随机生成。
一些业务上也可以进行随机,比如随机选择某一类型的产品进行购买等。
但是随机测试一定要注意,随机不代表不需要断言,比如随机选择一个商品购买,那么当你在随机到某个商品的时候,必须要能提取一些关键信息出来。
比如下面的商品,如果你想随机选择一个商品来进行下单流程,那么商品的名称、价格、促销信息、是否免邮等关键信息需要获取,才能在最终订单的断言中判断流程的正确性。

而不是说,实现随机选择就可以了,而是通过随机的方式来获取更大的一个覆盖。但是随机测试终究是测试,测试就需要判断预期和实际结果。
网友评论