10.18 浙商银行测试面经及正确答案

1. 什么是黑盒测试

黑盒测试是一种测试方法,其中测试人员只关注软件的输入和输出,而不考虑软件内部的实现细节。这种测试方法模拟了最终用户的角度,侧重于验证软件是否按照规格说明或者用户需求的期望工作。
以下是一些情况下,你可能需要使用黑盒测试:

  1. 对外部用户可见的功能测试:
    当你想要验证软件的外部行为,即用户所见到的功能,而不关心内部的代码逻辑时,使用黑盒测试是合适的。
  2. 接口测试:
    当你想要测试软件与外部系统的交互,例如API、Web服务、数据库接口等,而不需要了解其内部实现时,黑盒测试是非常适合的。
  3. 验收测试(Acceptance Testing):
    在软件交付给客户之前,客户或用户代表通常进行验收测试,以确保软件满足了他们的需求。这种情况下,黑盒测试可以用来验证软件是否符合用户需求,而不需要了解内部代码。
  4. 功能测试:
    当你关注软件的各个功能点,以及这些功能点的输入和输出时,使用黑盒测试是常见的。例如,验证登录功能、购物车功能等。
  5. GUI测试:
    当你需要测试图形用户界面(GUI)应用程序的用户交互和用户体验时,黑盒测试通常涉及了点击按钮、输入文本等动作,但不需要了解背后的代码。
  6. 性能和负载测试:
    在性能测试和负载测试中,通常关注的是系统的响应时间、资源利用率等指标,而不需要了解内部的代码实现。
  7. 安全性测试:
    在安全性测试中,黑盒测试可以用来模拟攻击者的行为,验证系统对各种攻击(如SQL注入、跨站脚本攻击等)的防御能力。
    总的来说,当你的关注点是软件的功能、用户界面、接口、性能、安全性等外部特性,而不需要深入了解软件内部的实现时,使用黑盒测试是非常合适的。这种方法使得测试人员可以独立于开发团队进行测试,从用户的角度出发,验证软件是否满足用户的期望。

2. 什么是灰盒测试

3. 什么时候要用到灰盒测试

灰盒测试(Grey Box Testing)是介于黑盒测试和白盒测试之间的一种测试方法。在灰盒测试中,测试人员具有部分系统内部结构和设计的知识,同时也了解系统的功能和需求。灰盒测试通常在以下情况下使用:

  1. 部分知识的情况下进行测试:
    当测试人员具有关于系统部分内部结构和设计的知识,但不知道全部细节时,使用灰盒测试。这使得测试人员可以更有针对性地设计测试用例,同时又能够从系统的外部验证系统的功能。
  2. 集成测试:
    在进行集成测试时,通常需要同时验证系统的功能和内部组件之间的交互。在这种情况下,测试人员可以使用灰盒测试方法,既考虑功能测试,又能够根据部分内部结构的知识设计测试用例。
  3. 安全性测试:
    在进行安全性测试时,了解系统的一些内部结构信息可以帮助测试人员设计更有针对性的安全测试用例,例如测试输入验证、权限控制等。
  4. 性能测试:
    在性能测试中,了解系统内部的一些关键组件和算法可以帮助测试人员更好地设计负载测试和性能分析,以验证系统在各种负载下的性能表现。
  5. 代码覆盖率评估:
    在进行代码覆盖率评估时,灰盒测试可以帮助测试人员选择测试用例,以便更好地覆盖系统内部的关键代码路径,从而评估代码的覆盖率。
  6. 深度测试:
    当需要更深入地了解系统的内部结构,但不需要全部的代码和实现细节时,使用灰盒测试。这种情况下,测试人员可以结合外部和部分内部的知识,设计更深入、全面的测试用例。
    总的来说,灰盒测试是一种相对灵活和综合性较强的测试方法。在测试过程中,既保持了系统的相对独立性,又能够更深入地挖掘系统的潜在问题,帮助团队更全面地了解系统的质量。

4. 给定一个数组用什么方法找出重复的元素

使用哈希集合(HashSet)是一种简单且高效的方法,可以帮助你找出数组中的重复元素。
如果数组中的元素是可以排序的,那么可以先将数组排序,然后遍历数组找出相邻重复的元素。
利用索引标记元素(适用于特定范围的元素)如果数组中的元素范围在一个已知的值域内,例如都是正整数,并且不超过数组的长度,可以使用数组本身作为哈希表,通过将元素标记为负数或者改变元素的值来表示元素是否出现过。

5. 用什么排序算法

快速排序是一种高效的排序算法,它的平均时间复杂度为 O(n log n)。在找出重复元素的问题中,可以使用快速排序对数组进行排序,然后遍历排序后的数组,找出相邻重复的元素。在Java中,可以使用Arrays.sort()方法来进行快速排序。

归并排序是另一种稳定且效率较高的排序算法,它的时间复杂度同样为 O(n log n)。在找出重复元素的问题中,可以使用归并排序将数组分成两部分,然后在合并的过程中找出相邻重复的元素。在Java中,可以使用Arrays.sort()方法的变体,传入自定义的Comparator来实现归并排序。

6. 给定一个网上转账的业务场景,需要对哪些方面进行设计,测试用例的设计,考虑哪些?

  1. 用户身份验证:
    场景: 确保用户在进行转账操作前进行了有效的身份验证。
    测试用例:
    验证登录页面是否正常显示。
    验证用户名和密码的验证机制。
    验证多次尝试使用错误的密码后账户是否被锁定。
    验证通过各种方式(用户名密码、指纹识别、验证码等)进行身份验证。
  2. 收款人信息输入:
    场景: 用户输入收款人的信息。
    测试用例:
    验证收款人账号是否能正确输入。
    验证收款人姓名是否正确显示。
    验证输入的收款金额是否符合规定(例如,是否超过账户余额)。
    验证收款人的银行信息(如果适用)是否能正确输入。
  3. 转账操作:
    场景: 用户执行转账操作。
    测试用例:
    验证转账金额是否正确,包括小数点后的位数。
    验证用户能否选择转账类型(即时转账、定时转账等)。
    验证用户是否能够添加备注信息。
    验证用户转账后账户余额是否正确更新。
  4. 交易安全性:
    场景: 测试转账过程中的安全性。
    测试用例:
    验证数据传输是否使用了加密协议(如SSL)。
    验证在转账过程中是否有合适的错误处理和错误消息显示。
    验证是否有限制用户每日/每月转账额度,以保障资金安全。
  5. 交易记录和通知:
    场景: 用户完成转账后,查看交易记录和通知。
    测试用例:
    验证转账后是否能在交易历史记录中看到相应的记录。
    验证用户是否能够收到成功转账的通知,可以是短信、邮件或者应用内消息。
  6. 异常情况处理:
    场景: 测试各种异常情况下系统的行为。
    测试用例:
    验证转账金额超过余额时的错误处理。
    验证输入无效账号时的错误提示信息。
    验证网络中断或系统崩溃时的恢复能力。
  7. 多平台兼容性:
    场景: 测试网上转账功能在不同的操作系统、浏览器和设备上的兼容性。
    测试用例:
    验证在不同浏览器(Chrome、Firefox、Safari等)中的兼容性。
    验证在不同操作系统(Windows、macOS、Linux等)中的兼容性。
    验证在不同设备(手机、平板、台式机等)上的兼容性。
    以上是进行网上转账测试时的一些常见测试场景和测试用例。根据具体的业务需求和系统特点,还可以进一步扩展和细化测试用例。在进行测试时,始终保持用户角度,确保用户在进行网上转账时能够顺利、安全地完成操作。

7. 关于项目,redis在哪里用的怎么用的,用来做什么了。

8. 项目中安全性测试做什么了,

  1. 身份验证和授权:
    测试用例:
    验证用户登录时的身份验证机制,包括密码复杂度、账户锁定机制等。
    验证用户在不同角色下的权限控制,确保用户只能访问他们被授权的资源。
  2. 数据保护:
    测试用例:
    验证数据传输过程中是否使用了加密协议(例如SSL)。
    验证数据存储时是否使用了加密算法,确保敏感数据在数据库中加密存储。
  3. 输入验证:
    测试用例:
    验证应用程序对用户输入的数据进行了正确的验证和过滤,防止SQL注入、跨站脚本(XSS)攻击等。
    验证应用程序是否能够正确处理特殊字符和边界条件。
  4. 会话管理:
    测试用例:
    验证会话标识符(Session ID)的安全性,确保它不能被轻易猜测或劫持。
    验证用户在注销或者超时时会话是否能够正确地终止。
  5. 错误处理和日志记录:
    测试用例:
    验证应用程序在发生错误时是否给出合适的错误信息,而不是敏感信息。
    验证应用程序的日志记录机制,确保不会记录敏感信息。
  6. 文件上传安全性:
    测试用例:
    验证文件上传功能是否限制了文件类型和大小。
    验证上传的文件是否被正确地隔离,防止恶意文件的上传。
  7. 跨站请求伪造(CSRF)防护:
    测试用例:
    验证应用程序是否对重要操作(例如修改密码、转账等)使用了CSRF令牌来防止CSRF攻击。
  8. 安全更新和补丁:
    测试用例:
    验证应用程序是否能够及时安装安全更新和补丁。
    验证在更新或者升级应用程序时,旧的安全漏洞是否被修复。
  9. 第三方组件的安全性:
    测试用例:
    验证应用程序所依赖的第三方组件是否有已知的安全漏洞。
    验证第三方组件的配置是否安全。
  10. 业务逻辑的安全性:
    测试用例:
    验证应用程序的业务逻辑是否允许未授权的用户执行敏感操作。
    验证应用程序是否对涉及用户隐私的操作进行了适当的验证和权限控制。
    以上是进行项目安全性测试时的一些常见测试方向和测试用例。测试过程应该是全面的,包括对系统的各个方面进行测试,以保证整体的安全性。同时,安全性测试也应该是一个持续的过程,及时地响应新的威胁和漏洞,确保系统始终能够保持安全。
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值