常用的监控工具有哪些?
常用的监控工具有以下几种:
- Zabbix:是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级开源解决方案,能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
- Nagios:是一个企业级的监控系统,可监控服务的运行状态和网络信息等,并能监视所指定的本地或远程主机参数以及服务,同时提供异常告警通知功能等。
- Cacti:是一套基于PHP、MySQL、SNMP和RRDtool开发的网络流量监测图形分析工具。它通过snmpget来获取数据,使用RRDtool绘图,但使用者无须了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、主机设备以及任何一张图,还可以与LDAP结合进行用户认证,同时也能自定义模板,在历史数据的展示监控方面,其功能相当不错。
- Grafana:是一款开源的度量分析和可视化套件,可以用于查看、探索和呈现大量不同类型的数据。
- Prometheus:是一款开源的监控和警报工具包,用于监视和收集应用程序和基础设施的性能数据。
- OpenFalcon:是一款开源的监控系统,主要用于监控大规模分布式系统的性能和稳定性。
- SkyWalking:是一款开源的分布式追踪系统,主要用于监控和分析微服务架构下的应用程序性能。
以上就是常用的监控工具,它们各有特点和优势,可以根据具体需求选择合适的工具进行监控。
描述常用的接口测试方法,接口测试质量评估标准是什么?
常用的接口测试方法主要有以下几种:
- 功能测试法:关注接口是否按照预期的功能需求工作,通过给定的输入数据验证接口的输出结果是否符合预期。这种方法通常使用黑盒测试技术,只关注功能是否正确。
- 性能测试法:评估接口在不同负载情况下的性能和响应能力,通过模拟多种负载条件(如并发用户数、数据量等)来测试接口在高负载情况下是否能够正常工作。旨在发现接口在高负载情况下的性能瓶颈和性能问题,并提供相应的优化建议。
接口测试质量评估标准主要包括以下几点:
- 业务功能覆盖是否完整:评估测试用例是否覆盖了所有的业务功能,没有遗漏任何必要的功能。
- 业务规则覆盖是否完整:评估测试用例是否覆盖了所有的业务规则,包括正常的业务流程和异常情况的处理。
- 参数验证是否达到要求(边界、业务规则):评估测试用例是否对接口的参数进行了足够的验证,包括参数的边界值、有效值、无效值等。
- 接口异常场景覆盖是否完整:评估测试用例是否覆盖了接口可能出现的异常情况,如空指针异常、数据格式异常等。
- 接口覆盖率是否达到要求:评估测试用例是否覆盖了所有可能的接口调用路径,包括正常路径和异常路径。
- 代码覆盖率是否达到要求:评估测试用例是否覆盖了所有代码分支和逻辑,确保代码的每个部分都得到了测试。
- 性能指标是否满足要求:评估接口在不同负载下的响应时间和吞吐量等性能指标是否达到预期要求。
- 安全指标是否满足要求:评估接口在安全性方面的表现,如身份验证、授权、加密等是否符合预期要求。
通过以上标准的评估,可以全面地评估接口测试的质量,确保接口能够满足业务需求和性能要求,并且具有一定的安全性和稳定性。
简述国内外最常用的BUG管理工具 ?
国内外最常用的BUG管理工具包括禅道、Jira、Bugfree、Bugnet、Mantis等。这些工具都提供了完整的缺陷跟踪流程,包括缺陷的提交、确认、处理、测试、关闭等各个环节的管理。其中,禅道是一款开源的BUG管理系统,简单易用,适合中小型团队使用;Jira则是一款功能强大的商业BUG管理工具,支持定制化开发,适合大型企业使用。Bugfree和Bugnet则更适合小规模的团队使用,而Mantis则提供了一个简单易用的界面和强大的缺陷跟踪功能,适合需要快速迭代开发的产品团队使用。
此外,还有一些其他常用的BUG管理工具,如Bugzilla、TestLink、Quality Center等。这些工具都具有不同的特点和优势,可以根据具体的项目需求选择适合的工具进行缺陷跟踪管理。
无论选择哪种工具,关键是保证工具的易用性、功能性和稳定性,能够满足团队的实际需求,并提高开发效率和质量。
国内外主流的10款Bug跟踪管理软件举例 ?
以下是国内外主流的10款Bug跟踪管理软件举例:
- PingCode:这是一款研发全生命周期管理工具,不仅具备Bug跟踪功能,还提供测试管理、缺陷管理等功能。
- Jira:这是一款功能强大的商业BUG管理工具,支持定制化开发,适合大型企业使用。
- Bugfree:这是一款适合小规模团队的BUG管理系统,提供了完整的缺陷跟踪流程。
- TestLink:这是一款开源的测试用例管理工具,支持测试计划的制定和执行,能够生成测试报告。
- Bugzilla:这是一款开源的BUG跟踪工具,提供了完整的缺陷跟踪流程,包括缺陷的提交、确认、处理、测试、关闭等各个环节的管理。
- Quality Center:这是一款功能强大的质量保证工具,支持测试管理、缺陷跟踪、性能测试等功能。
- FogBugz:这是一款简单的BUG跟踪系统,提供了Wiki项目管理、共享式计划表、问题追踪等功能。
- BugHerd:这是一款特别适用于客户反馈和问题解决的BUG跟踪工具,用户可以通过简单的指向和点击报告问题。
- Boto:这是一款易用性很高的Bug管理软件,提供直观的用户界面和工作流。
- eTraxis:这是一款基于网页的免费的Bug跟踪系统,用户可以轻松管理多个开发环境的多个应用。
这些软件各有特点和优势,可以根据具体需求选择适合的工具进行Bug跟踪管理。
TestDirector 有些什么功能,如何对软件测试过程进行管理?
TestDirector是用于管理软件测试过程的工具,具有以下功能:
- 需求管理:TestDirector能够管理软件的需求,包括需求定义、需求变更和需求跟踪等。通过TestDirector,测试人员可以了解每个需求的状态和测试情况,从而确保测试与需求的一致性。
- 测试计划:TestDirector能够帮助测试团队制定详细的测试计划,包括测试目标、资源、时间安排和测试方法等。通过使用TestDirector,测试团队可以更加有效地执行测试工作。
- 测试用例管理:TestDirector提供了测试用例管理功能,包括用例的创建、修改、删除和查询等操作。测试人员可以通过TestDirector管理大量的测试用例,并保证测试用例的覆盖率。
- 缺陷跟踪:TestDirector能够跟踪和管理软件中发现的缺陷,包括缺陷的报告、确认、修复和验证等操作。通过TestDirector,测试人员可以追踪缺陷的状态,确保缺陷得到及时修复。
- 自动化测试:TestDirector支持自动化测试,可以集成多种自动化测试工具,如Selenium、QTP等。通过自动化测试,测试人员可以快速执行重复性测试任务,提高测试效率。
- 性能测试:TestDirector提供了性能测试功能,可以对软件的性能进行测试和评估。通过性能测试,测试人员可以发现软件中的性能瓶颈,确保软件在生产环境中能够稳定运行。
- 报告生成:TestDirector能够生成各种测试报告,包括测试总结报告、缺陷报告和性能测试报告等。通过报告生成,测试人员可以方便地向上级汇报测试结果。
如何使用TestDirector进行软件测试过程管理:
- 制定测试计划:根据软件的需求和项目要求,使用TestDirector制定详细的测试计划。确定测试目标、资源、时间安排和测试方法等。
- 创建测试用例:在TestDirector中创建测试用例,确保每个需求都有相应的测试用例进行覆盖。对每个测试用例进行详细描述和定义。
- 执行测试:根据测试计划执行测试,记录测试结果和缺陷信息。确保每个缺陷都有相应的记录和跟踪。
- 缺陷跟踪:对发现的缺陷进行跟踪和管理,确保缺陷得到及时修复和验证。对修复的缺陷进行回归测试,确保缺陷得到彻底解决。
- 生成报告:根据实际需要生成各种报告,包括测试总结报告、缺陷报告和性能测试报告等。确保报告的准确性和完整性。
总之,TestDirector是一个强大的软件测试过程管理工具,可以帮助企业更好地管理和执行软件测试工作。通过使用TestDirector,企业可以提高软件质量、降低开发成本并缩短开发周期。
简述 LoadRunner 分哪三部分?
LoadRunner是一个性能和负载测试工具,主要用于模拟大量用户访问应用程序或系统的场景,以测试其性能和稳定性。LoadRunner由三个主要部分组成:
- Virtual User Generator(虚拟用户生成器):这个组件用于创建虚拟用户(也称为VU或Vuser)。用户可以编写脚本,模拟实际用户与应用程序的交互,如点击、输入数据、提交表单等。通过录制和编辑脚本,可以创建出各种用户场景,并指定虚拟用户的数量、访问频率等参数。
- Controller(控制器):Controller是LoadRunner的核心组件,用于管理和控制测试场景。用户可以使用Controller来设置并发用户数量、迭代次数、负载生成器等参数,并启动测试场景。Controller会监控系统的性能指标,如响应时间、吞吐量、错误率等,并允许用户动态调整测试参数以模拟不同的负载情况。
- Analysis(分析器):Analysis是LoadRunner的数据分析和报告生成工具。在测试结束后,Analysis将收集并汇总各种性能数据,生成详细的图表和报告。这些报告可以帮助用户分析系统的性能瓶颈、负载能力和可扩展性等问题。
通过这三部分的协同工作,LoadRunner可以帮助用户模拟真实环境中的用户访问情况,对应用程序或系统进行全方位的性能测试,从而确保其在高负载下的稳定性和可靠性。
LoadRunner 进行测试的标准流程?
LoadRunner进行测试的标准流程如下:
- 制定测试计划:明确测试的目标、范围和资源安排,包括被测系统的软硬件环境、测试所需的脚本、负载生成器、监控指标等。
- 创建测试脚本:使用Virtual User Generator录制用户操作,生成测试脚本。根据需要,对脚本进行编辑和增强,确保其能够真实模拟用户行为。
- 创建测试场景:使用Controller设置测试场景的参数,如并发用户数量、负载生成器、场景持续时间等。同时,选择合适的场景类型,如手动场景或目标场景。
- 运行测试场景:启动测试场景,LoadRunner会自动管理虚拟用户并监控系统的性能数据。用户可以实时观察测试过程中的系统性能指标,如响应时间、吞吐量、错误率等。
- 监控测试过程:在测试过程中,需要密切关注系统的性能表现,及时调整负载参数或处理突发问题,确保测试的顺利进行。
- 分析测试结果:测试结束后,使用Analysis工具对收集到的性能数据进行处理和分析。生成各种图表和报告,帮助用户评估系统的性能表现,找出瓶颈和改进点。
- 优化和改进:基于测试结果的分析,对系统进行必要的优化和改进。这可能包括调整系统架构、改进代码逻辑、增加硬件资源等措施。
- 回归测试:在完成优化和改进后,进行回归测试以验证改进效果。确保系统性能得到提升并满足预期目标。
- 报告编写和总结:编写详细的测试报告,总结测试过程、发现的问题及解决方案、性能数据和图表等。将报告提交给相关人员以供评估和决策。
- 维护和更新测试环境:随着系统的更新和变化,需要定期维护和更新测试环境,确保其与生产环境的一致性。同时,对测试工具和流程进行更新和优化,以适应新的测试需求和技术发展。
以上是LoadRunner进行测试的标准流程,供您参考。具体的流程可能会根据项目的实际情况进行调整和优化。
Adb命令用过哪些?列出所有应用的包?
ADB(Android Debug Bridge)是一个强大的命令行工具,用于与Android设备进行通信。以下是ADB的一些常用命令:
adb shell
:启动一个命令行会话,允许您在连接的Android设备上运行命令。adb devices
:列出已连接的Android设备。adb install
:在设备上安装应用程序。adb uninstall
:从设备上卸载应用程序。adb pull
:从设备上拉取文件。adb push
:向设备上推送文件。adb logcat
:查看设备的日志输出。adb shell dumpsys
:获取设备的系统服务状态。adb shell input keyevent
:模拟按键事件。adb shell input tap
:模拟屏幕点击。
要列出所有应用的包名,您可以使用以下命令:
adb shell pm list packages
这将显示已安装的应用程序的包名列表。如果您只想查看系统应用,可以使用以下命令:
adb shell pm list packages -s
如果您想查看第三方应用,可以使用以下命令:
adb shell pm list packages -3
这些命令将帮助您列出连接的Android设备上所有应用的包名。请注意,您需要确保ADB工具已正确安装并配置在您的计算机上,并且您的Android设备已启用USB调试模式。
举列说明常用的测试工具?
以下是一些常用的测试工具,包括测试管理工具、接口测试工具、UI测试工具、性能测试工具等:
- 测试管理工具:禅道、TestRail、TestManager、TrackRecord、Bugzilla、Jira等。
- 接口测试工具:JMeter、Postman等。
- UI测试工具:Appium、Selenium等。
- 性能测试工具:LoadRunner、JMeter等。
这些工具各具特点,根据具体需求可以选择适合的工具进行测试。
TestDirector有些什么功能,如何对软件测试过程进行管理?
TestDirector是一款强大的测试管理工具,具备以下功能:
- 需求管理:TestDirector简化了需求管理过程,能够验证应用软件的每一个特性或功能是否正常。
- 测试计划:TestDirector允许用户基于已定义的需求生成测试计划,并确定每个功能点的测试方法。
- 缺陷跟踪:TestDirector提供缺陷跟踪功能,帮助用户记录、查看和跟踪缺陷,并确定哪些缺陷需要修复。
- 报告生成:TestDirector可以生成各种测试报告,包括测试总结报告、缺陷报告和性能测试报告等。
如何使用TestDirector进行软件测试过程管理:
- 需求分析:使用TestDirector进行需求管理,将需求与测试用例、测试结果和报告的错误联系起来,确保能达到最高的测试覆盖率。
- 制定测试计划:基于已定义的需求创建相应的测试计划,包括定义测试目标和策略、分解应用程序、建立测试计划树等。
- 缺陷跟踪:使用TestDirector的缺陷跟踪功能,报告、查看和跟踪缺陷,确保每个缺陷都得到及时修复。
- 回归测试:根据缺陷修复情况,进行回归测试以确保修复的缺陷没有影响到其他功能。
- 报告生成:使用TestDirector生成各种测试报告,包括测试总结报告、缺陷报告和性能测试报告等,以便向上级汇报测试结果。
总之,TestDirector是一个强大的软件测试过程管理工具,通过其需求管理、测试计划、缺陷跟踪和报告生成等功能,可以帮助企业更好地管理和执行软件测试工作,提高软件质量、降低开发成本并缩短开发周期。
你如何调试 LoadRunner 脚本?
调试 LoadRunner 脚本是优化性能测试过程的重要部分。以下是一些调试 LoadRunner 脚本的方法:
- 单步执行:使用 "Step Over" 和 "Step Into" 选项逐步执行脚本,查看每个步骤的结果。这有助于识别脚本中的问题或异常。
- 日志记录:在脚本中添加日志记录语句,以便在执行过程中输出关键信息。这有助于诊断问题并了解脚本的执行情况。
- 断点和条件断点:在关键位置设置断点,使脚本在特定条件下停止执行。这有助于精确定位问题。
- 查看返回值和错误消息:检查 LoadRunner 返回的任何错误消息或警告,以获取有关脚本执行失败的更多信息。
- 参数化和数据驱动:使用参数化数据来测试不同的情况,以确定脚本在不同条件下的行为。
- 关联和事务:确保关联和事务被正确地设置和管理。它们是 LoadRunner 中重要的性能指标,可以帮助识别和解决性能问题。
- 分析器输出:使用 LoadRunner 的分析器来查看性能数据,如响应时间、吞吐量、错误率等。这有助于识别潜在的性能瓶颈。
- 版本控制:使用版本控制系统(如 Git)来管理脚本的更改。这有助于跟踪脚本的更改历史,并在出现问题时回滚到之前的版本。
- 使用外部工具:使用外部工具(如 Wireshark 或 Fiddler)来监视网络流量,以帮助识别和解决网络相关的问题。
- 交叉参考:查看 LoadRunner 的文档、教程和社区论坛,以获取更多关于调试脚本的信息和技巧。
总之,调试 LoadRunner 脚本需要耐心、细心和经验积累。通过使用上述方法,您可以有效地识别和解决脚本中的问题,提高性能测试的准确性和可靠性。
在性能测试工具中,使用线程和进程压测有什么区别,Loadrunner和Jmeter分别使用什么进行发压?
在性能测试工具中,线程和进程压测的区别如下:
- 并发量:线程是程序执行流的最小单元,是系统独立调度和分配CPU(独立运行)的基本单位。因此,使用线程进行压测,可以模拟大量的虚拟用户。进程是资源分配的基本单位,包括多个线程。每个进程都有独立的内存空间和系统资源。因此,使用进程进行压测,可以模拟更真实的系统环境,适用于资源密集型的场景。
- 系统资源占用:线程之间共享进程的内存空间和系统资源,因此线程的创建和切换开销较小。相比之下,进程之间是独立的,每个进程都有自己的内存空间和系统资源。因此,进程的创建和切换开销较大,对系统资源(如CPU、内存、磁盘I/O等)的占用更多。
- 适用场景:线程适用于模拟大量虚拟用户的场景,如Web应用、网络服务、数据库等。而进程适用于模拟资源密集型的场景,如CPU密集型、内存密集型等。
至于Loadrunner和Jmeter分别使用什么进行发压:
Loadrunner使用进程方式进行压测,通过驱动程序mmdrv来运行虚拟用户(Vuser)。每个Vuser都作为一个独立的进程运行,以模拟真实用户的访问行为。这种方式可以模拟高并发访问的情况,并且对系统资源的占用较高。
Jmeter则使用线程方式进行压测。JMeter模拟大量的虚拟用户是通过线程来实现的。这种方式可以模拟大量的并发用户访问,并且对系统资源的占用较小。
综上所述,选择使用线程或进程进行压测取决于具体的测试需求和场景。在实际应用中,需要根据实际情况选择合适的工具和方式来进行性能测试。
Jmeter 为什么要参数化?
在 JMeter 中,参数化主要是为了模拟真实用户在访问应用程序时输入不同的数据。通过参数化,可以将测试数据与脚本分离,使得每次迭代时可以使用不同的数据。这样不仅可以模拟真实用户的行为,还可以测试应用程序在不同输入情况下的性能表现。同时,参数化还可以帮助测试人员避免硬编码测试数据,提高测试用例的灵活性和可维护性。因此,在 JMeter 中进行性能测试时,通常需要进行参数化操作。
常用 HTTP 协议调试代理工具有什么?详细说明抓取HTTPS协议的设置过程?
常用的HTTP协议调试代理工具有Fiddler、Charles、Postman等。对于HTTPS协议的抓取设置,以Fiddler为例,步骤如下:
- 下载并安装Fiddler。在官网下载最新版本,然后正常傻瓜式安装即可。
- 下载并安装Fiddler证书生成器。在Fiddler的官方网站上下载并安装证书生成器。
- 打开Fiddler,点击工具栏中的“Tools”-“Options”,然后在“HTTPS”设置选项中勾选“选择项”。
- 点击“Actions”,然后选择第二项:“Export Root Certificate to Desktop”。此时,桌面上会出现证书“FiddlerRoot.cer”文件。点击“OK”,设置成功,关闭Fiddler。
- 在PC端,在浏览器中导入证书“FiddlerRoot.cer”。以谷歌浏览器为例,在浏览器地址栏输入“chrome://settings”,然后进入高级设置,点击“管理证书”。
- 在受信任的根证书颁发机构中,对证书进行导入。
- 重新打开Fiddler,就可以在电脑上进行HTTPS抓包了。
此外,使用Charles和Postman等工具进行HTTPS协议抓取的设置过程也各有不同,具体可以参考相应工具的使用说明文档。需要注意的是,在使用HTTPS协议抓取工具时,需要特别注意数据安全问题,避免敏感信息被截获或泄露。
主流浏览器内核是哪些?
主流浏览器内核主要包括以下几种:
- Trident内核:也称为IE内核,是微软开发的浏览器内核。常见的基于Trident内核的浏览器有Internet Explorer和Microsoft Edge。
- Gecko内核:由Mozilla基金会开发,Firefox浏览器使用的是Gecko内核。
- WebKit内核:WebKit内核由苹果公司开发,并被Safari和Chrome浏览器所使用。WebKit内核在性能和网页渲染方面表现优秀,因此许多现代浏览器都基于它进行开发。
- Blink内核:Blink是Chrome浏览器使用的新的渲染引擎,它是基于WebKit开发,但有很多改进和优化。
这些内核分别在不同的浏览器中被使用,它们在网页渲染、性能和功能方面都有所不同。因此,在选择浏览器时,需要根据实际需求和个人偏好来选择适合的浏览器。
由于内容太多,更多内容以链接形势给大家,点击进去就是答案了
如何进行浏览器兼容性测试?
简述常用的浏览器兼容性测试工具 ?
说明有哪些测试工程日常比较易用的工具( 测试管理 )?
Jmeter参数化有哪几种方法
如何用Jmeter做性能测试?
如何用Jmeter录制脚本?
Jmeter和SoapUI接口测试有什么区别?
Jmeter和Postman接口测试有什么区别?
JMeter是怎么实现接口之间关联的?
Jmeter 用户定义的变量和用户参数的区别?
解释什么是Jemter采样器(Samplers)和线程组(Thread group)?
解释什么是Jemter预置处理器元件?列出一些预处理器元件?
说明JMeter中的计时器是什么,计时器的类型是什么?
简述什么是JMeter中的断言?断言的类型有哪些?
解释如何在JMeter中执行尖峰测试(Spike testing)?
如何在JMeter中捕获身份验证窗口的脚本?
列出几个JMeter监听器?
JMeter中的CSV数据文件是什么?如何使用CSV数据文件?
JMeter中的远程测试是什么?如何进行远程测试?
JMeter中的分布式测试是什么?如何进行分布式测试?
JMeter中的HTTP代理服务器是什么?如何使用HTTP代理服务器录制测试脚本?
简述Wireshark的作用和工作模式 ?
Fiddler能做什么?具体工作原理
Fiddler如何实现弱网测试?
Fiddler如何设置抓取https请求?
LoadRunner支持哪些协议?
LoadRunner中使用了哪些常见组件?
开发Loadrunner-Vuser脚本的过程是什么?
将Loadrunner-Vuser作为进程和线程运行有什么区别?哪种运行Vuser更有利?
Loadrunner“Vuser-init”的意义是什么?
如何在LoadRunner中设置Vuser的数量?
解释什么是Loadrunner显示器?
LoadRunner中有哪些类型的检查点?
解释什么是Loadrunner-Rendezvous点?
您如何利用Loadrunner识别性能瓶颈?
LoadRunner中的事务和事务实例有什么区别?
Load Runner中的经过时间是多少?
Loadrunner - Overlay图和Correlate图有什么区别?
Loadrunner 中 lr_error_message和lr_debug _message有什么区别?
Loadrunner中解释什么是Rendezvous点?
Loadrunner 关联 ?
LoadRunner的所有组件有哪些 ?
如何调试LoadRunner脚本?
Loadrunner vuser_init和vuser_end操作包含哪些内容?
Loadrunner在面向目标的负载运行者场景中,所有类型的目标是什么?
简述什么是Load Runner测试过程?
Loadrunner如何加载负载转轮代理?
Loadrunner场景中的vuser是什么?
Loadrunner可以对运行时设置进行哪些更改?
LoadRunner中有多少种类型的图表?
Loadrunner将Vuser脚本作为线程运行有什么好处?
Loadrunner Overlay图和Correlate图有什么区别?
Monkey测试流程?
Monkey如何获取包名?
Monkey如何模拟手动操作?
Monkey杀死进程的方法 (force-stop 和clear) ?
如何重现Monkey中发现的错误?
Monkey如何控制事件流所占比?
Monkey 如何将测试报告记录在本地 ?
用Monkey做APP测试,怎么做的?如果有问题的话怎么定位?
解释什么是APP测试工具 adb ?
adb如何连接Android设备?
Selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?
如何提高Selenium脚本的执行速度?
列举什么项目适合做ui自动化测试?
UI自动化测试在什么阶段开始?
Selenium中有哪些验证点?
find_element()和find_elements()方法有什么区别
如何在 Chrome控制台中打开 paint flashing?
Chrome开发者工具中,常用的面板有哪几个?
简述什么是YSlow工具 ?
解释如何对IE浏览器进行网页调试?
如何用 Chrome模拟设备屏幕尺寸?
版权归原作者 编程大全 所有, 如有侵权,请联系我们删除。