-
我们在使用网站过程中,经常会遇到慢的问题,为了找到原因,一般需要借助工具进行检测,通过工具,可以检测出前端站点加载资源的相关详细情况。 今天,就给大家介绍几款前端性能测试分析工具,结合性能测试工具,实现通过量化的方式测试网站中诸如首字节加载时间(time to first byte)或者渲染时间等表现。其中有些工具还会检查资源是否被缓存,多个 CSS 或 JS 文件是否值得合并,最后自动给出前端性能优化改进建议报告,如果对你有用的话,欢迎收藏转发。 1、 Lighthouse Lighthouse是一个开源的自动化工具,用于帮助改进网络应用的质量。可将其作为一个 Chrome扩展程序运行,或从命令行运行。Lighthouse分析web应用程序和web页面,收集关于开发人员优秀实践的现代性能指标和见解,让开发人员根据生成的评估页面,来进行网站优化和完善,提高用户体验。 当为 Lighthouse 提供一个要审查的网址,它将针对此页面运行一连串的测试,然后生成一个有关页面性能的报告。可以参考失败的测试,看看可以采取哪些措施来改进应用。 使用入门 运行 Lighthouse 的方式有两种:作为 Chrome 扩展程序运行,或作为命令行工具运行。 Chrome 扩展程序提供了一个对用户更友好的界面,方便读取报告。 命令行工具允许您将 Lighthouse 集成到持续集成系统。 Chrome 扩展程序 下载 Google Chrome 52 或更高版本,接着安装 Lighthouse Chrome 扩展程序。 命令行工具 安装 Node,需要版本 5 或更高版本。 安装 Lighthouse 作为一个全局节点模块。 针对一个页面运行 Lighthouse 审查。 传递 --help 标志以查看可用的输入和输出选项。 2、SpeedCurve SpeedCurve 可以帮助追踪自己的性能表现,以及竞争对手的性能表现。它可以用来查看某个因素在不同站点的速度表现,并且还提供了综合监控。综合监控是在受控环境中模拟网站。在其中可以自定义选项,比如网络速度、设备、操作系统等等。 3、Pingdom 在Pingdom输入 URL 地址,即可测试页面加载速度,分析并找出性能瓶颈。帮助用户找出影响网站速度的原因,并给出改善网页性能的可行性方案,很适合做网站的用户。 4、PageSpeed Insights Google Page Speed Insight(PSI)是一款旨在优化所有设备上的网页、提高网页加载速度的工具。它提供免费服务,可以分析网页的内容,提出建议,加快网页的速度。它为您提供了关键指标,如第一个内容绘制,总阻塞时间和更多。度量标准被分类为Field Data、Origin Summary,Lab Data,Opportunities、Diagnostics 和Passed Audits。 在线版: 你可以从chrome应用商店里找到PageSpeed Insights插件。 点击open 在线分析性能,也可以测试本地的项目通过PageSpeed,点击Start analyzing运行一会就显示分析结果。 5、SpeedTracker SpeedTracker运行在WebPageTest上,可定期进行网站性能测试,并显示各种性能指标随时间的变化。这个功能可以帮助不断评估网站,并查看新功能如何影响网站的性能,还可以定义预算并通过电子邮件和Slack获取警报。 6、WebPageTest WebPageTest是一个在线性能评测网站, 它是一个非常详细且专业的web页面性能分析工具,而且开源的!支持IE,Chrome,使用真正的浏览器(IE和Chrome)和真实的消费者连接速度,从全球多个地点运行免费网站速度测试。WebpageTest 主要提供了Advanced Testing、simple Testing、Visual Comparison、Traceroute四个功能。 项目地址: 可以运行简单的测试或执行高级测试,还会依据测试结果提供丰富的诊断信息,包括资源加载瀑布图,页面速度优化检查和改进建议,会给每项内容一个最终的评级。 如果你打不开其官网,或者担心安全问题,你可以自己拿源码搭建这个平台工具。 7、Sitespeed.io Sitespeed.io 是开源的Web性能测试工具,用来衡量Web网站的综合性能,帮助开发和测试人员分析网页的加载速度和渲染性能。Sitespeed.io通过驱动浏览器(如:Chrome、Firefox)进行测试,然后从开发者的站点收集多个页面的数据,并根据优秀实践等规则来分析这些网页,然后将结果以HTML报告的形式输出。 项目地址: 安装sitespeed.io之后,如果要分析一下百度PC首页性能,执行以下命令: 该命令将会在chrome浏览器下调起URL为https://www.baidu.com 5次,产出了一个分析文件夹,打开index.html文件后,我们可以看到关于页面性能的相关总结。
-
首先一个软件做出来,最不能少的人是谁?不用说就是开发,因为开发是最了解软件运作的那个人,早期不少一人撸网站或者APP的例子,相当于一个人同时是产品、研发、测试、运维等等,这也是为何开发是地位和上限是最高的职位。 而随着软件的复杂度越来越高,一个人是撸不出真正的大型商业软件的,所以才开始各司其职,产品去调研需求,开发负责实现功能,测试负责把控质量,运维负责照看环境等等。 所以要明确一点:别拿测试不当研发。测试岗本身就是从研发分出来的,绝大多数公司也都会把测试归类于研发中心,所以如果你以为测试只是偏业务的点点点小兵,那就大错特错了。 但是测试确实是又不如研发,因为测试本身是个成本岗位,说白了就是不负责产出的,理论上研发的能力强和自测做的好,测试甚至可以打酱油,这也是为什么有些公司或者领导不怎么看中测试的原因。所以测试前景好不好,现在是看你自己怎么定位测试这个职业,你是偏向产品和业务的功能测试?还是偏向于研发的自动化、性能或者测开? 所以测试人员的难点其实就是如果你只想安安静静的当一个纯粹的测试人员,那确实没啥前景和出路,实际上测试走到最后都是要点技能树转职的: 1、点业务技能点的,以后可以成为半个产品,甚至业务专家,这在金融领域等重业务的公司是很吃香的。 2、点研发技能点的,以后可以成为测开、自动化、性能、安全等等,有研发能力的测试在大多数互联网公司都是很受欢迎的,一是开发愿意跟你沟通,二是互联网的测试内容需要一点的技术底子。 3、点管理技能点的,因为测试本身处在整个需求生命周期的中后端,也就是前期没啥事,后期能不能上线全看测试的表现,所以也有测试兼职做项目管理的,做着做着最后就成了实际的管理者了,所以如果你见到一个项目的负责人是测试不要觉得奇怪,这系统能不能上是他来点头的。 这既是测试的优点、也是难点,优点在于测试转岗的能力是仅次于开发的,缺点就在于纯测试的上限也确实是最低的,相比于业务、研发这两大直接产出职能来说,不信你瞧瞧各公司的高层、创始人,几乎没谁是一路测试干上来的。 所以测试到了中后期是一定要转型的,而后期能不能转型成功全看你头几年的个人积累。我的建议是,你擅长干什么,或者喜欢干什么,就往那个方向转。 如果你业务贼牛,功能很熟练,整个公司比你更熟悉这个系统功能的人没几个,那你就尝试着转型项目负责人或者产品,不要只是被动的等需求。 如果你仍然把自己当作研发,那就去写代码,看代码,不要只会有问题就提BUG,要了解系统是如何运作的,要知道问题出在哪,最好是代码要改哪一行都给研发指出来,然后自己平时搞点自动化,前端后台都搞搞,弄个小的自动化平台出来,了解一点底层的知识,学到最后你就已经跟开发无异了。 我来给你说说一个测试工程师提BUG是分几个等级的: 初级:只知道提BUG,原因是啥不知道,让开发自己去研究。 中级:大概知道是哪里出了问题,能提供数据和日志,细致的还得开发自己去排查代码。 高级:有代码阅读能力,已经能把问题定位到具体的模块甚至具体的代码块了。 专家:拿个小版凳坐在开发旁边,用手指着开发的屏幕,呐,就这里出问题了,我来告诉你怎么改,你如果不会的话我甚至可以亲自帮你改。其实我一直都认为测试应该就跟开发排排坐,两个人盯着代码慢慢的debug,而不是测试只管提BUG,一问怎么出问题的啥都不知道,那样只会降低测试的权威性。 什么是测试的权威性?为什么有些公司的测试没人权,而有些公司的测试地位高。主要就是看测试对这个系统的熟悉程度,某些老测试堪称百科全书,这个系统从业务到代码都懂,这种人他指出的问题即便是研发大佬都不太敢反驳,但实际上更多的人只是用例执行人,BUG收集器,一问三不知,反正就有问题,代码看不懂,原理不了解,一看就感觉这人不太靠谱,所以这也是为何有些研发会认为测试门槛低是个人就能做的原因。 说了这么多,简单提炼一下: 1、纯粹只干测试上限来的快,要趁着年轻多积累,争取转型的机会。 2、尽量提高个人的权威性,不论是技术、还是业务,这都需要更深入的学习和积累。
-
接口定义: 接口普遍有两种意思,一种是API(Application Program Interface),应用编程接口,它是一组定义、程序及协议的集合,通过API接口实现计算机软件之间的相互通信。而另外一种则是Interface,它是面向对象语言如java,c#等中一个规范,它可以实现多继承的功能。接口测试中的接口指的是API。为什么要使用接口: 假如公司的产品前端开发还没开发完,接口开发好了。有天领导说,小王,你测下这个登录功能,要是你不懂接口的话就会对领导说这个功能测不了啊,页面没开发完。领导会把你!@¥@)¥! 接口测试是不需要看前端页面的,可以更早的介入到测试工作中,提高工作效率。 根据测试金字塔,越底层成本越低,一个底层的bug可能会引起上一层的多个bug,所以测试越底层,越能保证产品的质量,也越能节省测试的成本。而单元测试一般是由开发来完成的,所以对于测试来说,接口测试是非常必要的。对于自动化测试来说,UI的变动性最大,所以UI自动化测试的维护成本很高。而接口的改动很小,所以接口自动化测试是最实用,最节约成本的。2. 基本流程接口功能自动化测试流程如下:需求分析 -> 用例设计 -> 脚本开发 -> 测试执行 -> 结果分析2.1 示例接口手机号码归属地接口地址:http://apis.juhe.cn/mobile/get返回格式:json/xml请求方式:get请求示例:http://apis.juhe.cn/mobile/get?phone=手机号&key=您申请的KEY3. 需求分析需求分析是参考需求、设计等文档,在了解需求的基础上还需清楚内部的实现逻辑,并且可以在这一阶段提出需求、设计存在的不合理或遗漏之处。如:手机号归属地接口,输入不同号码段的手机号,查看手机号归属和手机号码属于哪个运营商4. 用例设计5. 脚本开发5.1 模块安装使用pip命令安装即可:pip install requests5.2 接口调用使用requests库,我们可以很方便的编写上述接口调用方法(如输入phone=手机号,示例代码如下):在实际编写自动化测试脚本时,我们需要进行一些封装。#!/usr/bin/python3import unittestimport requestsimport jsonclass Test_Moblie(unittest.TestCase):# 封装公共的数据def common(self, phone):url = "http://apis.juhe.cn/mobile/get"date = {'key': "4391b7dd8213662798c3ac3da9f54ca8",'phone': phone}self.response = requests.get(url, params=date)return self.responsedef test_1(self):self.common("1857110")print(self.response.text)def test_2(self):self.common("1868115")print(self.response.text)if __name__ == '__main__':unittest.main() 我们按照测试用例设计,依次编写每个功能的自动化测试脚本即可。5.3 结果校验在手工测试接口的时候,我们需要通过接口返回的结果判断本次测试是否通过,自动化测试也是如此。对于本次的接口,输入手机,我们需要判断返回的结果resultcode是不是等于200结果分页时需要校验返回的结果数是否正确等。完整结果校验代码如下:#!/usr/bin/python3import unittestimport requestsclass Test_Moblie(unittest.TestCase):# 封装公共的数据def common(self, phone):url = "http://apis.juhe.cn/mobile/get"date = {'key': "4391b7dd8213662798c3ac3da9f54ca8",'phone': phone}self.response = requests.get(url, params=date)return self.responsedef test_2(self):self.common("1868115")print(self.response.json())dict_2 = self.response.json()# 打印值省份值为:200resultcode = dict_2["resultcode"]# 为演式错误的示例,将对比值改为200,正确值为200,可自行修改self.assertEqual(resultcode, "200", msg='失败原因:%s != %s' % (resultcode, "200"))if __name__ == '__main__':unittest.main()运行结果:5.4 生成测试报告用例执行完之后,那就需要发报告给领导。那么我们使用HTMLTestRunner第3方模块插件生成html格式测试报告from unittest import TestSuitefrom unittest import TestLoaderimport requestsimport jsonimport HTMLTestRunnerimport unittestclass Test_Moblie(unittest.TestCase):# 封装公共的数据def common(self, phone):url = "http://apis.juhe.cn/mobile/get"date = {'key': "4391b7dd8213662798c3ac3da9f54ca8",'phone': phone}self.response = requests.get(url, params=date)return self.responsedef test_1(self): """判断状态码"""self.common("1857110")print(self.response.json())# 返回数据为dictprint(type(self.response.json()))dict_1 = self.response.json()# 打印值省份值为:湖北province = dict_1["result"]["province"]self.assertEqual(province, "湖北", msg='失败原因:%s != %s' % (province, "湖北"))def test_2(self): """判断省份"""self.common("1868115")print(self.response.json())dict_2 = self.response.json()# 打印值省份值为:湖北resultcode = dict_2["resultcode"]# 为演式错误的示例,将对比值改为201,正确值为200,可自行修改self.assertEqual(resultcode, "201", msg='失败原因:%s != %s' % (resultcode, "200"))if __name__ == '__main__':report = "E:/report_path/result.html"file = open(report,"wb")# 创建测试套件testsuit = unittest.TestSuite()testload = unittest.TestLoader()# 括号内传入的是类名,会自动找到以test开头全部的用例# 用例以例表形式存储case = testload.loadTestsFromTestCase(Test_Moblie)testsuit.addTests(case)run = HTMLTestRunner.HTMLTestRunner(stream=file,title="接口自动化测试报告",description="用例执行结果")run.run(testsuit)file.close()5.5发送邮件报告测试完成之后,我们可以使用zmail模块提供的方法发送html格式测试报告基本流程是读取测试报告 -> 添加邮件内容及附件 -> 连接邮件服务器 -> 发送邮件 -> 退出,示例代码如下:#!/usr/bin/python3import zmaildef send_mail():# 定义邮件mail = {"subject": "接口测试报告",# 任一填写'content_text': '手机号归属地_API自动化测试报告',# 任一填写# 多个附件使用列表"attachments": "E:/report/result.html"}# 自定义服务器# 如果不知道如何查看授权码,请查看这一篇博客:https://www.cnblogs.com/zzpython/p/13095749.htmlserver = zmail.server("发送人邮箱.com","QQ邮箱是用授权码",smtp_host="smtp.qq.com",smtp_port = 465)# 发送邮件server.send_mail("收件人QQ邮箱", mail)try:send_mail()except FileNotFoundError:print("未找到文件")else:print("发送成功")6. 结果分析打开完成后生成的测试报告,可以看出本次测试共执行了2条测试用例,1条成功,1条失败 最终发送测试报告邮件,截图如下:
-
自动化测试是不会替代手工测试的,代码也要依赖业务,哪个手段高效用哪个,自动化只是用来代替手工的重复性工作,但代替不了人脑思维,相比来看手工测试更灵活,因此更容易发现bug。但需具备代码能力,需要时自动化时可实现自动化。所以测试人员需具备:业务能力,代码能力,测试思维
-
首先,我不太喜欢“手工”测试这一称呼。这就好比我们把一个雕刻家叫“刻石头/木头的”; 我们测试虽然用“手”在鼠标点点点,键盘敲敲敲,但我们是带脑子的,有基本的测试方法和思路,对产品的功能足够熟悉。真以为我们是monkey啊!!。其次,自动化测试和手工测试不是对立,你做自动化一样要了解产品需求,熟悉产品的实现过程,以及产品的功能,时不时也要用手点吧点吧。常规的产品UI功能测试,有些简单重复性比较高的地方也可以用自动化来代替。(雕刻家也是可以用机器去打磨和抛光来提高效率的嘛。)所以,自动化测试是测试人员的一个必备技能之一,并不是手工测试的替代品。其实,测试行业这么多年来的发展已经证明了这一点,自动化出现了这么多年,并没有完全替代手工测试,该用手的地方还得用手。手工测试我不喜欢这个称呼,它不是光拿手点,别人可是带脑子思考的,取决于对业务的理解广度、深度。对测试人员要求也是相当高的。从职位发展来看:自动化测试的发展并不一定就比手工测试的好。如果做自动化测试你只具备了编写代码的能力,完全脱立了业务,那你写出来的脚本一定没手工测试测试出来的bug多。所以软件测试人员一定要掌握业务,即需求,这是软件的命脉,也是测试人员的命脉。总结:自动化测试是不会替代手工测试的,代码也要依赖业务,哪个手段高效用哪个,自动化只是用来代替手工的重复性工作,但代替不了人脑思维,相比来看手工测试更灵活,因此更容易发现bug。但需具备代码能力,需要时自动化时可实现自动化。所以测试人员需具备:业务能力,代码能力,测试思维
-
每日任务之提交代码、手工测试用例、接口测试用例,怎么做了之后,麻豆没加上去,之前一直这么做的,什么情况
-
渗透测试的基本流程 渗透测试一定要按照必要的流程才能更大地提高渗透测试的成功性,所以我们应该要好好地清楚渗透测试必要的流程。我们可以把渗透测试的流程分为6个阶段,这6个阶段都是必不可少的。 1:前期交互 这个阶段是指与客户交流渗透测试的要求和确定和渗透团队确定攻击的范围。该阶段是收集客户的要求,并制定渗透测试的计划和对团队每个人的分配工作。 2:收集渗透目标的情报 收集渗透目标的情报是最重要的阶段。如果收集到有用的情报资料的话,可以大大提高对渗透测试的成功性。收集渗透目标的情报一般是对目标系统的分析,扫描探测,服务查点,扫描对方漏洞,查找对方系统IP等等。有时候渗透测试者也会使用上社会工程学。渗透测试者会尽力收集目标系统的配置与安全防御以及防火墙等等。 3:与团队交流阶段(本阶段适用于团队) 收集好目标系统的情报后,不要急于渗透目标系统,要与渗透团队进行头脑风暴。往往一个人的力量是不够的,团队集合起交流的力量是非常强大的。因为团队里面每一个人所拥有的特点和特长都会不一样。大家交流的话,可以取长补短。所以与团队交流这个阶段可以确定更快,更容易地制定入侵目标系统的方案。 4:漏洞分析阶段 漏洞分析阶段要综合以上所有的阶段收集回来的情报。特别是漏洞扫描结果,服务器的配置,防火墙的使用情况情报最为重要。渗透测试者可以根据以上的情报进行开发渗透代码。渗透测试者会找出目标系统的安全漏洞和挖掘系统拥有的未知漏洞进行渗透。漏洞分析阶段是进行攻击的重要阶段。 5:渗透攻击阶段 来到渗透攻击的阶段渗透测试者就要利用找到的目标系统漏洞进行渗透入侵,从而得到管理权限。渗透攻击的代码可以利用公开的渠道获取渗透代码,也可以由渗透测试者马上开发针对目标系统的渗透代码。如果是黑盒测试的话,渗透攻击的难度就会加多许多。黑盒测试要考虑到目标系统的检测机制,和要防止被目标系统的应急响应团队的追踪。 6:报告阶段 渗透测试的过程和挖掘出的安全漏洞最终都会报告给客户。渗透测试员一般都会提交渗透时发现目标系统的不足,安全漏洞,配置的问题,防火墙的问题等等。以及渗透测试员会帮助他们进行对安全漏洞的修复,和其他问题的建议与帮助等等。
-
什么是接口?接口:实现系统救据交互的称之为接口,所谓接口,就是服务端与前端交互的桥梁,由前端下发至服务端的内容,称之为请求;服务端将数据接收,运算,产生最终的结果返回至前端,称之为响应。接口的世界里,数据都是基于通道进行传递的,而通道就是所谓的网络协议。主流的网络协议:HTTP/HTTPS网络协议HTTPS: HTTP-S, SSL证书,用于增强通信协议的安全性。接口测试其实质就是模拟前端发送请求,提交至后端,进行测试,校验后端运算结果。之所以接口进行测试,前端界面的限制要求是只能够在前端界面操作的时候生效,如果绕过前端,则限制无效,基于接口的测试可以提升系统的安全性。基于Python实现接口测试:1,应用Requests库来实现接口的测试, Requests本身就是实现模拟请求来操作接口,安装方法,在cmd指令中,输入"pip install requests“2. Method:Get.Post3,接口在运行的时候,会返回不同的状态码,用于标识本次请求的基本情况200,表示本次请求成功301,表示本次请求重定向404,表示路径没找到500,表示系统异常4. post和get方法的区别是什么:1. get方法在进行数现传输时,参数在请求中明文显示,而post会隐藏在在请求体中2. get方法传递参数有长度限制,而post没有。3.get一般用于查询,可以有效获取数据,post一般用于请求资源。、在实际的开发过程中,接口测试可以进行缺陷定位,找出可能存在的bug。
-
————————————————appscan链接:https://pan.baidu.com/s/1gVDHQLZXHKol-D50xrDYOg密码:f487————————————————DirBuster链接:https://pan.baidu.com/s/1W_rV_n72B54uU3oSFKJnxw密码:7a6u————————————————webscarab链接:https://pan.baidu.com/s/1ZxtaqT1_S4JVDGWy04CXQQ密码:1jgp————————————————pangolin链接:https://pan.baidu.com/s/1G5K0Kc5htyO_oiXqkYbUVQ密码:k8p8————————————————
-
————————————————webservicesstudio链接:https://pan.baidu.com/s/1DYXTWasx-BsRvO95NCmI8w密码:w98j————————————————souitvices链接:https://pan.baidu.com/s/1YhdA-ykJakrTq1X9X7QVsg密码:0r0r————————————————burpsuit链接:https://pan.baidu.com/s/1bTN-xdWpPDUkqw9VT0D3MQ密码:kcvg————————————————soupui链接:https://pan.baidu.com/s/1Xc4ot5B5N1yk3IMlOLmROQ密码:tmjx————————————————
-
————————————————Jmeter链接:https://pan.baidu.com/s/198NgXAdF1hHzAN1bGrl3fw密码:ip55————————————————LR11链接:https://pan.baidu.com/s/1KdjHQreIAFVDjHQDI34HOA密码:k1qm————————————————LR11汉化包链接:https://pan.baidu.com/s/1C5TdU6KvxMPAIb7gPfZdgA密码:vawm————————————————LR12链接:https://pan.baidu.com/s/1YC6L1bMR2sN9CP0Cpn4Vbw密码:vaua————————————————
上滑加载中
推荐直播
-
算子工具性能优化新特性演示——MatMulLeakyRelu性能调优实操
2025/01/10 周五 15:30-17:30
MindStudio布道师
算子工具性能优化新特性演示——MatMulLeakyRelu性能调优实操
回顾中 -
用代码全方位驱动 OBS 存储
2025/01/14 周二 16:30-18:00
阿肯 华为云生态技术讲师
如何用代码驱动OBS?常用的数据管理,对象清理,多版本对象访问等应该如何编码?本期课程一一演示解答。
即将直播 -
GaussDB数据库开发
2025/01/15 周三 16:00-17:30
Steven 华为云学堂技术讲师
本期直播将带你了解GaussDB数据库开发相关知识,并通过实验指导大家利用java基于JDBC的方式来完成GaussD数据库基础操作。
去报名
热门标签