大人小孩做网站做零食用哪个网站好

张小明 2026/3/12 19:45:35
大人小孩做网站,做零食用哪个网站好,用花生棒自己做网站,广州白云网站建设自动化测试是研发人员进行质量保障的重要一环#xff0c;良好的自动化测试机制能够让开发者及早发现编码中的逻辑缺陷#xff0c;将风险前置。日常研发中#xff0c;由于快速迭代的原因#xff0c;我们经常需要在各个业务线上进行主流程回归测试#xff0c;目前这种测试大…自动化测试是研发人员进行质量保障的重要一环良好的自动化测试机制能够让开发者及早发现编码中的逻辑缺陷将风险前置。日常研发中由于快速迭代的原因我们经常需要在各个业务线上进行主流程回归测试目前这种测试大部分由人工进行费时费力重复劳动多。如果能将UI自动化测试与主流程回归结合到一起一方面保证了代码质量另一方面大大节约人力成本可谓一举两得。为什么需要UI自动化测试原因主要是以下三点保证质量——及早发现代码缺陷风险前置。减少重复劳动节约人力——快速迭代中经常需要进行主流程回归测试完整个主流程需要耗费相当大的人力成本。统一标准——每个人对测试用例以及业务理解程度不同标准可能存在不一致。进行UI自动化测试面临的问题工具选择。降低对后端的依赖避免因为测试环境后端不稳定导致的测试失败。整合测试用例增加复用降低用例维护成本。自动化测试工具对比业界UI测试工具发展迅速目前有Robotium、Appium、Espresso、UIAutomator、Calabash等等其中在Android中应用最广泛的当属UIAutomator、Robotium、Appium。下面列表比较说明UIAutomatorRobotiumAppium支持平台AndroidAndroidH5AndroidiOSH5脚本语言JavaJavaAlmost any是否支持无源码测试YesYesYes支持API级别16AllAll除了Android、Hybrid类型的AppAppium还可以在iOS设备上运行。加上之前组内有同事做过Appium方面的分享在这方面有一定的基础所以最终我们选择了Appium。接口稳定性与数据可变性业务特性决定我们的case在运行过程中会经常向后端请求数据然后根据后端接口返回的数据决定页面元素展示。因此有两个难点是必须克服的后端接口稳定性测试环境并不像线上能在7x24内保持稳定。业务接口经常出现因所依赖的外部环境异常而请求失败的情况以往处理这种情形我们能做的事情往往很有限最糟糕的就是必须要等待第三方修改完成后才能继续我们的测试。因此如何保持接口稳定将成为UI自动化测试不得不面对的问题。测试数据配置与保存克服了1中提到的接口稳定难点后仍然要面对第二个难点——频繁修改配置以适应测试用例的条件。举个例子对于闪惠业务用例里面会对于商户配置的多种情况进行测试无优惠、有优惠未开始、仅有闪惠优惠、有闪惠和团购、闪惠打折、闪惠赠品等这里面的条件是复杂多变的。如果每一次进行测试前都由执行测试人在商户后台登录后手动修改配置将耗费巨大的人力成本。因此我们势必找出一条途径将这种繁琐的配置过程自动化。接入Appmock注使用Appmock需建立在App底层网络请求模块已经具备切换mock地址的功能的基础上。Appmock是美团点评平台组制作的非常优秀的mock工具其前身是美团点评同事张文东所编写的wendong.dp仅供美团点评内部使用。在Appmock上可以进行网络请求的查看与mock。那么是否可以让我们的自动化测试用例在运行时访问Appmock获取预设的mock数据呢做过相关App开发的同事都知道在App中这是很容易实现的只要访问某个特定HTTP链接进行注册即可。Appmock使用界面由此“后端接口稳定性”的问题在Appmock的帮助下就解决了如果把后端数据直接配置在Appmock上请求失败的概率就微乎其微。即便如此仍然要面临频繁修改配置的需求只不过是把修改的操作从商家后台页面转移到了mock系统。有没有什么方法可以让修改配置的操作自动化进行呢在研读过Appmock的源码后我们想到可以自己搭建一个mock-server把不同阶段的mock数据保存在数据库中并且开放出网络接口用来切换各个测试用例所需的mock数据。具体的系统结构如下图所示。上图描述了一次用例运行的简要过程事前需要在数据库中准备好测试数据mock-server基于Appmock使用NodeJS进行二次开发完成。编写测试用例为了简化用例编写减少开发与维护的工作量使用Page Object模式进行用例开发。Page Object定义为抽象页面的对象通过对页面功能的封装进行相应操作。它的优点是减少重复代码增加复用性。提高代码可读性、稳定性。易于维护。UI自动化测试框架的编写方式类似于MVC架构我们将测试用例中的业务逻辑、各个页面间的元素以及测试数据相分离后独立编写以下均用排队业务的主流程举例。测试类组成测试类的组成包括setUp()tearDown()方法以及各个测试用例testXXXX()所有的测试用例必须以小写test开头如正常排号下的testQueueNormalQueue()Beforepublic void setUp() throws Exception { File apk new File(APK_NOVA); DesiredCapabilities capabilities DesiredCapabilities.android(); capabilities.setCapability(device, Platform.ANDROID); capabilities.setCapability(CapabilityType.VERSION, 5.1); …… // capabilities各个常量字段 driver new AndroidDriverAndroidElement(new URL(http://127.0.0.1:4723/wd/hub), capabilities); splashScreen new SplashScreen(driver); mainPage new MainPage(driver); …… // Page Object初始化}Afterpublic void tearDown() throws Exception { driver.quit(); }Testpublic void testQueueNormalQueue() { // 略}测试用例中不用直接对页面元素进行操作我们所要做的事情仅仅是业务层面的逻辑包括表单数据的提交、页面按钮的点击跳转等等。页面类编写页面类的编写采用Page Object模式包括页面中会使用到的元素、页面元素的操作方法集以及页面元素的检验方法集。所有的Page子类均继承BasePage父类它要做的事情很简单无非就是1个driver2个driverWait用于延时加载的等待时间以及页面元素的初始化public class BasePage { private static final int TIMEOUT 1; // short timeout for web-element private static final int TIMEOUT_LONG 10; // long timeout for web-element public AndroidDriverAndroidElement driver; public WebDriverWait driverWait; public WebDriverWait driverLongWait; public BasePage(AndroidDriverAndroidElement driver) { this.driver driver; this.driverWait new WebDriverWait(this.driver, TIMEOUT); this.driverLongWait new WebDriverWait(this.driver, TIMEOUT_LONG); PageFactory.initElements(this.driver, this); // 这句非常重要如果不写的话尽管编译不会报错但是后面要说的页面元素在运行时一个都找不到 } }然后是各个Page子类的实现方法public class ShopInfoPage extends BasePage { public ShopInfoPage(AndroidDriverAndroidElement driver) { super(driver); } …… // 页面元素 FindBy …… // 操作方法比如login()、clickXXXXXXButton()、gotoXXXXXXPage() …… // 检验方法比如checkLoaded()、checkLoginSuccess()、checkQueue_LoginReadyQueue()}Page子类的元素定位我们使用FindBy注解方式进行统一的管理。元素定位最基本的方法就是使用id/name/class等如果不行的话就用相对复杂却无所不能的xpath如// 点击登录按钮FindBy(id login_tip)private WebElement clickLoginButton;// MAPI域名输入框FindBy(xpath //*[contains(resource-id, id/mapi_item)]//*[contains(resource-id, id/debug_domain)])private WebElement mapiDomainText;Page中的操作和检验方法调用已经封装好的BaseUtils中的方法如BaseUtils.waitForElement(driverWait, loginButton).click(); // 等待元素出现并点击Assert.assertTrue(BaseUtils.waitForElementVisibility(driverLongWait, usernameText)); // 检验元素应该展示在页面上BaseUtils方法BaseUtils中封装好了一些通用的方法还需要不断完善并扩展。下面介绍其中一些常用及重要的方法openDebugPanel()每次直接调用该方法来打开Debug面板由于Debug面板是一个系统层面的悬浮窗它不属于任何页面中的元素你完全没办法通过ID甚至XPath获得。clickPoint()点击某个坐标持续时间坐标采用相对屏幕位移的方式左上为0,0这里只实现了简单的单指的点击操作实际上driver.tap可以模拟多指的共同操作。swipeToUp() swipeToDown()上拉 下拉页面操作需要传的是次数和每次持续时间模拟手指在屏幕上的滑屏操作主要用于刷新页面以及绕过某些有坑的scrollTo。prepareMockData()这里要做的就是在关键步骤操作前传入mock_data_id我们会将数据请求发送给服务器然后服务器从数据库拉到对应的mock data并更新。saveScreenshot()顾名思义截图。在每个重要的页面操作方法中加入即可需要传入的是case_id以及操作或检查时的keyword方便在用例执行完以后看截图分析和Bug复现。waitForElementXXX()在预设等待时间内等待元素出现并定位元素。UI自动化测试运行效果在排队与闪惠两条业务线进行了UI自动化测试实践它们执行完成全套用例的耗时均不超过20min。相比于之前人工进行主流程测试动辄花费半天的工作量的情况大大降低了人力成本将工程师宝贵的时间节约给了更有价值的研发工作。当然自动化测试前期的环境搭建、数据准备、用例编写等任务是必不可少的这些准备工作很多都是一次性投入一劳永逸也正是自动化测试的价值所在。最后作为一位过来人也是希望大家少走一些弯路在这里我给大家分享一些软件测试的学习资料和我花了3个月整理的软件测试自学全栈这些资料希望能给你前进的路上带来帮助。​视频文档获取方式这份文档和视频资料对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你以上均可以分享点下方小卡片即可自行领取。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

学网站建设app全屋定制十大名牌衣柜

Docker在嵌入式Linux交叉编译中的完整应用方案 文章目录Docker在嵌入式Linux交叉编译中的完整应用方案1. 方案概述2. 环境搭建部分2.1 基础镜像选择2.2 构建 Dockerfile2.3 构建镜像3. 开发流程详解3.1 创建持久化工作目录3.2 启动编译容器3.3 编译过程演示3.4 典型错误处理4. …

张小明 2026/3/5 4:14:53 网站建设

seo 网站排名正邦的网站建设

题目简介在同城生活服务需求日益碎片化、即时化的背景下,传统线下跑腿模式存在需求对接效率低、订单管控无体系、配送过程不透明、费用结算不规范等痛点,难以满足用户对代买、代取、代送等即时性服务的需求,也制约了跑腿行业的规模化、规范化…

张小明 2026/3/5 4:14:53 网站建设

汽车网站建设大型网站 建设意义

HTTP/1.1、HTTP/2、HTTP/3 核心区别详解 HTTP 协议的演进核心围绕性能、可靠性、安全性展开,从 HTTP/1.1 的基础文本协议,到 HTTP/2 的二进制多路复用,再到 HTTP/3 基于 QUIC 摆脱 TCP 依赖,三者在传输方式、性能优化、兼容性等方面差异显著。以下是通俗且全面的对比分析:…

张小明 2026/3/5 4:14:54 网站建设

做刷网站怎么赚钱做一网站要什么软件

Transformers库中加载Qwen3-VL-30B模型的避坑指南 在构建智能文档分析系统或视觉问答应用时,你是否曾遇到这样的场景:满怀期待地调用AutoModel.from_pretrained()加载一个号称“中文最强”的多模态大模型,结果却卡在第一步——显存爆炸、权重…

张小明 2026/3/5 4:14:55 网站建设

一般网站建设小蜜蜂网站建设

Yuzu模拟器版本管理终极指南:高效控制与性能调优实战 【免费下载链接】yuzu-downloads 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu-downloads 还在为Yuzu模拟器的版本选择而纠结?想要在不同游戏间灵活切换最佳版本?作为…

张小明 2026/3/5 4:14:58 网站建设

网站恶意攻击进销存

第一章:量子机器学习的 VSCode 模型加载在现代量子计算与机器学习融合的背景下,VSCode 作为主流开发环境,已成为构建和调试量子机器学习模型的重要工具。通过集成 Qiskit、TensorFlow Quantum 等框架,开发者能够在本地高效加载和运…

张小明 2026/3/5 4:15:02 网站建设