【rainbowzhou 面试36/101】综合提问--详细描述下,你在技术方面进行选择时,考虑到的点?

2023-09-15 08:27:37 浏览数 (1)

大家好,我是rainbowzhou。

今天和大家聊聊,身为测试lead,在技术方面选型时,需要考虑哪些方面,我会提供三种回答,希望能够对你有所帮助。

当时的回答:

我在技术方面进行选择时,主要考虑到以下几个点:(较宽泛,不太建议)

  • 技术的成熟度和稳定性:选择一些经过市场验证和用户认可的技术,避免使用一些尚未成熟或存在缺陷的技术。
  • 技术的适用性和兼容性:选择一些能够满足产品需求和用户场景的技术,避免使用一些与产品或用户不匹配或不兼容的技术。
  • 技术的可扩展性和可维护性:选择一些能够支持产品的快速迭代和规模扩张的技术,避免使用一些难以扩展或维护的技术。
  • 技术的成本和效益:选择一些能够在有限的资源和时间内实现最大化的价值和效果的技术,避免使用一些过于昂贵或低效的技术。

思考后的回答:

我在技术方面进行选择时,主要考虑到以下几个点:(结合具体的场景来说明)

  • 技术的成熟度和稳定性:选择一些经过市场验证和用户认可的技术,避免使用一些尚未成熟或存在缺陷的技术。例如,在选择自动化测试工具时,我优先考虑了一些业界比较流行和成熟的工具,如Selenium、Appium、JMeter等,而不是一些刚刚出现或还在测试阶段的工具,因为这样可以保证测试工具的可靠性和稳定性,减少测试中出现的问题和风险。
  • 技术的适用性和兼容性:选择一些能够满足产品需求和用户场景的技术,避免使用一些与产品或用户不匹配或不兼容的技术。例如,在选择云计算服务商时,我优先考虑了一些能够提供多种云计算产品和服务,以及支持多种平台、版本、语言等的服务商,如腾讯云、阿里云等,而不是一些只提供单一或有限的云计算产品和服务,或者只支持特定的平台、版本、语言等的服务商,因为这样可以保证产品的适用性和兼容性,满足不同的用户需求和场景。
  • 技术的可扩展性和可维护性:选择一些能够支持产品的快速迭代和规模扩张的技术,避免使用一些难以扩展或维护的技术。例如,在选择人工智能技术时,我优先考虑了一些能够提供灵活的模型训练、部署、更新等功能,以及支持多种数据源、格式、类型等的技术,如TensorFlow、PyTorch等,而不是一些只能使用固定的模型或数据,或者需要复杂的配置或操作的技术,因为这样可以保证人工智能技术的可扩展性和可维护性,适应产品的变化和发展。
  • 技术的成本和效益:选择一些能够在有限的资源和时间内实现最大化的价值和效果的技术,避免使用一些过于昂贵或低效的技术。例如,在选择数据分析技术时,我优先考虑了一些能够提供高效的数据处理、分析、展示等功能,以及支持多种数据挖掘、机器学习、可视化等技术,如Hadoop、Spark、Tableau等,而不是一些只能提供基本的数据处理或分析功能,或者需要大量的硬件或软件资源的技术,因为这样可以保证数据分析技术的成本效益比,实现数据价值的最大化。

如今的回答:

在回顾我当时及后来的回答后,我发现我还有以下几点可以补充:(结合实际,工具技术等实例化)

  • 测试目标:如果测试目标是验证功能正确性,那么我可以选择使用单元测试、集成测试、系统测试等功能测试技术。例如,如果我要测试一个在线购物网站的功能,那么我可以使用单元测试来检查每个模块或组件的功能,如商品展示、购物车、订单支付等。我可以使用TestNG、Pytest等单元测试框架来编写和运行单元测试用例,并使用JaCoCo、Coverage等代码覆盖率工具来检查代码覆盖率。我可以使用集成测试来检查不同模块或组件之间的交互和协作,如商品搜索、商品详情、商品评论等。我可以使用Selenium、Appium等自动化测试工具来模拟用户操作,并使用RestAssured、Postman等接口测试工具来验证接口返回结果。我可以使用系统测试来检查整个网站的功能,如用户注册、用户登录、用户信息修改等。我可以使用Cucumber、Robot Framework等行为驱动开发框架来编写和运行系统测试用例,并使用Allure、ExtentReports等测试报告工具来生成测试报告。
  • 项目需求:如果项目需求是快速交付高质量的软件产品,那么我可以选择使用持续集成、持续交付、自动化测试等敏捷测试技术。例如,如果我要开发一个在线教育平台的软件产品,那么我可以使用持续集成来实现代码的快速集成和构建,以便及时发现和修复错误。我可以使用Git、SVN等版本控制工具来管理代码,并使用Jenkins、Travis CI等持续集成工具来自动化执行代码检查、单元测试、代码覆盖率等任务。我可以使用持续交付来实现软件产品的快速部署和发布,以便及时向客户提供新功能和改进。我可以使用Docker、Kubernetes等容器化技术来打包和运行软件产品,并使用Ansible、Chef等配置管理工具来自动化部署和更新软件产品。我可以使用自动化测试来实现软件产品的快速验证和回归,以便保证软件产品的质量和稳定性。我可以使用Selenium Grid、BrowserStack等分布式测试平台来并行执行自动化测试。
  • 资源条件:如果资源条件是有限的时间和预算,那么我可以选择使用云端测试、开源工具、模拟数据等高效和经济的测试技术。例如,如果我要测试一个社交媒体应用的性能,那么我可以使用云端测试来利用云计算资源,模拟大量的用户和请求,并获取实时的性能数据和分析报告。我可以使用阿里云PTS、腾讯云压测等云端性能测试平台来创建和执行性能测试,并使用阿里云ARMS、腾讯云APM等性能监控工具来监控和诊断性能问题。我可以使用开源工具来节省购买和维护商业工具的成本,并享受开源社区的支持和更新。例如:使用JMeter、Locust等开源性能测试工具来编写和运行性能测试用例,并使用Grafana、Kibana等开源数据可视化工具来展示和分析性能数据。使用模拟数据来减少获取和处理真实数据的时间和难度,并保护真实数据的安全和隐私。例如:使用Mockito、Moco等模拟工具来模拟后端服务的响应,并使用Faker、EasyMock等模拟工具来生成随机的测试数据。

以上,有任何想法都欢迎大家后台私信我,一起探讨交流。

0 人点赞