关于测试的一些问题

如何理解测试

测试是软件开发周期中至关重要的一环,它确保了软件的质量、稳定性和用户满意度。在我看来,测试不仅仅是寻找和报告bug的过程,更是一种预防性的活动,通过设计并执行测试用例来验证软件是否按照预期工作,并发现潜在的问题。测试工作涵盖了多个方面,包括功能测试、性能测试、安全测试、兼容性测试等,旨在从多个维度确保软件的全面质量。

测试人员需要具备扎实的测试理论知识、良好的逻辑思维能力和细致入微的观察力。同时,他们还需要与开发团队、产品团队等紧密合作,确保测试工作的有效性和高效性。通过测试,我们可以帮助团队及时发现并修复问题,提升软件的整体质量,从而为用户带来更好的体验。

为什么选择测试不选开发

我选择测试而不是开发,主要是基于以下几个方面的考虑:

  1. 兴趣与热情:我对软件测试有着浓厚的兴趣,喜欢通过分析和解决问题来挑战自己。测试工作让我有机会深入了解软件的内部机制,同时又能从用户的角度出发,思考如何提升软件的质量。这种双重视角让我对测试工作充满了热情。

  2. 技能匹配:我发现自己在逻辑思维、问题分析和细致观察方面有着较强的能力,这些能力在测试工作中尤为重要。同时,我也具备良好的沟通能力和团队合作精神,能够与开发团队和产品团队紧密合作,共同推动项目的进展。

  3. 职业发展:随着软件行业的快速发展,测试领域也在不断演进。从传统的手工测试到自动化测试、性能测试、安全测试等,测试工作涉及的知识和技能越来越广泛。我相信在这个领域有着广阔的职业发展空间,可以通过不断学习和实践来提升自己的专业能力。

  4. 工作满足感:测试工作让我有机会直接参与到产品的改进和优化中,看到自己的努力能够为用户带来更好的体验,这种成就感是无法用言语来表达的。同时,测试工作也让我更加关注细节和用户体验,这种思维方式对我的个人成长也有着积极的影响。

开发质量太差但是测试这边ddl只有两天你应该如何处理?

  1. 理解问题并确认情况
    • 首先,我会确认问题的具体细节,包括“开发质量太差”的具体表现(是功能缺陷多、性能问题还是代码可读性差等),以及“测试DDL只有两天”的紧迫性。
    • 我会与项目经理、开发团队和测试团队进行紧急会议,确保所有人对问题的严重性和紧迫性有共同的认识。
  2. 评估影响与风险
    • 分析当前开发质量对测试进度、项目交付时间和最终产品质量可能产生的影响。
    • 评估在有限的时间内,哪些问题是必须解决的,哪些可以延后处理或采取临时措施。
  3. 制定应对策略
    • 优先级排序:与开发团队紧密合作,根据问题的严重性和对项目的影响程度,对问题进行优先级排序。
    • 快速修复:集中力量优先解决高优先级问题,确保这些问题在测试开始前得到修复。
    • 自动化测试:如果可能,增加自动化测试来加速测试过程,特别是针对已修复的问题进行回归测试。
    • 临时解决方案:对于无法在DDL前完全解决的问题,考虑提供临时解决方案或绕过方案,以减轻对项目进度的影响。
    • 加强沟通:与测试团队保持密切沟通,确保他们了解当前的修复进度和可能的风险,以便他们调整测试计划和策略。
  4. 执行与监控
    • 分配任务给开发团队,并设定明确的完成时间。
    • 监控修复进度,确保按计划进行。
    • 定期进行进度汇报,确保所有相关方都了解当前状态。
  5. 总结与预防
    • 在项目结束后,组织一次复盘会议,分析导致开发质量差的原因,并制定相应的改进措施。
    • 加强开发过程中的质量控制,如代码审查、单元测试等,以减少未来类似问题的发生。
    • 与项目团队共同制定更合理的项目计划和时间表,以应对未来可能出现的类似挑战。
  6. 展示积极态度:在整个过程中,保持积极、主动的态度,展现出对问题解决的决心和对项目成功的责任感。

接口测试和功能测试的区别

目的

接口测试的目的是评估两个系统间的互操作性,以确保这两个系统之间能够正常地传递信息。而功能测试的目的则是评估软件系统是否能够按照预期正常运行。

测试范围

接口测试仅仅关注两个系统间的接口,而功能测试则关注软件系统的整体功能。因此,接口测试的测试范围更狭窄,而功能测试的测试范围更广泛。

测试方法

接口测试通常通过模拟实际数据交换来评估两个系统间的互操作性。功能测试则通常通过手动执行测试用例或使用自动化测试工具来评估软件系统的功能。

重要性

接口测试对于保证两个系统之间的数据交换正确性至关重要,因为如果两个系统间的接口存在问题,则可能会导致数据丢失或错误。而功能测试则对于评估软件系统的整体性能至关重要,因为如果软件系统不能按照预期正常运行,则可能会对用户造成很大的困扰。

举个例子

举个例子,假设有一个电商网站,该网站的主要功能是向客户提供在线购物服务。那在进行测试之前,需要先确定它的接口测试和功能测试的范围。

对于接口测试

需要确保网站与付款系统、物流系统和库存系统的接口正常工作。例如,当客户下单时,我们需要确保付款系统正确地接收到付款信息,物流系统正确地接收到物流信息,库存系统正确地接收到库存信息。

对于功能测试

需要评估网站的主要功能,例如:客户能否正确地查询商品信息、下单、付款、查询物流信息等。如果客户在下单时遇到了问题,例如系统无法识别付款信息,则可以认为网站的功能存在问题。

测试流程是什么

测试流程是先进行需求分析,需求评审,然后开发人员制定开发计划,测试计划制定测试计划,编写测试用例,用例评审,提交代码,开发人员对于提测的功能进行测式,最后测试通过。

软件测试的作用?

  1. 验证功能正确性:软件测试帮助确认软件的功能是否按照规格要求正常运行,包括功能是否完整、功能是否正确实现等。
  2. 发现缺陷和问题:软件测试有助于识别和报告软件中的缺陷、错误和问题,使开发团队能够及早修复这些问题,提高软件质量。
  3. 提高可靠性:通过测试,可以提高软件的可靠性,减少崩溃和故障的可能性,确保软件在各种情况下都能稳定运行。
  4. 增强安全性:软件测试可以揭示潜在的安全漏洞和漏洞,帮助确保软件在面对各种安全威胁时能够有效保护用户的数据和系统。
  5. 优化性能:性能测试可以帮助评估软件的性能,包括响应时间、吞吐量和资源利用率,从而优化软件的性能。
  6. 提高用户满意度:通过确保软件质量,软件测试有助于提高用户的满意度,因为用户将能够获得一个稳定、可靠、功能完备的产品。

如果网页是动态的,元素如何定位?

对于动态网页元素的定位,主要依赖于自动化测试工具和框架,如Selenium、Puppeteer等。这些工具提供了一系列方法来定位和操作网页元素。对于动态元素,以下是一些有效的定位策略:

  1. 等待元素出现
    • 使用显式等待(Explicit Wait),直到元素出现、可见或满足某个条件。
    • 示例(Selenium):WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "myDynamicElement")))
  2. 动态ID或属性
    • 如果元素的ID或属性是动态生成的,尝试找到这些ID或属性的模式,并使用正则表达式或字符串操作来构造定位器。
  3. 使用相对定位
    • 定位到元素附近的静态元素,然后使用相对路径(如XPath的轴定位)来找到动态元素。
  4. 使用JavaScript执行
    • 如果其他方法都无效,可以使用JavaScript直接获取或操作元素。
    • 示例(Selenium):element = driver.execute_script("return document.querySelector('someSelector').someProperty")
  5. 检查网络请求
    • 使用浏览器的开发者工具(如Chrome DevTools)来监控网络请求,找到动态加载元素的API,并直接请求这些API来获取数据。
  6. 使用CSS选择器
    • 对于具有独特CSS类的动态元素,使用CSS选择器进行定位。
  7. 使用XPath
    • XPath提供了强大的元素定位能力,特别是当元素具有复杂的结构或属性时。
  8. 持续监控DOM变化
    • 使用MutationObserver API来监听DOM的变化,并在元素出现时进行操作。
  9. 等待Ajax请求完成
    • 如果元素是通过Ajax请求加载的,等待Ajax请求完成后再进行元素定位和操作。
  10. 使用自动化测试框架的特定功能
    • 不同的自动化测试框架可能提供了特定的功能或方法来处理动态元素。

对unittest的理解

unittest是Python语言自带的单元测试框架,它为开发者提供了一套完整的测试工具和方法,旨在帮助开发者在开发过程中快速发现和修复代码中的问题,提高代码的质量和稳定性。

🍊test case:就是我们的测试用例,unittest中提供了一个基本类TestCase,可以用来创建新的测试用例,一个TestCase的实例就是一个测试用例;unittest中测试用例方法都是以test开头的,且执行顺序会按照方法名的ASCII值排序。

会按照方法名的ASCII值从小到大进行排序。具体来说,数字与字母的顺序为:0~9,A~Z,a~z。这意味着,如果测试方法名以数字开头,则数字较小的会先执行;如果以字母开头,则大写字母先于小写字母执行,而在相同类型的字符中(全是数字、全是大写字母或全是小写字母),也是按照字符在ASCII表中的顺序(即从小到大的顺序)来执行。

​ 🍅 test fixure:测试夹具,用于测试用例环境的搭建和销毁。即用例测试前准备环境的搭建(SetUp前置条件),测试后环境的还原(TearDown后置条件),比如测试前需要登录获取token等就是测试用例需要的环境,运行完后执行下一个用例前需要还原环境,以免影响下一条用例的测试结果。

​ 🍋 test suite:测试套件,用来把需要一起执行的测试用例集中放到一块执行,相当于一个篮子。我们可以使用TestLoader来加载测试用例到测试套件中。

​ 🍇 test runner:用来执行测试用例的,并返回测试用例的执行结果。它还可以用图形或者文本接口,把返回的测试结果更形象的展现出来,如:HTMLTestRunner。

unittest测试框架详解_unittest框架-CSDN博客


 

写一个微信钱包页面的测试用例

微信钱包页面通常包含余额显示、交易记录、充值、提现、转账、收付款码、银行卡管理等功能。以下是一些基本的测试用例示例:

1. 余额显示功能

  • 测试用例1.1:正常显示余额
    • 前置条件:用户已登录微信并打开微信钱包页面。
    • 操作步骤:查看钱包页面余额部分。
    • 预期结果:余额应正确显示,格式清晰(如:¥100.00)。
  • 测试用例1.2:余额为零时显示
    • 前置条件:用户钱包余额为零。
    • 操作步骤:查看钱包页面余额部分。
    • 预期结果:应显示“余额:¥0.00”或类似提示。
  • 测试用例1.3:余额显示异常处理
    • 前置条件:模拟余额显示数据异常(如后端返回错误数据)。
    • 操作步骤:尝试查看余额。
    • 预期结果:应显示错误提示,如“余额加载失败,请稍后再试”。

2. 交易记录功能

  • 测试用例2.1:正常查看交易记录
    • 前置条件:用户有交易记录。
    • 操作步骤:点击交易记录按钮,查看交易列表。
    • 预期结果:应列出所有交易记录,包括时间、类型(收入/支出)、金额、交易对象等。
  • 测试用例2.2:无交易记录时显示
    • 前置条件:用户无交易记录。
    • 操作步骤:点击交易记录按钮。
    • 预期结果:应显示“暂无交易记录”或类似提示。
  • 测试用例2.3:筛选功能测试
    • 前置条件:用户有多条交易记录。
    • 操作步骤:使用筛选功能(如时间筛选、类型筛选)查看交易记录。
    • 预期结果:应仅显示符合筛选条件的交易记录。

3. 充值功能

  • 测试用例3.1:正常充值流程
    • 前置条件:用户已绑定支付方式。
    • 操作步骤:选择充值金额,确认支付方式,完成支付。
    • 预期结果:余额应相应增加,并显示充值成功提示。
  • 测试用例3.2:充值失败处理
    • 前置条件:模拟支付失败(如余额不足、网络问题等)。
    • 操作步骤:尝试充值。
    • 预期结果:应显示充值失败提示,并给出失败原因。

4. 提现功能

  • 测试用例4.1:正常提现流程
    • 前置条件:用户余额充足,已绑定提现银行卡。
    • 操作步骤:选择提现金额,选择银行卡,确认提现。
    • 预期结果:提现申请成功,余额相应减少,并显示提现处理中提示。
  • 测试用例4.2:提现失败处理
    • 前置条件:模拟提现失败(如余额不足、银行卡信息错误等)。
    • 操作步骤:尝试提现。
    • 预期结果:应显示提现失败提示,并给出失败原因。

5. 转账功能

  • 测试用例5.1:正常转账流程
    • 前置条件:用户余额充足,输入正确的收款方信息。
    • 操作步骤:选择转账对象,输入转账金额,确认转账。
    • 预期结果:转账成功,余额相应减少,并显示转账成功提示。
  • 测试用例5.2:转账失败处理
    • 前置条件:模拟转账失败(如余额不足、收款方信息错误等)。
    • 操作步骤:尝试转账。
    • 预期结果:应显示转账失败提示,并给出失败原因。

6. 收付款码功能

  • 测试用例6.1:生成收款码
    • 操作步骤:点击生成收款码,查看生成的收款码。
    • 预期结果:应正确生成收款码,并显示收款金额(可选)。
  • 测试用例6.2:扫描付款码
    • 前置条件:有有效的付款码。
    • 操作步骤:点击扫描按钮,扫描付款码,输入付款金额,确认付款。
    • 预期结果:付款成功,余额相应减少,并显示付款成功提示。

  • 26
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值