CarterCat's Blog.

自动化测试,从入门到跑路-1

Word count: 873 / Reading time: 3 min
2018/06/10 Share

自动化测试,从入门到跑路-1

年轻的测试哟,听说你要写自动化?

听说不想做自动化的测试,不是好开发。作为一名高贵的处女座软件测试工程师,区区自动化还是信手拈来的。
(才不会告诉你,是我们老大要求我去写)


这里是背景:
因为某项目在迁移技术栈,从Ruby迁移至PHP,由于没有测试介入,导致上线后部分功能不可用,于是老大揪过来了测试,并且要求能写自动化的地方就尝试写些自动化。


作为本司唯二的测试,自然义不容辞的拉上了另外一个测试,从头把项目整理了一遍。

1、2、3,开始动手做

这次要做的事情是:检查界面显示文章的显示是否正常。

已经手动过了一遍,但是作为一名有理想、有追求、有想法的三有青年,怎么可能满足于这种机械重复的点点点,于是为了(偷懒)更高效、高质量的敏捷测试,打开万恶的PyCharm,新建Project,开始了这条不归路。

问,把界面做自动化,总共分几步?

第1步 分析界面

我们的网页是纯HTML项目,没有用Vue之类的框架,对测试来说还是比较友好的,很多界面的元素可以直接定位操作。

我们的目标是检查界面显示的内容是否有问题,化繁为简,也就是说界面显示的文本中,不包含

1
'<div>'、'</div>'、'<a>'、'</a>'、'&lt;'、'&gt;'

等基本就没什么问题。

第2步 开开心心敲脚本

于是大手一挥,写出了一个函数:

1
2
def check_text(text):
return('<'in text)and('&lt;' in text)and('&gt;' in text)

检查用的函数已经搞定,剩下的就是获取页面元素了。

此次我们需要检查的界面有两个:

1
url = [’链接A’, ’链接B‘]

尝试获取需要验证的部分,再偷懒简化下范围,只要界面第一页的文章列表,标题和摘要显示没问题,基本就OK了。

获取当前界面所有文章的标题和摘要:

1
2
item_title=driver.find_elements_by_class_name(’item_title’)
item_content_box= driver.find_elements_by_class_name(’item_content_box’)

剩下的就是把所有的内容检查一遍了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def check_articles(num, titles, boxes):
for i inrange(0, len(titles)):
title = titles[i].text
box = boxes[i].text
if(check_text(title) or check_text(box)):
print('链接:'+ url[num])
print(title + box+ '显示错误')
driver.quit()
elif i < (len(titles)-1):
continue
else:
print('链接:'+ url[num])
print('所有文章标题和摘要,显示正常')
driver.quit()

最后就是启动我们伟大的webdriver,但是很慢,还好Chrome新增了headless模式,可以不用启动界面,速度快了好多。
自从用了headless,腰不酸了,腿不疼了,走路有劲了,一口气写五个测试脚本,不费劲。

1
2
3
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
driver = webdriver.Chrome(chrome_options=chrome_options)

第3步 组合

本来是想用unittest组合起来,但是后来想想,就这么两个界面懒癌,还是算了,就这样也挺好。

最后的最后

这次只是检查了界面的基本显示,并没有对其他项目进行检查,也没有涉及到接口和业务逻辑的测试,关于这些内容,会放到后面进行详细展开。

我就是我,不一样的测试。

CATALOG
  1. 1. 自动化测试,从入门到跑路-1
    1. 1.1. 年轻的测试哟,听说你要写自动化?
    2. 1.2. 1、2、3,开始动手做
    3. 1.3. 问,把界面做自动化,总共分几步?
      1. 1.3.1. 第1步 分析界面
      2. 1.3.2. 第2步 开开心心敲脚本
      3. 1.3.3. 第3步 组合
    4. 1.4. 最后的最后