云部署是指将应用程序、服务或数据存储在云端服务器上,通过互联网提供给用户访问和使用的过程。它具有可扩展性、灵活性、高可用性和成本效益等优点,能够帮助企业和开发者快速部署和管理应用,减少硬件投资和运维成本。
对整个 FastAPI 项目的测试是确保项目质量和可靠性的关键环节。测试包括单元测试、集成测试、功能测试等多个方面。
本次我的任务主要是对云部署和测试方法进行学习,为之后的正式开发做好准备。
一、云部署
- 对 AWS、阿里云、腾讯云等主流云服务提供商进行全方位调研。详细了解各平台在计算服务(如虚拟机实例类型、性能参数)、存储服务(对象存储、块存储的特性与价格)、网络服务(虚拟私有云设置、负载均衡功能)以及数据库服务(关系型与非关系型数据库种类、高可用方案)等方面的服务内容与特点。
- 分析各云平台针对不同行业、不同规模企业的解决方案案例,研究其在应对高并发、大数据处理等复杂场景时的表现。
部署教程
第三平台的选择不同部署也略有不同,但基本操作不变,找了两篇教学比较细致的教程作为参考:
https://blog.csdn.net/m0_63550220/article/details/141145303?ops_request_misc=%257B%2522request%255Fid%2522%253A%252280901862d1a041683bda813e2ed1c4f6%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=80901862d1a041683bda813e2ed1c4f6&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-141145303-null-null.142^v102^pc_search_result_base1&utm_term=%E4%BA%91%E9%83%A8%E7%BD%B2&spm=1018.2226.3001.4187https://blog.csdn.net/m0_63550220/article/details/141145303?ops_request_misc=%257B%2522request%255Fid%2522%253A%252280901862d1a041683bda813e2ed1c4f6%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=80901862d1a041683bda813e2ed1c4f6&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-141145303-null-null.142^v102^pc_search_result_base1&utm_term=%E4%BA%91%E9%83%A8%E7%BD%B2&spm=1018.2226.3001.4187https://blog.csdn.net/qq_50904598/article/details/130700275?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7EPaidSort-1-130700275-blog-141145303.235%5Ev43%5Epc_blog_bottom_relevance_base4&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7EPaidSort-1-130700275-blog-141145303.235%5Ev43%5Epc_blog_bottom_relevance_base4&utm_relevant_index=1
https://blog.csdn.net/qq_50904598/article/details/130700275?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7EPaidSort-1-130700275-blog-141145303.235%5Ev43%5Epc_blog_bottom_relevance_base4&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7EPaidSort-1-130700275-blog-141145303.235%5Ev43%5Epc_blog_bottom_relevance_base4&utm_relevant_index=1
部署步骤
因为搜索到的第三方平台选择阿里云的较多,所以对阿里云云部署进行了比较细致的研究。
1.接入第三方云账号
-
登录阿里云数字证书管理服务控制台。
-
在左侧导航栏,选择 “综合管理”>“多云 AK 管理”。
-
单击 “新增授权”,然后单击目标云服务提供商,按照弹出面板的引导,配置目标云服务提供商用户账号。
2.部署 SSL 证书至第三方云产品
-
在数字证书管理服务控制台的左侧导航栏,选择 “部署和资源管理”>“多云部署”。
-
单击 “创建任务”,按以下步骤部署阿里云 SSL 证书至第三方云产品:
-
在 “基础配置” 引导页,配置部署任务名称,选择接入第三方云的账号、联系人和部署时间,然后单击 “下一步”。
-
在 “选择证书” 引导页,选择与云产品资源对应的 SSL 证书,单击 “下一步”。
-
在 “选择资源” 引导页,系统会自动识别并拉取对应云产品中的所有资源,选择对应的云产品和资源后,单击 “预览并提交”。
-
在 “任务预览” 页面,确认部署的证书实例和云产品资源信息,如无问题,单击 “提交”。
-
3.通过数据库网关将本地或第三方云的数据库接入至阿里云
-
创建 AccessKey 并获取 AccessKey ID 和 AccessKey Secret 信息。
-
登录数据库网关控制台,首次使用时会跳转至云产品开通页面,阅读并同意数据库网关服务协议后,单击 “立即开通”。
-
单击 “新建网关”,填写网关名称和备注信息,单击 “下一步”。
-
安装网关,用于部署网关程序的服务器需满足一定要求,根据操作系统类型选择相应的安装包进行安装。
-
等待本地网关启动,启动成功后自动跳转或手动单击 “下一步”,进入添加数据库页面。
-
单击 “+ 添加数据库地址”,向网关添加数据库,单击 “完成”。
4.通过云企业网录入第三方云数据库
-
确保 DMS 账号角色为管理员或者 DBA,已开通专有网络 VPC 服务,并且在专有网络(VPC)和第三方云服务之间建立了连接。
-
设置 CEN 云服务访问:
-
登录云企业网管理控制台,在云企业网实例页面,单击目标实例 ID。
-
在 “基本信息” 页签中,单击 “转发路由器” 页签,根据云服务部署的地域,单击该地域的转发路由器 ID。
-
在转发路由器详情页面,单击 “访问云服务” 页签,单击 “设置云服务”,配置相关信息。
-
-
在本地网络中将云服务 DMS 所在地域的 IP 地址或地址段回包路由指向 CPE,将访问的 DMS 云服务所属地域的 VPC 加载到云企业网中。
-
登录数据管理 DMS 5.0,在控制台首页,单击页面左上方的 “新增实例” 图标,也可通过顶部菜单栏选择 “数据资产”>“实例管理”,单击 “+ 新增”。
-
在 “新建实例” 对话框,单击 “VPC 专线 IDC” 页签,选择数据库类型,配置相关信息,配置完成后,单击页面下方的 “测试连接”,等待测试通过,若未通过,请根据提示的错误信息重新配置,单击 “提交”。
二、测试
单元测试
单元测试,又称模块测试。对软件的组成单位进行测试,其目的是检验软件基本组成单位的正确性。测试的对象是软件里测试的最小单位:模块。
单元测试的目的在于发现各模块内部可能存在的各种错误,主要是基于白盒测试。(也就是说,在单元测试过程中,用的最多的是白盒测试方法,也可能会有灰盒或者黑盒。单元测试和白盒测试是不同的划分,不存在包含关系)。
因为我们的项目是用python语言写的,所以在测试方面重点去看了python语言的测试工具和框架。
Python单元测试框架 PyUnit、unittest、pytest
Python 模拟测试框架 CaptureMock
找到了一篇详细介绍unittest使用方法的教程,可作为之后开发的选择之一:
集成测试
集成测试也称联合测试(联调)、组装测试:将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。集成主要目的是检查软件单位之间的接口是否正确。
集成测试的内容包括模块之间接口以及集成后的功能。它主要使用黑盒测试方法测试继承的功能,并对以前的集成进行回归测试。
Python提供了多个用于执行集成测试的工具和库。以下是两个最常用的工具:
unittest
unittest是Python的标准库中的测试框架,受到了Java的JUnit的启发。它提供了一种结构化的方法来组织测试用例,并支持断言来验证代码的行为。虽然unittest是Python标准库的一部分,但它的语法相对冗长,需要一些样板代码。pytest
pytest是Python社区中最受欢迎的测试框架之一。它提供了一种简单而强大的方式来编写和运行测试用例,具有易于阅读的语法和丰富的插件生态系统。pytest通常被认为更易于使用和扩展,因此成为许多Python开发人员的首选。
赋一篇上述两种框架做集成测试的教程:
系统测试
将软件系统看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试。时间大部分在系统测试执行阶段,包括回归测试和冒烟测试。
验收测试
是部署软件之前的最后一个测试操作。它是技术测试的最后一个阶段,也称为交付测试。是以用户为主的测试,软件开发人员和质量保证人员也应参加,由用户参加设计测试用例,使用用户界面输入测试数据,并分析测试的输出结果。
验收测试的目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买者系统测试展示该软件系统满足原始需求。
验收测试包括alpha测试和beta测试。alpha测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。Beta测试由软件的最终用户们在一个或多个客房场所进行。
自动化测试
测试是个特别复杂麻烦的过程,需要考虑到的方面很多,不可能自己手动一个一个去debug,这里选择参考一篇unnitest框架的自动化测试教程。写得非常详细,还有视频学习。
三、总结与展望
通过这段时间对云部署和软件测试的学习与实践,我对这两大关键领域有了极为深刻的认知与掌握。 在云部署方面,我研究了主流云平台的架构体系,认真学习了云部署的步骤和实现逻辑,相信对之后项目完的成功部署会有一定帮助。在测试方面,我之后会着重强化自动化测试脚本的覆盖率和健壮性,提升测试用例的生成效率和缺陷检测精准度。
总之,这段项目实践经历让我收获颇丰,期待能在后续工作中,将所学知识充分运用,助力项目迈向新的高度。