![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
技术分享
文章平均质量分 87
测试界的世清
这个作者很懒,什么都没留下…
展开
-
精准测试(针对人工执行的测试用例和自动化测试脚本)
A3:一旦建成精准测试体系(平台),从使用团队的收益出发,推广是比较容易的,因为收益是明显的,特别是当全自动化方式来运行精准测试,也可以配合一些统一的规则和流程,更重要的是精准测试平台和公司的研发平台要实现无缝对接,理想的情况下,和CI/CD流水线实现灵活的集成,让团队无感地使用起来。从代码层次的依赖性分析还可以扩展到调用链的分析,因为是在程序运行时所采集到的信息,更能真实反映代码的调用关系(依赖性),正像我们做代码依赖性分析时,从源代码上升到编译后的Binary字节码,更能真实反映方法/代码块调用关系。原创 2024-06-18 16:17:34 · 269 阅读 · 0 评论 -
Apipost连接数据库详解
Apipost提供了功能,在接口调试时可以使用数据库获取入参或进行断言校验。目前的Apipost支持:Mysql、SQL Sever、Oracle、Clickhouse、达梦数据库、PostgreSQL、Redis、MongoDB 8种数据库的连接操作。原创 2024-06-18 16:16:37 · 195 阅读 · 0 评论 -
Python+Selenium自动化测试环境搭建步骤(selenium环境搭建)
1.自动化测试概念:是把以人为驱动的测试转化为机器执行的一种过程,它是一种以程序测试程序的过程2.自动化测试分类:一般IT上所说的自动化测试是指功能自动化测试,通过编码的方式用一段程序来测试一个软件的功能,这样就可以重复执行程序来进行重复测试的目的。如果一个软件有小部分功能发生改变,只要修改一部分自动化测试代码,就可以重复对软件进行测试,从而提高测试效率。3.什么样的项目适合做自动化测试:一般情况下,只要满足如下三个情况就可以开展自动化测试软件需求。原创 2024-06-17 17:00:16 · 313 阅读 · 0 评论 -
pytest框架快速入门-pytest运行时参数说明,pytest详解,pytest.ini详解
1.pytest是一个非常成熟的全功能的Python测试框架,主要有一下几个特点:简单灵活,容易上手,支持参数化2.能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium、appium等自动化测试,requests+pytest接口自动化测试3.pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如:pytest-selenium(集成selenium)pytest-html(完美html测试报告生成)原创 2024-06-17 16:58:57 · 733 阅读 · 0 评论 -
性能测试:系统架构性能优化思路
对于业务系统性能问题,我们经常想到的就是要扩展数据库的硬件性能,比如扩展CPU和内存,扩展集群,但是实际上可以看到很多应用的性能问题并不是硬件性能导致的,而是由于软件代码性能引起的。第二个点也是我们经常谈的比较多的点,就是我们的业务系统在进行架构设计的时候,特别是面对非功能性需求,我们都会谈到系统本身的数据库,中间件都采用了集群技术,能够做到弹性水平扩展。比如在我们最近的项目实施中,结合APM和服务链监控,我们可以快速的发现究竟是哪个服务调用出现了性能问题,或者快速的定位出哪个SQL语句有验证的性能问题。原创 2024-06-15 16:31:54 · 542 阅读 · 0 评论 -
Jmeter接口测试 —— jmeter对图片验证码的处理
的输入,而且每次登录时图片验证码都是随机的;当通过jmeter做接口登录的时候要对图片验证码进行识别出图片中的字段,然后再登录接口中使用;如下图:解压后双击OcrServer.exe;然后电脑的右下角会显示该服务的IP和端口。识别图片验证码的字段为json格式;在web端的登录接口经常会有。原创 2024-06-15 16:30:24 · 527 阅读 · 0 评论 -
怎样学习?自动化测试--工程师--框架
在任何行业中,自动化通常被解释为自动处理流程,而这些流程几乎不需要人工干预。在软件行业,测试自动化意味着使用许可版本或开源的自动化工具对软件应用程序执行各种测试用技术术语来说,测试自动化框架是一组定制的交互式组件,它们有助于执行脚本化测试和全面报告测试的结果总体来说自动化测试是测试思想的一个拓宽,为测试工程师提供了一个“触须”,其情形可以看成一个专用工具,可是本质上自动化测试还是一类思想。原创 2024-06-14 16:34:43 · 325 阅读 · 0 评论 -
性能测试包含哪些-流程,测试大D佬详细讲解
一个系统的架构,各服务器之间是如何交互工作、系统的数据流向、系统的压力点,从而确定性能测试需求和指标,即那些功能需要考虑压力,能承担的压力是多大性能测试的目的是发现系统处理能力的瓶颈而系统调优才是最终的目的,如果能进一步提高各业务服务器、数据库服务器的调优技能,对性能测试工作来说是如虎添翼比如一个购物网站,最典型的登陆功能、提交订单功能需要支持多少个用户并发,每个并发用户在几秒之完成操作,系统长时间在压力状态下的稳定性。原创 2024-06-14 16:33:31 · 314 阅读 · 0 评论 -
还不会python 实现常用的数据编码和对称加密?看这篇文章就够啦~
des 对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时 , 必须共同持相同的密码。在 python 中有一个叫做 pyDes 的第三方库可以用来实现 DES 加密,使用之前需要先通过 pip 命令安装:pip install pyDes。原创 2024-06-13 17:29:08 · 590 阅读 · 0 评论 -
【软件测试】遇到bug怎么分析,这篇文章值得一看
只有我们自己对bug有一个较全面的认识,才会判别出开发写的是不是真正的原因,也才能有助于我们后续对bug进行分析归类,根据bug分析,有针对性地未雨绸缪,进而提升产品质量,降低缺陷。当然,不要以为需求文档就全部正确,它也可能会有错误,我们也应该去发现需求文档的bug,然后再去协调PM,敦促FE或者RD进行修改。另外,如果团队规模较大,或者由各地的项目组拼凑而成,势必会增加沟通成本,这更需要我们在类似禅道或者Jira等项目管理软件中提交bug时,先指明是谁的bug,避免互相踢皮球的现象。原创 2024-06-13 17:28:14 · 903 阅读 · 0 评论 -
Python多线程:自动化测试中的运用
Python中的多线程通过threading模块实现,它提供了创建和管理线程的功能。可以使用锁(Lock)、条件变量(Condition)、信号量(Semaphore)等工具实现线程间的同步和互斥。可以使用Thread对象的方法(如is_alive()、join()等)来管理线程的状态和控制线程的执行流程。多线程环境中可能出现资源竞争的问题,需要通过同步和互斥机制来保证数据的正确性。通过创建Thread对象来定义线程,指定线程要执行的函数或方法。调用线程对象的start()方法来启动线程,使其开始执行。原创 2024-06-12 16:32:54 · 465 阅读 · 0 评论 -
常见自动化测试框架和工具
例如,Java语言环境下的自动化接口测试可以使用Jenkins + Maven + TestNG + OkHttp,Python语言环境下的自动化接口测试可以使用Jenkins + pytest + requests + Allure。它可以驱动浏览器模拟人的操作,如鼠标单击、键盘输入等,并可以实现目标内容的获取和自动下载等。它完全兼容unittest,并且含有丰富的插件,支持简单的单元测试和复杂的功能测试和接口自动化测试。它可以与pytest集成,生成美观易读的测试报告,并可以集成到Jenkins中。原创 2024-06-12 16:31:26 · 771 阅读 · 0 评论 -
Python自动化测试之异常处理机制实例详解
今天笔者还是想要讲python中的基础,主要讲解Python中异常介绍、捕获、处理相关知识点内容,只有学好了这些才能为后续自动化测试框架搭建及日常维护做铺垫,废话不多说我们直接进入主题吧。到此这篇关于Python自动化测试之异常处理机制的文章就介绍到这了,更多相关Python异常处理机制内容请搜索“软件测试pytest”以前的文章或继续浏览下面的相关文章希望大家以后多多支持“软件测试pytest”!原创 2024-06-11 17:20:22 · 701 阅读 · 0 评论 -
测试开发 | JMeter 典型电商场景(下单/支付)的性能压测
1. 分步拆解。原创 2024-06-11 17:18:19 · 255 阅读 · 0 评论 -
Jmeter接口测试步骤
首先我们说一下为什么用Posman测试后我们还要用Jmeter做接口测试,在用posman测试时候会发现的是一个接口一个接口的测试,我们每次测试成功后的数据,在工具中是无法保存的,再次测试的时候我们还要重新输入测试的数据,当我们测试一个接口的时候可能感觉不明显,但是当你测试几十个接口的时候,你就会发现使用Jmeter的好处。注:由于Jmeter请求线程组内的请求时从第一个开始执行,所以我们将需要最先执行的请求放在前面。3、在线程组中添加一个HTTP请求,这里我们重命名“增加信用卡账户信息接口”原创 2024-06-07 20:27:01 · 377 阅读 · 0 评论 -
【性能测试】常见适用场景以及策略
在既有测试环境下,不考虑资源占用率的极限情况(CPU使用率达到95%以上或IO异常繁忙或Load值较高),在系统不宕机的情况下的最大处理能力。不断调整系统各方面的配置(软硬件、参数配置等),验证在性能达到最优时(最优的性能一定是权衡各方面因素找到的平衡点)的最佳配置。PS:这种测试策略使用的也相对较少,主要针对不确定性的短期的峰值流量涌入场景(比如某微博的离婚、恋爱、分手话题)。以恒定的并发数(根据负载测试的结果,CPU使用率在70%时对应的并发数),验证系统在混合场景下的性能表现。原创 2024-06-07 17:24:18 · 914 阅读 · 0 评论 -
软件测试工程师最常用的web测试-浏览器兼容性测试
如今,市面上的浏览器种类越来越多(尤其是在平板和移动设备上),这就意味着你所测试的站点需要在这些你声称支持浏览器上都能很好的工作。同时,主流浏览器(IE,Firefox,Chrome,Opera,Safari)版本更新更加频繁,终端用户甚至不会感知这些浏览器版本的升级。这两点就导致了对于日益增多的浏览器做兼容性测试显示十分必要,但也使得这种兼容性测试变得十分耗时。通过全覆盖的测试,你就可以明确的知道你的站点支持哪些浏览器,哪些有兼容性问题。原创 2024-06-06 22:26:19 · 832 阅读 · 0 评论 -
如何提高自己的软件测试水平之bug定位
课上我说过,bug的数量是衡量测试工程师的一个指标,而bug的质量(优先级)也是一个重要指标,不要重视了数量而忽视了质量。(我面试别人的时候也问过,哈哈哈),很多面试者对这个问题表示很意外,然后绞尽脑汁的想,然后随口扯一个.作为面试官,我想知道的并不是你印象最深的bug,我想知道的是在这bug的发现和解决过程中你是如何体现你的价值的,这只是“准确定位bug”披了一层伪装而已。也许,你会说,测试工程师,可以发现一些异常Bug、发现一些深层次的Bug、定位一些Bug原因、提前发现Bug。8、有信息检索能力;原创 2024-06-06 22:25:35 · 379 阅读 · 0 评论 -
生成测试报告,在Unittest框架中就是简单
测试套件(Test Suite)是测试用例、测试套件或两者的集合,用于组装一组要运行的测试(多个测试用例集合在一起)。(2)将测试用例,加载到测试套件中。原创 2024-06-06 17:06:11 · 982 阅读 · 0 评论 -
生成测试报告,在Unittest框架中就是简单
测试套件(Test Suite)是测试用例、测试套件或两者的集合,用于组装一组要运行的测试(多个测试用例集合在一起)。(2)将测试用例,加载到测试套件中。原创 2024-06-05 22:19:13 · 992 阅读 · 0 评论 -
百度软件测试详细面经(含标准答案)
服务器收到客户端的请求后,会回复一个带有确认(ACK)标志和自己的同步序列编号的数据包,表示接受连接请求,并通知客户端自己也准备好建立连接。状态码301和状态码302相似,不同的是状态码301往往代表的是永久性的重定向,值得注意的是,这种重定向跳转,从严格意义来讲不是服务器跳转,而是客户端跳转的。服务器通过返回状态码304可以告诉客户端请求资源成功,但是这个资源不是由服务器提供返回给客户端的,而是客户端本地浏览器缓存中就有的这个资源,因为可以从缓存中获取这个资源,从而节省传输的开销。原创 2024-06-03 22:18:00 · 929 阅读 · 0 评论 -
如何构建高效测试体系?掌握5大自动化测试模式就够了
软件开发过程中,高效的自动化测试体系是提升测试效率、保证产品质量关键,一个全面的测试体系涵盖多个维度,从功能性到用户界面,再到性能和安全性。每个维度均采用不同的测试模式来满足特定的需求和解决特别的挑战,本文将探讨多种自动化测试模式,并分析它们如何相互补充,以形成一个综合且高效的测试策略。功能性测试模式的核心目标是验证应用程序是否满足用户的功能性需求。这种测试将复杂的应用分解成小模块,单独对每个模块进行测试,通过隔离问题,帮助团队减少调试时间,并提高测试的可复用性。原创 2024-06-03 22:11:31 · 802 阅读 · 0 评论 -
APP流水线测试领域探索与最佳实践
莫属,Jenkins功能强大、可二次开发,但执行APP自动化需要windows执行机、模拟器/真机,这些要求无疑增加了测试成本。与之相比,Bamboo平台是基于Jenkins开发的流水线平台,不仅继承了Jenkins的众多功能,且支持图形化配置,并对接了赛博平台等其他平台。从下图对比中可以看出,复用现有的Bamboo平台成本更低,同时需要做以下改变:一、自动化框架需要改为airtest框架;影响:无法指定机型进行兼容性测试,与赛博平台分则产品沟通过,暂未有计划修改此项。4、京管家未接入线上打包平台。原创 2024-06-01 16:40:05 · 970 阅读 · 0 评论 -
一分钟带你创建百万测试数据,玩转软件测试
应对数千万行的数据量依旧顺滑,关键之处在于,SQL Studio允许您在生成过程中随时终止操作,保证了灵活性和控制力。今天的内容就到这里了,大家还有哪些好用的工具推荐,可以在评论区秀出来。我们先在对象窗格顶部的搜索栏,输入表名,快速定位对应的数据库、表,点击右键“生成测试数据”即可。满足对性能和负载的全面测试,无论是模拟大型数据集、并发用户还是高负载环境,都能轻松胜任。这里还有一个隐藏操作,当我们选择“覆盖”,行数输入零,就可以清除数据表数据了。,不仅仅上手快,还能确保测试数据的质量。原创 2024-06-01 16:39:13 · 451 阅读 · 0 评论 -
推荐几款常用的Mock测试工具!
模拟测试(Mock Testing)是软件测试中的一种重要技术,它的主要用途是在中对代码进行测试,特别适合在进行开发自测、单元测试或接口测试阶段。比如:有时候在进行单元测试时,我们希望测试一个函数或方法,但它依赖于其他组件或外部资源(例如数据库、网络服务等)。这些依赖可能会使得单元测试变得复杂、耗时或不稳定。为了解决这个问题,模拟测试技术应运而生。:模拟测试可以帮助我们模拟外部依赖,例如数据库访问、网络请求等,从而使得单元测试更加独立、可靠和快速。原创 2024-05-31 20:59:00 · 640 阅读 · 0 评论 -
掌握 JMeter 参数化测试,提升应用性能测试水平
参数化测试通过使用 JMeter 进行参数化测试,我们可以生成多组测试数据,全面评估应用程序的性能。在本文中,我们介绍了如何创建测试计划、添加 HTTP 请求、定义参数变量以及使用 CSV 文件输入实现多组测试数据的替换。希望这些技巧能帮助你更高效地进行性能测试!原创 2024-05-31 20:57:29 · 470 阅读 · 0 评论 -
软件测试人员的基本功包括些什么?
测试用例,是为特定测试目的设计的测试执行文档。通俗解释为:针对被测功能,你要测什么,你要通过测试团队规范化的用例形式把他写出来。原创 2024-05-27 22:13:09 · 714 阅读 · 0 评论 -
如何判断自动化测试的时机?
考虑自动化测试工具和框架的适用性,是否能够满足项目的需求,以及是否需要额外的学习和适应期。分析软件的功能和接口是否已经相对稳定,不再经常修改,以便编写稳定的自动化测试脚本。考虑是否需要在不同的操作系统、设备和浏览器上进行测试,这将增加手动测试的复杂性。考察团队成员的技术能力和经验,包括是否熟悉自动化测试框架、编写测试脚本的经验等。理解测试的功能和覆盖范围。估算手动测试的时间和人力成本,计算每个测试迭代中需要完成的测试工作量。根据时间和资源的限制,评估是否有足够的资源和时间来进行自动化测试。原创 2024-05-24 16:45:18 · 256 阅读 · 0 评论 -
无需测试环境!如何利用测试脚手架隔离微服务,实现功能自动化
在我们的预合并部署中,这可以让微服务寻找测试脚手架,而在集成环境中,我们可以让该服务寻找适当的已部署服务。测试脚手架的作用与建筑脚手架的作用类似,随着微服务交互的增加,会将其添加到脚手架中。最近,当我们开始一个新的项目,为客户构建一个新的聚合平台时,我们希望将尽可能多的测试和自动化转移到流程的合并前执行。其次,由于服务之间的连锁调用,可能会出现延迟问题和测试缓慢。这样,测试就可以向服务发送请求,让服务处理请求,然后从脚手架 DynamoDB 中提取发送到 SNS 主题的结果,以确定结果是否符合我们的预期。原创 2024-05-24 16:43:02 · 218 阅读 · 0 评论 -
移动端专项测试环境部署
如想进入官网https://android-sdk.en.softonic.com/download的download部分进行sdk下载,这时需要科学上网才能到达,你们懂的。,文件传输等),并提供进入 Unix shell(可用来在设备上运行各种命令)的访问权限。进行上述步骤之后,adb server会与所有正在运行的设备建立连接,这样可以与设备交互。在TCP连接方式下,它通过扫描。,并对 adb 客户端发出的命令进行处理(所有 adb 客户端通信均通过与PC上端口 5037 建立TCP连接通信)。原创 2024-05-23 19:36:37 · 524 阅读 · 0 评论 -
四种常见的代码覆盖率测试
代码覆盖率是衡量测试代码测试了源代码百分比多少的指标。它可以帮助您识别可能缺乏适当测试的代码区域。File% Branch% Linesfile.js90%100%90%80%89,256coffee.js55.55%80%50%62.5%10-11, 18当您添加新的功能和测试时,增加代码覆盖率百分比可以让您更加确信您的应用程序已经经过了彻底的测试。然而,还有更多的问题有待发现。代码覆盖率是衡量测试有效性的有用指标。原创 2024-05-23 19:24:04 · 766 阅读 · 0 评论 -
自动化测试落地“宝典”分享
4.培训方式,先筛选一部分人进行培训,培训方式,可以采取,一个讲师,进行培训,然后实训,带大家一起操作,留作业,检查,最后结束,培训毕业,是需要通过一些题目考试;11.要考虑持续性问题,别老想一步到位,工具的改进和人员学习,工具在业务中的改进,落地,是一个持续循环过程,要做好数据收集,成果分享,任务监督,问题沟通,工具改进,工具执行,PDCA;7.一大部分人会了,有标准化的视频,剩下的主动性低或者新进员工,根据整理的资料和相关视频,进行学习,再考核,跟晋升挂钩,这样所有人都得学会了或者大部分人都要学会了;原创 2024-05-22 21:00:38 · 276 阅读 · 0 评论 -
新手入门:Web安全测试大盘点
主要是指攻击者通过巧妙的构建非法SQL查询命令,插入表单或请求字符串后提交,并根据返回的结果,来获得想要的数据。一般情况下,他们会往Web页面里插入恶意Script代码,当用户浏览该页面时,嵌入其中的Script代码会被执行,从而攻击终端用户。在测试过程中,我们需要注意命名规则,以及对关键词的屏蔽等。,它可以利用堆栈溢出,在函数返回时,将程序的地址修改为攻击者想要的任意地址,达到攻击者的目的。所以,在测试过程中,我们需要注意输入输出的大小长度以及格式规范限制,还有需要多模拟一些异常,关注异常的处理情况。原创 2024-05-22 20:59:07 · 593 阅读 · 0 评论 -
新手如何用Airtest实现在图片范围内随机点击?
前几天有个新手同学在Airtest官群里问了这样一个问题:我是新手,在图片范围内随机点击 ,用Airtest怎么实现?代码?那我们就以这个问题为例,浅浅聊一下,怎么把需求转化成我们的Airtest代码。首先新手同学对Airtest要有以下几点认知:① Airtest是一个图像识别框架,它能在屏幕上用图像识别来找到想操作的位置并点击,所以Airtest本质上点击的是目标图片的坐标,默认是中心点。原创 2024-05-22 20:58:14 · 400 阅读 · 0 评论 -
冒泡排序算法原理和代码实现,就是这么简单!
所以,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。从前往后(或者从后往前),依次比较记录中相邻的两个元素,如果他们顺序错误就把它们交换过来,直到没有再需要交换的元素,就说明该记录已完成排序。它看起来就像是把最大的元素(或最小的元素)经由交换慢慢的‘浮’到数列的顶端,故名冒泡排序。2. 对每一组相邻元素做同样的工作,从开始到最后一对,这时最后的元素应该会是最大的数。原创 2024-05-21 17:01:59 · 591 阅读 · 0 评论 -
MySQL多表连接查询
例如,如果员工表和课程表中没有任何关联字段,那么连接查询员工和课程的信息时,可能会产生两个表的笛卡尔积,即每个员工和每个课程的所有组合。例如,如果员工表和部门表中的部门编号都有重复值,那么连接查询员工和部门的信息时,可能会出现一个员工对应多个部门,或者一个部门对应多个员工的情况。例如,查询学生表和成绩表中,所有有成绩的学生的姓名和成绩,如果某个成绩没有对应的学生,则显示NULL,可以使用如下语句:。例如,查询学生表和课程表中,所有学生和课程的组合,可以使用如下语句:。原创 2024-05-21 17:00:39 · 671 阅读 · 0 评论 -
Jmeter分布式性能测试,80%资深测试都会遇到这个坑!
在做后端服务器性能测试中,我们会经常听到'分布式'。哪你,是否了解分布式呢?今天,我们就来给大家讲讲,在企业实战中,如何使用分布式进行性能测试,实战过程中,又有哪些地方要特别注意?原创 2024-05-18 20:30:46 · 798 阅读 · 0 评论 -
SoapUI、Jmeter、Postman三种接口测试工具的比较分析
SoapUI的组织方式如下图,最上层是WorkSpace,每个窗口只可以打开一个WorkSpace(这是一个xml文件),每个Project也是一个单独的xml文件(为了协同工作,也可以通过设置将其转化为一堆文件集合),所以每个WorkSpace中可以打开多个Project,一个Project也可以在不同的WorkSpace中。SoapUI:本身一个project是一个xml文件,但是可以通过配置变成一系列文件夹,每个Case、每个Suite均是独立的文件,这样可通过svn/git进行团队协作。原创 2024-05-18 20:29:25 · 737 阅读 · 0 评论 -
Jmeter链接数据库原来这么简单~
查询多条,callable statement,config连接串中必须加allowMutiQueries=true,否则查询报错。,需要外部引入数据库驱动的可以把驱动包放在jmeter本身的jar包路径下,方便引用,也防止外部目录改变或清理后找不到包报错。上图中,我查询了4条数据,引用时用 ${variable name_n} 取值,n是需要的第几条数据。查询单条,select statement,连接串中可以不加allowMutiQueries=true。常用数据库如MySQL,原创 2024-05-17 20:45:10 · 369 阅读 · 0 评论 -
测试开发面试题:悲观锁和乐观锁
在这个例子中,我们没有使用锁,而是在更新共享数据count的时候,先读取当前值到local_count中,执行操作后,再检查count是否被其他线程修改过。在这个例子中,我们使用threading.Lock()创建一个锁对象,然后在需要访问共享数据count的时候,使用with lock:获取锁,执行操作后释放锁。乐观锁:假设并发冲突的概率很低,因此在读取数据时不加锁,而是在更新数据时检查数据是否被其他线程修改过。悲观锁:假设并发冲突的概率很高,因此在读取数据时会加锁,以防止其他线程修改数据。原创 2024-05-17 20:42:24 · 812 阅读 · 0 评论