安卓自动化测试总结(五)——测试结果发送及内容展示

安卓自动化测试总结(五)——测试结果发送及内容展示

  使用jenkins自动构建并完成自动化测试后,如果想看测试结果,都需要打开jenkins构建地址,找到对应的构建及构建结果。这样做很麻烦,关心自动化测试结果的人可能在测试用例未执行或没有执行完时,多次打开该构建;或者在运行多次错误结果后,也未看过执行结果。所以,提出了使用邮件发送测试结果的想法。

发送测试结果邮件

借用我们接口测试的python发邮件代码,实现了安卓自动化测试结果的自动发送。其发送邮件的示例如下:

def sendMail(self):

  smtp = smtplib.SMTP()

  smtp.connect(self.smtpserver,25)

  smtp.login(self.sender,self.password)

  self.content =base64.b64encode(self.content)

  msg ="From:%s\nTo:%s\nSubject:%s\nContent-Type:text/html\nContent-Transfer-Encoding:base64\n\n%s"% (self.sender,self.receiver,self.subject,self.content)

  smtp.sendmail(self.sender,self.receiver, msg)

  smtp.close()

  其中self.sender,self.receiver,self.subject,self.content分别是发件人、收件人、主题和发送内容。我们发送邮件前,主要修改的是发送内容,可以是文本内容,也可以是表格或更复杂的邮件内容。

发送junit结果

  发送文本或表格内容虽然可以满足测试要求,但没有jenkins中显示的junit结果简单明了。所以考虑直接借用jenkins中的junit测试结果。这样既减少代码量,又可以直接关联回jenkins中的对应链接。读取jenkins对应页的python代码如下。

user_agent ='Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13(KHTML, likeGecko) Version/3.1Safari/525.13'

values = {'language':'Python'}

headers = {'User-Agent': user_agent }

data = urllib.urlencode(values)

req= urllib2.Request(urlConst, data, headers)

context = ssl._create_unverified_context()

response = urllib2.urlopen(req, context=context)

the_page = response.read()

testresult = the_page[the_page.index('<h1>Test Result</h1>') + len('<h1>Test Result</h1>):the_page.index('')]

testresult = testresult.replace('ahref="','ahref="'+ urlConst)

testresult = testresult.replace('

  把testresult的内容,增加到发送的邮件self.content,就可以让邮件显示测试结果网页了。测试结果网页如下:


只发送有错误执行结果的邮件

  由于测试自动化在开发提交代码后即立即执行,也因为有时进行调试导致更多的测试次数,很多人觉得邮件发送比较频繁。我们采取的改进方法是,在unstable状态下,才触发发送邮件的job。


合并多个junit结果

  由于安卓界面自动化的用例有50多个,如果运行在一个jenkins任务,则运行时间比较长,在失败时,也可能有更多意想不到的问题。所以,每个jenkins任务仅执行10多个用例,从冒烟测试、一般测试、很慢的测试等多个角度考虑进行分组。但这样存在一个问题,如何得到一个完整的结果,而不是得到零碎的片面结果,由收到测试结果的人自己在去对比和合并,才能得到一个整体的印象。

  后来想到的就是把测试结果从各个jenkins任务拷贝过来,然后进行合并,把合并后的结果,像一次执行的结果一样,发送邮件。因为,合并后的结果,本身就和一次执行得到的结果没有区别。

  自动化结果的展示和邮件发送,不同的人提出了不同的问题,才逐渐改进成目前的样子。后续,将根据对当前结果的意见,继续改进,以便更能符合测试和开发的要求。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • 前言 在进行日常的自动化测试实践中,我们总是需要将测试过程中的记录、结果等等等相关信息通过自动的手段发送给相关人员...
    苦叶子阅读 681评论 0 5
  • 自动化测试方案 自动化测试方案 自动化测试框架图 测试用例使用单元测试框架 测试业务使用 Page-Object ...
    厲铆兄阅读 3,133评论 2 19
  • 上一篇主要介绍了本地独立完成一个UI自动化工程的建立,本篇继续学习安卓UI自动化。关于安卓UI自动化学习,我的学习...
    隋胖胖LoveFat阅读 578评论 0 0
  • 老家是一个穷乡僻壤的小地方,老一辈有很多人一生都生活在这里,外面的世界是什么样子,她们大多数都是听自己孩子从南方沿...
    席帽青衫太瘦生阅读 563评论 0 2