模块测试

美团点评云真机平台实践

匿名 (未验证) 提交于 2019-12-03 00:43:02
随着美团点评业务越来越多,研发团队越来越庞大,对测试手机的需求显著增长。这对公司来说是一笔不小的开支,但现有测试手机资源分配不均,利用率也非常有限,导致各个团队开发、测试过程中都很难做到多机型覆盖。怎么样合理、高效利用这些测试手机资源,是摆在我们面前的一道难题。 为了解决这些问题,业内也出现了一些手机管理和在线调试使用的工具或平台,比较常见的有: * OpenSTF * 百度MTC的远程真机调试 * Testin的云真机 * 腾讯WeTest的云真机 * 阿里MQC的远程真机租用 其中OpenSTF是开源项目,其他的平台大多也都是基于OpenSTF原理实现的。因此,我们对OpenSTF项目进行了深入研究。 我们首先按照OpenSTF官方的方案进行了搭建,并进行了小规模的应用,但渐渐的我们发现了它的一些问题: * 模块过多而且耦合紧密,解耦难度较大,每次修改需要更新所有模块,难以快速迭代开发。 部分技术选型落后。由于OpenSTF出现的时间比较早,部分技术已经落后于目前的主流。例如OpenSTF前端选用AngularJS 1.0进行开发,在生态链方面已经落后于其他流行的框架;数据库方面选用非关系型数据库RethinkDB,在数据计算和性能方面弱于MySQL等关系型数据库,同时RethinkDB资料较少,不便于开发与维护。 OpenSTF屏幕图像传输采用图片单张传输的方式进行

(十二)软件测试基本理论

匿名 (未验证) 提交于 2019-12-03 00:19:01
一、软件开发阶段 需求分析 ①根据客户的要求,清楚了解客户需求中的产品功能、性能、界面和具体规格等,然后进行分析,确定软件产品索要达到的目标 ②要形成规则说明书 概要设计 ① 系统分析员审查软件计划、软件需求分析提供的文档,提出候选的最佳推荐方案,确定模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块,确定模块间的联系,确定数据结构、文件结构、数据库模式等 ② 概要设计说明书 详细设计 ① 将每一个模块确定使用的算法,并用适当的工具(如流程图)表示算法的过程,写出模块的详细过程性描述;确定每个模块使用的数据结构;确定模块接口的细节,包括用户界面、数据输入输出等全部细节。 ② 详细设计说明书 编码 通过编程语言实现 哪个阶段引入的缺陷最多? 二、软件测试阶段 单元测试 ①依据:详细设计文档 ②以黑盒测试(功能测试)为主,重点核心模块可以进行白盒测试(检查代码) ③可能需要编写驱动模块或桩模块【因为一个模块,可能不会单独存在,需要调用别的模块或者被别的模块调用】 驱动模块:模拟被测模块的上一级模块(调用被测模块的哪个模块) 桩模块:模拟被测模块的下一级模块(被被测模块调用的模块) ④在实际工程中,为了节约成本,单元测试经常只由开发人员完成,有悖于测试测试思想(测试必须由第三方来完成) 一个好的单元测试将会在产品开发的阶段发现大部分的缺陷,并且修改它们的成本也很低。

unittest单元测试框架总结

匿名 (未验证) 提交于 2019-12-02 23:57:01
unittest单元测试框架总结 Ŀ¼ 一、unittest模块的各个属性说明 二、使用unittest框架编写测试用例思路 三、使用unittest框架编写测试用例实例 一、unittest模块的各个属性说明 点击返回目录 1.unittest的属性如下: ['BaseTestSuite', 'FunctionTestCase', 'SkipTest', 'TestCase', 'TestLoader', 'TestProgram', 'TestResult', 'TestSuite', 'TextTestResult', 'TextTestRunner', '_TextTestResult', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__unittest', 'case', 'defaultTestLoader', 'expectedFailure', 'findTestCases', 'getTestCaseNames', 'installHandler', 'loader', 'main', 'makeSuite', 'registerResult', 'removeHandler', 'removeResult', 'result',

golang--性能测试和分析

匿名 (未验证) 提交于 2019-12-02 23:03:14
测试分为:压力测试、负载测试、性能测试,功能测试等等,其中在开发过程中开发人员经常要写一些test case unit 自己的模块进行功能测试测和性能。在分析出模块的性能瓶颈后开发人员就需要针对性的调优,但需要提醒的是调优工程一般要放在最后在进行,过早地优化会浪费开发时间,而且有时在需求或者功能变动后就会变成无用功,这是显而易见的。 随着移动互联网的兴起,各种远端服务的性能遇到巨大的挑战,虽然硬件资源日益丰富,但成本的增加和用户体验的严苛,性能调优在软件开发中占的权重也越来越高,尤其是一些经常被调用的模块,如核心算法的部分,即使把每次执行的cpu运行的时间降低1%,把内存消耗降低1%,在面对海量的用户请求时对性能也会带来提升。 Go语言作为一个“新兴语言”,它自身为我们提供了一套用于性能测试和分析的工具和接口,作者这里结合一个具体实例来讲解一下简单的调优过程。 启动指定的测试函数 go test -run=xxx $packetpath 编译一个测试binary文件 go test -c -o $binaryname 启动一个bench测试 go test -bench=xxx -run=None 在 -bench 的选项上设置一个None代表着不运行功能测试函数即Test开头的函数,-bench后面接的是一个匹配项,任何符合该匹配项的Bench测试函数都会被触发执行。 go

python测试断言

匿名 (未验证) 提交于 2019-12-02 22:56:40
  这几天看了一下python的测试,基于函数方法和基于类的测试,主要使用的模块是unittest模块,为特定的方法和类,建立测试模块,测试函数功能是否满足预期。下面是模仿书里面的一个例子。   City.py模块 def city(city_name,country_name): full_city_name = city_name + ‘ , ‘ + country_name return full_city_name   为这个模块创建一个测试模块,主要是为了测试这个city方法是否能够满足预期。   assert模块 import unittest from City import city class Testcity(unittest.TestCase): def test_city(self): city_name = ‘ Santiago ‘ country_name = ‘ Chile ‘ full_city_name = city(city_name,country_name) print (full_city_name) self.assertEqual(full_city_name, ‘ Santiago,Chile ‘ ) # self.assertEqual(4+5,9) if __name__ == ‘ __main__ ‘ : unittest

送你一款Python异步爬虫代理池!超级实用!已开源!

匿名 (未验证) 提交于 2019-12-02 22:54:36
项目地址 https : //gi thub.com /chenjiandongx/ async-proxy-pool Async Proxy Pool 异步爬虫代理池,以 Python asyncio 为基础,旨在充分利用 Python 的异步性能。 配置文件 配置文件 config.py,保存了项目所使用到的所有配置项。如下所示,用户可以根据需求自行更改。不然按默认即可。 总体架构 项目主要几大模块分别是爬取模块,存储模块,校验模块,调度模块,接口模块。 爬取模块 负责爬取代理网站,并将所得到的代理存入到数据库,每个代理的初始化权值为 INIT_SCORE。 存储模块 封装了 Redis 操作的一些接口,提供 Redis 连接池。 校验模块 验证代理 IP 是否可用,如果代理可用则权值 +1,最大值为 MAX_SCORE。不可用则权值 -1,直至权值为 0 时将代理从数据库中删除。 调度模块 负责调度爬取器和校验器的运行。 接口模块 使用 sanic 提供 WEB API 。 返回指定数量的代理,权值从大到小排序。 $ http http: //localhost: 3289 /get/ 10 HTTP/ 1.1 200 OK Connection : keep-alive Content - Length : 393 Content - Type : application

Python34之模块测试(__name__ == \"__main__\")

匿名 (未验证) 提交于 2019-12-02 22:51:30
1 def c2f ( cel ): 2 fah = cel * 1.8 + 32 3 return fah 4 5 def f2c ( fah ): 6 cel = ( fah - 32 ) / 1.8 7 return cel 8 9 def test1 (): 10 print ( "今年的春风好冷,0摄氏度为%.2f华氏度" % c2f ( 0 )) 11 12 def test2 (): 13 print ( "今年的春风好冷,0华氏度为%.2f摄氏度" % f2c ( 0 )) 14 15 if __name__ == '__main__' : 16 test1 () 17 test2 () 18 19 20 运行结果: 21 今年的春风好冷, 0 摄氏度为 32.00 华氏度 22 今年的春风好冷, 0 华氏度为- 17.78 摄氏度 View Code   首先我们看上面的代码,这个模块中我们设置了四个方法,分别为 c2f() f2c() test1() test2()四个,test1()和test2()为测试代码使用的,用于测试我们所使用的模块是否正确,c2f()和f2c()是用于外部函数调用使用的   一个模块可以有两种使用方法:     1、直接作为程序运行     2、作为一个模块导入到其它程序中   程序默认都有一个__name__变量

Python : 标准库-测试模块

匿名 (未验证) 提交于 2019-12-02 22:51:30
开发高质量软件的方法之一是为每一个函数开发测试代码,并且在开发过程中经常进行测试 doctest模块提供了一个工具,扫描模块并根据程序中内嵌的文档字符串执行测试。 测试构造如同简单的将它的输出结果剪切并粘贴到文档字符串中。 通过用户提供的例子,它强化了文档,允许 doctest 模块确认代码的结果是否与文档一致: def average(values): “”"Computes the arithmetic mean of a list of numbers. >>> print(average([20, 30, 70])) 40.0 """ return sum(values) / len(values) import doctest doctest.testmod() # 自动验证嵌入测试 unittest模块不像 doctest模块那么容易使用,不过它可以在一个独立的文件里提供一个更全面的测试集: import unittest class TestStatisticalFunctions(unittest.TestCase): def test_average(self): self.assertEqual(average([20, 30, 70]), 40.0) self.assertEqual(round(average([1, 5, 7]), 1), 4.3)

python开发—模块和包

巧了我就是萌 提交于 2019-12-02 22:35:55
阅读目录 一 模块 3.1 import 3.2 from ... import... 3.3 把模块当做脚本执行 3.4 模块搜索路径 3.5 编译python文件 二 包 2.2 import 2.3 from ... import ... 2.4 __init__.py文件 2.5 from glance.api import * 2.6 绝对导入和相对导入 2.7 单独导入包 回到顶部 一 模块 1 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。 但其实import加载的模块分为四个通用类别:    1 使用python编写的代码(.py文件)   2 已被编译为共享库或DLL的C或C++扩展   3 包好一组模块的包   4 使用C编写并链接到python解释器的内置模块 2 为何要使用模块? 如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时就通过python test.py方式去执行,此时test.py被称为脚本script。 随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理。这时我们不仅仅可以把这些文件当做脚本去执行,还可以把他们当做模块来导入到其他的模块中

星云精准测试对安卓底层驱动代码的测试案例分析

∥☆過路亽.° 提交于 2019-12-02 18:12:16
Android原生底层驱动应用面极广,但一直没有很好的办法进行质量追踪。本文借助星云精准测试的高可靠性的测试技术手段,针对Android原生底层驱动进行分析、插桩、编译、采集数据、数据分析等,逐步讲解精准测试是如何实现android原生底层驱动的对接。 在本文中,我们可以清晰地查看到如何进行技术对接的每一步,比如如何使用星云精准测试进行代码插桩、实现测试用例与采集底层驱动运行代码的数据追溯、对最终采集的数据进行一系列分析等。 一、安卓源码精准测试流程概述 经分析android源码的编译主要依靠Android.bp为纽带连接起来;在编译时,只需要在想要编译的模块目录下执行mm命令即可自动的根据当前目录下的Android.bp文件对其所包含的模块进行编译。 主要流程大致为:先将ZOA通信库源码复制进去并加入某一层次的Android.bp中,再通过对包含所有Android.bp编译信息的ninja文件的解析可以得到Shell认可的插桩json文件,Shell通过json文件对对应目录的代码进行插桩,插桩完成后,把对ZOA通信库的引用加入该模块的Android.bp中再放入ZoaInstru.h头文件后就可以正常编译出插桩程序了。 二、对安卓源码进行精准测试的准备工具 1.安卓原生8.1.0系统源码,放于/data/source2/目录下 2.shell.tar.gz插桩工具包放于