自动化测试实践相关要点,持续集成CI(持续交付CD)
发表时间:2023-11-23 11:02:25
文章来源:炫佑科技
浏览次数:166
菏泽炫佑科技
自动化测试实践相关要点,持续集成CI(持续交付CD)
自动化测试实践:从主轴模型到金字塔模型
相关要点
1. 软件开发的当前趋势
以上几点是近年来企业发展中为了引入持续测试这一主题而出现的重要概念。
其中两个*重要的概念是微服务。 两者都是当前软件开发的*佳实践和方法论,旨在为企业提供更大的灵活性并提高运营效率。
1、
它是一套主张打破原有组织和限制的实践方法论和文化。 职能团队开始拥抱并接受所倡导的研发、测试、运维、交付高度协作、一体化的思维。 随着敏捷的普及度不断提高,无论是互联网公司还是传统软件公司都开始拥抱敏捷实践。 作为*佳实践,持续集成CI()和持续交付CD()正受到越来越多的关注。
2. 微服务架构
微服务架构源于思想和实践,是一种软件架构风格。 微服务架构带来了一系列好处,例如可部署性、可靠性、可用性等。 尽管原则上可以使用任何架构进行实践,但微服务架构正在成为构建持续部署(CD)系统的标准架构风格。 由于每个服务的规模较小,因此可以通过不断重构来实现各个服务的架构,从而减少大型项目的前期设计需求,从而使软件能够尽早发布并持续交付。 微服务和微服务是天然的社区,可以结合起来实现软件开发行业的变革。
2. 自动化测试测试
随着敏捷和微服务架构的引入,CI/CD 已成为构建和部署的标准,即使在不采用微服务架构的项目中也是如此。 测试对于确保定义的流程和事务按预期运行至关重要。 针对现代软件产品的频繁变更和发布,传统的手工测试方法在人员和效率上严重不足。 因此,自动化测试已成为现代软件开发过程的关键组成部分。 自动化测试是持续集成和持续交付的核心。 没有有效的自动化测试保障,持续集成和持续交付只是一个没有灵魂的躯壳。
1. 测试分类
测试根据不同的维度可以分为很多类别。
描述 测试金字塔分为三个层次:单元、服务和UI。
虽然大家对此的具体描述不尽相同(有人将三层分别定义为单元、接口、集成测试;也有人将整个金字塔分为4-5层),但金字塔自下而上的结构是被大家认可和接受的。 跟着。
单元测试
单元测试是对代码单元(通常是类/方法)的测试。 单元测试的价值在于它可以在开发过程中提供*快的反馈并验证逻辑单元。
良好的单元测试可以帮助改进现有设计。 在团队掌握TDD的前提下,单元测试可以辅助重构自动化软件开发,帮助提高代码整洁度。
接口(服务/API)测试
接口测试是针对业务接口的测试,主要测试内部接口功能实现是否完整。
比如内部逻辑是否正常、异常处理是否正确等。 接口测试的主要价值在于接口定义相对稳定,不像接口或底层代码经常变化,因此接口测试更容易编写,用例的维护成本也相对较低。 在接口级别准备测试相对具有成本效益。
集成(UI)测试
集成测试从用户的角度验证产品功能的正确性,测试端到端的流程,并添加用户场景和数据来验证整个流程是否健康流畅。
集成测试具有*高的商业价值。 它验证了一个完整的过程。 但由于需要验证完整的流程,环境部署、用例准备和实施的成本较高,实施起来并不容易。
2、微服务架构给测试带来的挑战
微服务架构在解决了应用规模和应用开发规模问题后,也带来了一些新的问题。 *突出的是微服务数量的增加以及服务之间复杂的调用关系。 复杂的依赖关系意味着即使是项目的高级开发人员也无法一次性理清所有关系。
与传统的单体应用相比,微服务在测试策略上存在一些差异。
简单来说,在微服务架构中,测试的层次更多,需要测试的服务和应用也更多。 全部手动进行测试效率低下,无法跟上互联网快速迭代的需求。 这时就需要引入自动化测试来减轻测试团队的压力,提高测试效率和测试质量。
3. 自动化测试
当谈到自动化测试时,功能测试人员可能会认为它高端且复杂。
我们先来看看一般的功能测试是如何进行的:设计和编写用例文档,描述测试步骤和预期结果; 测试人员根据测试用例描述一步步操作,然后判断实际结果是否与预期一致。 如果它们匹配,则测试通过; 如果它们不匹配,则测试失败。
自动化测试的作用与功能测试相同。 分层理论和自动化测试方法的结合产生了三个层次的自动化:单元测试自动化、界面测试自动化和UI测试自动化。 当然,不同层面的自动化侧重点是不同的。
因此,从测试行为的本质来看,功能测试与单元自动化测试、界面自动化测试和UI自动化测试没有区别。 唯一的区别是,一个是由人执行,另一个是由代码或工具执行。
4.自动化测试分层单元自动化测试
单元测试自动化是指检查和验证软件中的*小可测试单元,调用被测服务的类或方法,根据类或方法的参数传入相应的数据,得到返回结果,*后断言返回的结果。 是否符合预期。 如果相等,则测试通过; 如果它们不相等,则测试失败。
因此,单元测试重点关注代码的实现和逻辑。 单元测试是*基本的测试,也是测试中*小的单元。 它的对象是一个函数对象,也可以包含输入和输出。 它针对的是函数功能或者函数内部的代码逻辑,不包含业务逻辑。
此类测试一般由研发人员完成,需要使用单元测试框架,如Java的Junit等。
接口自动化测试
接口自动化测试主要验证模块之间的调用返回以及不同系统和服务之间的数据交换。 接口测试自动化一般是在业务逻辑层进行测试。 按照接口文档看,还是RPC吗? 调用被测接口,构造对应的请求数据,并获取返回值,无论是成功还是失败。 无论输入参数是什么,我们都会得到一个结果,*后断言返回结果是否等于预期结果。 如果相等,则测试通过; 如果它们不相等,则测试失败。
因此,接口测试的重点是数据。 只要数据正确,大部分功能就完成了,剩下的就是如何在页面上显示数据了。
常见的接口测试工具有、、等。
集成(UI)自动化测试
UI层是用户使用产品的入口。 所有的功能都是通过这一层提供给用户的。 目前大部分测试工作都集中在这一层。 这种测试更贴近用户的行为,模拟用户点击按钮、输入输入框等输入一些指令。 有时候用户可能看到登录成功了,但是UI自动化并不知道他刚才点击的点击是否生效。 所以你需要寻找“证据”。 例如,登录成功后,页面右上角会显示“欢迎您,xxx”。 这是登录成功的有力“证据”。 当UI自动化登录成功时,获取数据并断言。 如果断言相等,则测试通过; 如果它们不相等,则测试失败。
因此,UI自动化关注的是用户的操作行为以及UI上的各个组件是否可用。 常见的测试工具有UFT、Robot等。
分层比例的*佳实践
每种类型的自动化测试都有各自的侧重点、优缺点,在实际工作中不可能做到均等分配。 因此,我们需要制定合理的测试策略来组织和分配它们,包括测试的每个部分投入多少以及测试用例的比例。 要等多久。
测试金字塔中还有另一个维度的信息,如上图所示。
根据测试金字塔模型和投入产出比,我们知道回报越低,回报越高,所以要进行大量的单元测试和全面的接口测试,覆盖所提供的基本逻辑和功能。产品,以及少量的集成(UI)测试来验证前端界面的功能。
据说,按照业界*佳实践自动化测试实践相关要点,持续集成CI(持续交付CD),自动化分层的投入比例是:单元测试(Unit):占70%; 接口测试():占20%; 集成测试(UI):占比10%。
3. 自动化测试的*佳实践
对于现阶段公司大多数团队来说,主轴模型是比较现实的测试模型。 在新项目中,由于时间限制或者开发者习惯的原因,单元测试一开始可能没有做好充分的准备; 一些遗留项目可能一开始就没有很多单元测试。
对于上述情况,一般的做法是先关注中间层的测试,原因如下:
1.从纺锤型到金字塔型的转变
当项目进行一段时间后,每一层测试的比例必须过渡到理想的金字塔形状。 这时需要注意以下三个方面:
开发和测试互转能力;
炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等