
技术分享
文章平均质量分 87
测试界媛姐
授人以鱼,不如授之以渔
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
自动化测试常见问题总结,惊险避坑...
1、自动化测试简介1)为什么要进行自动化测试?①黑盒测试回归效率低;②手动测试的偶然性和不确定性;③回归的覆盖率不足;④交付的产品质量无法保证,全靠评估;⑤系统越复杂,问题越多;⑥上线时间长、构建失败率高导致的蝴蝶效应(迭代快,加班多);2)自动化测试能解决什么问题?①提高出现问题后的响应速率;②降低回归成本;③提高回归覆盖率;④提高回归效率;⑤提高回归的稳定性;3)自动化测试的不足有哪些?①无法减少成本投入,而是为了加快测试结果反馈,提升测试质量;原创 2024-12-12 15:58:32 · 1127 阅读 · 0 评论 -
Junit 单元测试之错误和异常处理
5. 测试的目的:这个测试的目的并不是检查userRepository.findById()本身是否真的会抛出异常,而是检查当它抛出异常时,userService.getUserById()是否会正确地传递这个异常。这种自定义异常,通常在我们希望为特定的错误情况定义更具描述性的异常名时使用,或者当我们想为特定的异常情况添加更多上下文信息时使用,信息越多,测试反馈的效果越好,所以一般使用自定义异常,继承RuntimeException!有时,如果你希望调用者必须处理某个特定的异常,使用检查型异常可能更合适。原创 2024-12-11 16:24:27 · 1293 阅读 · 0 评论 -
微信小程序测试点,小白强烈建议收藏!
和端内测试流程一样,关注actiontype和pagetype等参数,小程序统计常需区分用户来源渠道,因此还需关注【backup】中的channel、pagechannel、type等参数。微信给每个小程序提供了10MB的本地缓存,可以对一些数据和配置信息等进行相应的缓存来减少对服务器的请求,提升用户体验。业务,这不,之前刚好测试了一段时间的小程序,积累了些许的经验,想好分享给大家,主打的就是利他~~~同一微信号在不同手机微信端授权登录同一小程序之后,所能查看的数据和操作的权限都应该是一致的。原创 2024-12-05 15:07:00 · 560 阅读 · 0 评论 -
0 代码自动化测试:RF 框架实现企业级 UI 自动化测试
你自己不会,你就站在巨人的肩膀上前进,这个RF就是一个巨人。这是一个别人用Python代码封装的一个的工具和框架。底层是Python代码,提供了非常丰富的关键字,直接可以实现自动化代码想要实现的功能。这些关键字只需要做表格填空就可以了。不用写代码,填表格就可以,可读性很高学习和使用门槛很低,上手不需要任何代码基础而且也有很多内置库和插件和第三方库可以按照和导入使用,快速实现常见的基本测试需求。这也就是导致很多没有自动化团队的公司会选择这个工具做自动化测试。原创 2024-12-03 14:58:15 · 867 阅读 · 0 评论 -
深度解析自动化测试流程(纯干货)
对系统的功能需求进行再次梳理,划分出可以进行自动化测试的需求,划分的标准一般是简单、重复性高、业务复杂度低的需求,这样便于我们快速地实现一个版本,从而建立推进自动化的信心。相反,选择了业务复杂的需求,则会花费大量的时间在脚本制作上,并且各种异常情况的处理,会严重打击我们推进自动化测试的积极性和信心,最后也就丧失了我们做自动化的初衷(自动化测试是不需要也没有必要做到 100%覆盖率的)。同时要注意确保自动测试开发的结构化和一致性。理想情况下,测试始于测试目标和测试策略的建立,测试策略应满足测试目标的要求。原创 2024-11-29 15:07:36 · 991 阅读 · 0 评论 -
LoadRunner性能测试基本步骤
本文旨在指导初学者使用LoadRunner进行基础的性能测试。我们在接到一个性能测试任务的时候,需要从以下几点考虑:我们的测试对象是什么,测试要求是什么,测试环境怎么部署的,业务规模如何,哪些业务点是客户最关注的等等,下面将从性能测试启动开始讲解基本的测试流程。1、测试脚本录制在使用loadrunner工具前,需确定哪些业务需要使用该工具进行测试,不需要的时候坚决不用,不要认为这个工具万能。以本次测试中的综合查询(预付费综合业务信息查询)为例进行讲解。1.1录制前准备工作。原创 2024-11-27 16:42:53 · 658 阅读 · 0 评论 -
怎么用Postman脚本中发送请求
的Collection(集合)/Folder(集合的子文件夹)/Request(请求)都有Pre-request script和Tests两个脚本区域, 分别可以在发送请求前和请求后使用脚本(基于Javascript实现各种操作)在遇到有依赖的接口时,比如需要登录或者需要从前一个接口的结果中获取参数时,我们往往需要在该请求前先发送一下所依赖的请求, 我们可以在Pre-request script中使用pm.sendRequest实现。发送XML格式和发送JSON格式差不多, 只要指定内容格式。原创 2024-11-26 16:48:52 · 1490 阅读 · 0 评论 -
Python接口自动化测试之【测试函数、测试类/测试方法的封装】
在python+pytest 接口自动化系列中,我之前的文章基本都没有将代码进行封装,但实际编写自动化测试脚本中,我们都需要将测试代码进行封装,才能被测试框架识别执行。Win64;需要将代码封装成单元测试框架 (pytest或unittest) 能识别的测试函数或测试类,否则将不会被识别执行。需要加上断言,即结果与期望之间的对比,单元测试框架才能判定该用例执行结果是否通过,结果==期望则说明通过,否则失败。python中函数以及类的封装这里不做过多说明,pytest断言大家可以参考文章。原创 2024-11-25 21:07:15 · 1063 阅读 · 0 评论 -
接口自动化测试丨如何实现多套环境的自动化测试?
在敏捷迭代的项目中,通常会将后台服务部署到多套。那么在进行接口自动化测试时,则需要将的域名进行配置。使用一套接口测试脚本,通过切换域名地址配置,实现多套环境的自动化测试。原创 2024-11-25 21:05:13 · 1012 阅读 · 0 评论 -
unittestreport 数据驱动 (DDT) 的实现源码解析
在做自动化过程中,通过数据驱动主要是为了将用例数据和用例逻辑进行分离,提高代码的重用率以及方便用例后期的维护管理。很多小伙伴在使用unittest做自动化测试的时候,都是用的ddt这个模块来实现数据驱动的。也有部分小伙伴对ddt内部实现的源码比较感兴趣,前段时间小编在开发unttestreport的时候也写了一版数据驱动,使用的入口和ddt差不多,今天就给大家分析一下unittestreport中数据驱动(ddt),源码实现的过程!原创 2024-11-19 15:27:32 · 685 阅读 · 0 评论 -
python+requests接口自动化框架
确定接口测试使用的工具----->配置需要的接口参数----->进行测试----->检查测试结果----->生成。ErrorInfo:case运行失败,失败的错误信息;eg:是也本身的原因还是case设置失败,还是其他原因。ErrorInfo:case运行失败,失败的错误信息;eg:是也本身的原因还是case设置失败,还是其他原因。(存储的方式是编写接口自动化的人员来设定的存储方式)(存储的方式是编写接口自动化的人员来设定的存储方式)(存储的方式是编写接口自动化的人员来设定的存储方式)原创 2024-11-18 21:26:23 · 728 阅读 · 0 评论 -
开发提测?
多端配合的需求,测试需给对应开发同学发送对应功能逻辑的自测case邮件,在无法确定具体的逻辑划分时,可以提前与开发沟通,统一发给无法分辨的所有配合端开发同学一封自测case邮件,由开发之间自行沟通划分自测case验证,并分别回复邮件提测。为避免后期视觉走查不通过或者视觉稿变更,引发的重复兼容性测试工作量的问题,小编所在项目中将视觉走查的时机提前到开发提测阶段,保证在兼容性测试之前,UI达到可提测标准,测试同学开始UI层的兼容性测试的依据是视觉走查通过邮件。,不可以用本地debug包验证自测case提测。原创 2024-11-15 15:31:56 · 771 阅读 · 0 评论 -
解决Selenium元素拖拽不生效Bug
如果你是使用Python+Selenium技术栈实现的Web UI自动化,可以直接下载seletools(Selenium Tools,作者:Dmitrii Bormotov)包,并将它导入到需要执行拖放的地方,然后简单地调用它的drag_and_drop()方法即可。方案3:先通过clickAndHold()方法点击并按住元素,然后使用moveByOffset()方法将元素拖拽到目标区域,再使用release()方法将按住的元素释放——无效。其工作原理是将浏览器实例和。原创 2024-11-08 16:08:41 · 1170 阅读 · 0 评论 -
测试面试Python——线程进程协程代码实现(面试频率超高)
文章不仅是给大家看的,也是我秋招+社招迟到的复盘,大家加油吖~协程进程线程面试遇到的可能性还是很大的,我秋招和社招都有遇到过,希望大家多学习一下。原创 2024-11-07 16:02:32 · 395 阅读 · 0 评论 -
为什么零代码自动化测试越来越受欢迎?
所谓零代码自动化测试,指的是一种创建不需要编码或编程技能的自动化测试脚本的方法。用于减少创建自动化测试所需时间的测试。自动化测试保证无需代码即可执行测试。让我们更深入地了解零代码测试,让测试人员更轻松地实现自动化。零代码测试正在以非常快的速度发展,并且不时有几个商业平台进入市场。因此,建议充分考虑零代码测试平台的分析和报告功能,因为未来是基于分析的仪表板、自动修复、使用数据趋势的自动决策能力等等,这些都利用了 AI/ML。我希望这篇文章具有洞察力,可以为思考为什么要考虑零代码测试平台提供一些思路。原创 2024-11-07 16:01:36 · 1114 阅读 · 0 评论 -
你们要的App电量分析测试来了
Batterystats 是包含在 Android 框架中的一种工具,。您可以使用将收集的电池数据转储到开发计算机,并创建一份可使用 Battery Historian 分析的报告。Battery Historian 会显示进程从什么位置以及通过何种方式消耗电池电量。识别系统为了延长电池续航时间可能会延迟甚至移除应用中的哪些任务。原创 2024-11-06 16:23:09 · 793 阅读 · 0 评论 -
缺陷就是Bug?对了,但没完全对……
对于软件的缺陷来说,一般人都把我说是Bug,但正确的来说,应该是Defect,这两者的区别是:Bug是编程错误的结果;Defact 是与需求的偏离。Defect不一定表示代码中存在Bug,它可能是尚未实现但在软件要求中定义的功能。实际上,无论是测试人员还是开发人员,还是习惯把我叫为Bug。原创 2024-11-04 17:02:30 · 446 阅读 · 0 评论 -
你们接口怎么测?有没有完完整整的把一个接口测下来?
面试官在问到这道问题的时候,我们应该这么去回答,根据自己技术掌握的水准进行由浅入深的回答。原创 2024-11-04 17:00:04 · 392 阅读 · 0 评论 -
聊聊目前测试岗位招聘现状
虽然大家都知道外包岗位做的事情大多是基础的重复性劳动,核心业务或者技术含量较高的项目基本不会让外包同学接触,但学历筛选的硬门槛,越来越有意思了。偶尔有 HC 放出来,广大求职者面对的是越来越高的简历筛选门槛和面试要求,同时伴随而来的还有相比前几年的预期薪资下降,以及越来越长的工作时长。复盘这两年的面试辅导案例,发现市场上对软件测试岗位的要求,发生了很大的变化,或者说转折。以前大环境好的时候,对刚入职的新人还会有新人培训,也会给时间来熟悉业务,现在就是简单粗暴,能不能直接上手干活儿。如何理解即插即用呢?原创 2024-11-02 16:51:17 · 931 阅读 · 0 评论 -
职场秘籍:面试&加薪,竟然拥有不同的技巧!
假如你是一位测试主管,去评价一名是否优秀,那么你将如何去判断呢?你最看重的是哪方面的能力呢?对于这个问题,是不能一概而论的,要分为两种情况,情况不同,答案一定是。我先给你举个例子,听完这个例子之后,你就知道我为什么这样说了。你去商场买一件东西,比如说手机,首先你会选择正规大商场去购买,然后会选择大品牌。为什么这么说呢,因为你肯定知道,选购手机的时候,只能短暂的体验,想全方面了解,只能买到手里以后慢慢用才行。所以,手机的品牌、口碑、产品参数等等这些能看得到的数据就是重要的参考依据了。原创 2024-10-08 16:44:06 · 962 阅读 · 0 评论 -
基于Pytest+Requests+Allure实现接口自动化测试
注意:由于多数接口需要用到登录接口返回的token值,因此封装一个conftest.py定义项目级前置fixture,在整个项目只执行一次,可以在各个用例中进行调用(其他共用参数也可以采取类似前置定义)。用例四、进行下单的接口请求,此处需要用到登录接口返回的token值以及个人查询接口返回的openid、userid、cartid值。用例三、进行添加商品到购物车的接口请求,此处需要用到登录接口返回的token值以及个人查询接口返回的openid、userid值。使用jsonpath对接口的返回值进行取值。原创 2024-10-08 16:43:14 · 1021 阅读 · 0 评论 -
外包干了6天,技术明显进步
然而,随着时间的推移,我发现自己逐渐陷入了舒适区,每天重复着相同的工作内容,仿佛看到了自己未来的天花板。整份文档一共有将近 200 页,全部为大家展示出来肯定是不太现实的,为了不影响大家的阅读体验就只展示了部分内容,还望大家海涵,希望能帮助到您面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习!更令我痛心的是,因为这样的心态和相对较低的薪资,与我相伴2年的女友也选择离开了我。质量非常高,需要的可自行领取!他了解我的情况后,没有责怪我,而是给了我一个网盘链接,告诉我里面有我需要的所有东西。原创 2024-10-04 11:30:00 · 815 阅读 · 0 评论 -
一文6000字从0到1使用mock进行接口测试教程!
9)执行操作的时间较长Object:有一些Object的操作费时,而被测对象依赖于这一个操作的执行结果,例如大文件写操作,数据的更新等等,出于测试的需求,通常将这类操作进行Mock;12)在mock点的选择过程中,以下的一些点会是一些不错的选择 网络交互:如果两个被测模块之间是通过网络进行交互的,那么对于网络交互进行Mock通常是比较合适的,如RPC;其内容为:。除了Standalone 版本, 也可以直接在 Java代码中引用,对应Maven依赖:。原创 2024-09-30 16:20:06 · 1058 阅读 · 0 评论 -
自动化测试工具 —— selenium介绍及基本使用方法
Selenium支持多平台、多浏览器、多语言去实现自动化测试,是一个开源和可移植的Web测试框架,支持并行测试执行,从而减少了时间并提高了测试效率。利用它,我们可以编写相关的自动化程序,让程序完全像人一样在浏览器里面操作Web界面,比如模拟鼠标点击、模拟键盘输入等等。不但能够操作Web界面,还能从Web中获取信息,并且相对来说,使用Selenium来获取信息更加简单,它的基本原理是我们编写自动化程序之后利用浏览器驱动直接对浏览器进行操作,只要我们用户能在浏览器上获得的信息使用Selenium都可以获得。原创 2024-09-30 16:19:02 · 1274 阅读 · 0 评论 -
API自动化测试与持续集成
To provide a high-level abstraction for testing HTTP,提供一个高级别的HTTP测试Github地址:SuperTest。原创 2024-09-29 15:59:08 · 1026 阅读 · 0 评论 -
干货分享!渗透测试成功的8个关键
定出详细明确的测试条件和需求最为重要,任何松散或须经解释的测试要求都会削减渗透测试的效率。但渗透测试的目的就是要展现出公司企业安全状态的实际情况,所以,尽量别为了得到个看起来好看的结果而人为干扰渗透测试员,给防御方提供不公平的优势。第一个问题是经济上的:测试费用会随范围的扩大而增加,而测试价格与所需信息不相匹配的状况又会影响到公司高层对未来测试的热情。正如渗透测试可被视为真实攻击的预演,将其他部门的同事纳入结果阐述和操作展示的受众范围,也有助于确保被接收的信息确实是你想要传达的。原创 2024-09-28 21:11:34 · 776 阅读 · 0 评论 -
接口测试常用工具及测试方法(新手篇)
前端是什么呢,对于web端来说,咱们使用的网页,打开的网站,这都是前端,这些都是html、css写的;对于app端来说呢,它就是咱们用的app,android或者object-C(开发ios上的app)开发的,它的作用就是显示页面,让我们看到漂亮的页面,以及做一些简单的校验,比如说非空校验,咱们在页面上操作的时候,这些业务逻辑、功能,比如说你购物,发微博这些功能是由后端来实现的,后端去控制你购物的时候扣你的余额,发微博发到哪个账号下面,那前端和后端是怎么交互的呢,就是通过接口。原创 2024-09-28 15:57:04 · 1003 阅读 · 0 评论 -
LoadRunner性能测试基本步骤
本文旨在指导初学者使用LoadRunner进行基础的性能测试。我们在接到一个性能测试任务的时候,需要从以下几点考虑:我们的测试对象是什么,测试要求是什么,测试环境怎么部署的,业务规模如何,哪些业务点是客户最关注的等等,下面将从性能测试启动开始讲解基本的测试流程。1、测试脚本录制在使用loadrunner工具前,需确定哪些业务需要使用该工具进行测试,不需要的时候坚决不用,不要认为这个工具万能。以本次测试中的综合查询(预付费综合业务信息查询)为例进行讲解。1.1录制前准备工作。原创 2024-09-27 16:18:05 · 832 阅读 · 0 评论 -
自动化测试 -- 通过Cookie跳过登录验证码
3、通过Fiddler获取登录请求的Cookie。找到Host为“passport.baidu.com”的URL,在右侧窗口查看该请求的Cookie。的几种处理方式,最后一种就是通过Cookie跳转过验证码,但讲的不够详细。今天,就详细的介绍一下这种方式。最后,刷新页面,现在已经是登录状态了,获取登录之后的用户名并打印。验证码是汉字的,我想通过程序识别起来有点难度,也会比较麻烦。然后,找到重要的两个参数“BAIDUID”和“BDUSS”。首先,访问百度首页,处于未登录状态。原创 2024-09-24 15:11:41 · 554 阅读 · 0 评论 -
哪个才是最适合你的 Web UI 自动化测试框架
最近,项目上出于系统性稳定性、减少测试工作量考虑,打算在 Web 前端引入 BDD。由于上一个项目写了一定的 Cucumber 代码(BDD之一),这个选型的责任便落到了我的肩膀上了。。在搜索了一天后,选择了三个框架 Cucumber、、Gauge。以下是上述的三个框架入选的原因:Cucumber,团队的开发人员有一些有相关的开发经验、支持 JavaScript。Robot Framework,测试人员接受过相关的培训、不支持 JavaScript。Gauge,可以生成更好的。原创 2024-09-23 20:42:19 · 1274 阅读 · 0 评论 -
JMeter集结点的使用场景以及如何使用?
JMeter是一个开源的负载,它被广泛用于测试应用程序、Web服务和网络协议等的性能。在JMeter中,集结点(JMeter Cluster)是一种分布式测试环境,它允许多个JMeter实例同时工作来模拟高并发负载。原创 2024-09-23 20:41:18 · 923 阅读 · 0 评论 -
Python测试框架Pytest的参数化详解
当测试用例只需要一个参数时,我们存放数据的列表无序嵌套序列,@pytest.mark.parametrize("name", data) 装饰器的第一个参数也只需要一个变量接收列表中的每个元素,第二个参数传递存储数据的列表,那么测试用例需要使用同名的字符串接收测试数据(实例中的name)且列表有多少个元素就会生成并执行多少个测试用例。参数化装饰器有一个额外的参数ids,可以标识每一个测试用例,自定义测试数据结果的显示,为了增加可读性,我们可以标记每一个测试用例使用的测试数据是什么,适当的增加一些说明。原创 2024-09-20 15:55:45 · 1182 阅读 · 0 评论 -
测试用例如何评审,看完这篇就会了
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。原创 2024-09-20 15:54:20 · 575 阅读 · 0 评论 -
LoadRunner性能测试基本步骤
本文旨在指导初学者使用LoadRunner进行基础的性能测试。我们在接到一个性能测试任务的时候,需要从以下几点考虑:我们的测试对象是什么,测试要求是什么,测试环境怎么部署的,业务规模如何,哪些业务点是客户最关注的等等,下面将从性能测试启动开始讲解基本的测试流程。1、测试脚本录制在使用loadrunner工具前,需确定哪些业务需要使用该工具进行测试,不需要的时候坚决不用,不要认为这个工具万能。以本次测试中的综合查询(预付费综合业务信息查询)为例进行讲解。1.1录制前准备工作。原创 2024-09-19 15:26:54 · 922 阅读 · 0 评论 -
微信小程序数据包教程抓取,看完就是学会
有很多粉丝小伙伴问到能不能抓取到微信小程序数据呢?答案当然是肯定的,通过或者Charles这些主流的都可以抓得到,在IOS平台抓取微信小程序和https请求都是一样的设置,接下来给大家通过Fiddler演示如何设置在IOS平台端抓取小程序数据包(Charles也是类似)。原创 2024-09-19 15:25:50 · 5181 阅读 · 1 评论 -
httprunner接口自动化测试框架使用说明【保姆级教程】
httprunner是国内开源的一个接口自动化框架,已经有部分公司开始使用这种框架来完成自己公司的接口自动化编写,本文主要是从简单的流程上去讲解咋使用的(PS:开发者本尊的官网教程写的是真的烂。。。,一点也不友好。。。,里面各种坑。。。),本文基于httprunner4.0版本,各位自己注意,不同的版本,用法,命令都不太一样!1.安装httprunner。原创 2024-09-18 20:38:23 · 502 阅读 · 0 评论 -
python+pytest接口自动化 —— 自动化用例编写思路 (使用pytest编写一个测试脚本)
单个接口自动化测试用例,我们可以按照上面的步骤来进行,即:明确测试对象-->编写测试用例-->编写测试脚本-->执行脚本-->获取测试结果。通过这些步骤,我们便对自动化用例的编写有了基本的思路(这一点对于我们自动化测试思维的形成很重要),为我们后续的学习实践打下基础。事实上使用编程语言对项目进行自动化测试时,几乎不可能只存在一条测试用例,那么在有多条测试用例的情况下,需要怎样管理用例、执行用例、获取测试结果?原创 2024-09-18 20:37:32 · 1226 阅读 · 0 评论 -
对答如流!面试官常考的Selenium Web自动化面试题总结
元素定位方式的一种,根据XML路径来定位Web元素,使用XPath定位元素的基本原理是在整个页面的各个元素间进行遍历,从而使用户能根据与当前元素关联的其他元素来确定当前元素的相对/绝对位置。Xpath中“ /”和“ //”的意义如下:(1)“ /”: 用于创建具有绝对路径的Xpath,即xpath从文档根节点/起始节点开始;(2)“ //”: 用于创建具有相对路径的Xpath,即xpath从文档中的任何位置开始(非根节点)。原创 2024-07-26 16:02:51 · 337 阅读 · 0 评论 -
最重要的BI测试-适用于任何BI和分析平台
有测试经验的人都知道,必须定期执行此类 BI 测试,以检测可能与 BI 软件本身或与数据源及其通向数据消费者的路径相关的任何不需要的更改。在 Wiiisdom,我们的客户通过这些不同类型的测试成功地节省了每月的工作时间,从而提高了仪表板和报告的质量,并有更多时间从事其他项目。它还降低了与手动测试相关的风险,而手动测试可能会降低 BI 项目的成功率。通过跨环境测试,可以将给定环境中的一个或多个仪表板与另一个环境中的相同仪表板(即开发或生产的不同站点或服务器等)进行比较——简单地说,就是跨不同环境的回归测试。原创 2024-07-25 20:28:52 · 957 阅读 · 0 评论 -
Jmeter脚本录制:抓取IOS手机请求包
4)“HTTP代理服务器”下,“HTTPS Domains”中设置本地电脑的IP地址,如果不知道,可以用ipconfig /all查一下,端口可以使用默认;“目标控制器配置”:“测试计划>线程组”点击已经连接成功的wifi,打开“无线局域网”页面,拉到下面,点击“配置代理”,打开“配置代理”;在“配置代理”,设置与jmeter中“HTTP代理服务器”一样的IP和端口,点击“存储”。2)“测试计划”中添加“线程组”;3)“测试计划”中添加“HTTP。(1)连与电脑同一个wifi。点击“OK”,继续;原创 2024-07-25 20:27:43 · 306 阅读 · 0 评论