- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关闭。这个问题是opinion-based .它目前不接受答案。
想改进这个问题?更新问题,以便 editing this post 提供事实和引用来回答它.
11 个月前关闭。
Improve this question
我在一个由 5 名程序员组成的小型开发团队工作,其中没有人有任何整体测试经验。我们开发的产品是一个复杂的 VMS,基本上由一个(独立的)视频服务器和一个用于查看实况和录制视频的客户端组成。由于视频处理需要大量硬件能力,因此该软件通常部署在多台服务器上。
我们使用精简版的功能驱动开发。在过去的几个月中,实现了许多功能,几乎没有时间花在 QA 上。
我目前正在研究一种方法,让我们尽可能(时间)高效地测试我们的软件。我知道围绕测试构建的软件方法论,例如 TDD。但是,由于许多功能都是围绕分布式架构构建的,因此很难为各个功能编写单独的测试。鉴于许多功能需要一些无穷无尽的场景,因此可以将其部署以进行复制以便正确测试。
例如,最近我们开发了一种故障转移功能,其中一个或多个空闲服务器将监视其他服务器,并在发生故障时取代它。可能的情况包括远程位置或不同子网中的故障转移服务器,或者一次有多个故障服务器。
手动设置这些场景会花费大量宝贵的时间。尽管我知道在这种情况下总是需要手动初始化,但我似乎无法找到一种方法来自动化这些类型的测试(最好在实现功能之前定义它们)而无需投入同等或更大的资金实际创建自动化测试的时间。
有没有人在类似环境中有任何经验,或者可以告诉我更多关于适合这种环境的(自动化)测试方法或技术的信息?如果它以显着的方式增强测试,我们愿意覆盖我们当前的开发过程。
提前感谢您的任何意见。请原谅我的语法,因为英语不是我的第一语言:)
最佳答案
我通过考虑金字塔中的层来处理测试策略。
金字塔的第一层是你的单元测试。我将单元测试定义为执行类的单个方法的测试。系统中的每个类都应该有一套与之相关的测试。并且每个方法都应该在该套件中包含一组测试。这些测试可以而且应该存在于模拟环境中。
这是测试和质量策略的基础。如果你在这里有可靠的测试覆盖率,很多问题都会被扼杀在萌芽状态。这些是您将要创建的所有测试中最便宜和最简单的。您可以在这里获得巨大的 yield 。
金字塔的下一层是您的功能测试。我将功能测试定义为对模块中的类进行测试的测试。这是您测试各种类如何相互交互的地方。这些测试可以而且应该存在于模拟环境中。
下一层是您的集成测试。我将集成测试定义为执行模块之间交互的测试。这是您测试各种模块如何相互交互的地方。这些测试可以而且应该存在于模拟环境中。
下一层是我所说的行为或工作流测试。这些是像客户一样使用系统的测试。这些是构建和维护的最昂贵和最难的测试,但它们至关重要。他们确认该系统按照客户期望的方式运行。
金字塔的顶端是探索性测试。根据定义,这是一项手动事件。在这里,您有一个知道如何使用该系统的人来完成它的步伐并努力找出问题。这在一定程度上是一门艺术,需要特殊的个性。但这对您的整体成功非常宝贵。
我上面描述的只是你需要做的一部分。下一部分是设置持续集成/持续部署 (CI/CD) 管道。
每当代码提交到您的一个存储库时,我确实希望您有一个像这样大的项目被分解为单独的存储库,该组件应该进行静态分析(即 lint 它),构建,针对它执行测试,收集代码覆盖率数据。
定期构建系统的每个组件的行为将有助于解决问题。将其与针对它运行的单元/功能/集成测试相结合,您将发现很多问题。
构建组件后,应将其部署到测试或登台环境中。此过程必须是自动化的并且能够在无人值守的情况下运行。我强烈建议您考虑使用 Chef来自 Opscode对于这个过程。
一旦您将其部署到暂存或测试环境中,您就可以开始使用工作流和行为测试来实现它。
关于testing - 用小团队(和很少的时间)对大型项目进行手动与自动测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15100894/
$ flutter ios build --release 它显示多个可用的有效开发证书(您的选择将被保存): 但是它没有显示分发证书选择,不过我使用了--release标志,,, 我检查过我已经在本
我有一个 Jenkins Bitbucket 团队/项目工作。 在我的存储库中的 Jenkinsfile 中,我使用“git describe”来获取当前标签。 在我更新到最新的 Jenkins 版本
您会在新的 .NET 开发团队中实现哪些最佳实践和方法? 干杯 最佳答案 仅使用 Visual Studio 如果您需要数据库,请使用服务器(尽早减少 SQL 问题) 使用版本控制 关于c# - .N
我有 3 个表用户、团队、组。每个团队可以有多个组。每个组中都有一个或多个用户。用户可以属于多个组。您认为对所有用户使用组会更好吗(这样每个团队至少有一个名为所有用户的组)还是引入另一个表 team_
问题: 让我们考虑以下场景: 让T={t_1, t_2, ..., t_h}成为一组不同的游戏。每场比赛都是一对一的(它们是单人游戏)。 设n为players的个数,每个游戏都有一个已知的性能度量这个
我们有 5 个人在从事同一个项目,并且在 Bitbucket 中有多个 GIT 存储库。每个用户都有自己的 Bitbucket 帐户。我正在寻找拥有某种团队或组织功能的最佳实践方法,以便我们都可以在相
我们在实现 Team Foundation Build Server 时遇到了性能问题,而且我对如何加快速度没有任何想法。我们已经添加了一些 PropertyGroup 元素来提高几个步骤(SkipC
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 8年前关闭。 Improve this qu
我为我是所有者的团队 channel 设置了 Azure DevOps 连接器。它一直工作正常,但现在我需要调整一些设置,因为我不希望它宣布取消部署。因此,我打开连接器、已配置、AzureDevops
我们有一个团队机器人,可以在 MS 团队中发布消息。新对话的第一个事件总是一张自适应卡片,我们偶尔会用一张新卡片更新它。这一切正常,直到我用这个机器人组建了一个新团队。 我们正在尝试使用 Update
What do I need to install to activate this button Share Project in Eclipse?I need to transfer the pr
我创建了一个解决方案,其中包含我的所有项目,包括 Dotfuscator 项目和设置项目。 某些 Dotfuscator 项目仅对某些程序集进行了模糊处理,而不会影响它们的任何引用。 从 Visual
如何观察Variable来自一组团队 ( Variable ),以便每次 Game出现( Variable 由于游戏数组被修改而改变),数组 Team是否应该进行相应更新,例如比赛两支球队的得分、胜利
我的问题是我所有的应用程序 ID 都相同。我认为它们应该是不同的以识别它们。即使我尝试创建新的配置文件,它也不给我更改 ID 或生成新配置文件的选项。我正在尝试为我的一个应用程序设置 ICloud,我
熬夜工作到上午 1030 点并完成作业后,我决定在格式化并提交作业之前小睡一会儿。不用说,午睡变成了 5 小时的 sleep 时间。 醒来后,我将代码格式化为 java 的 eclipse googl
我是 3 个注册 iOS 开发团队的成员: 我的个人 iOS 开发者帐户。 我的企业 iOS 开发者客户团队。 我客户的 iOS 开发者客户团队。 我现在想使用 iOS Provisioning Po
目标:MS Teams 在双显示器上的可访问性行为,显示器设置为不同的比例,例如 100% 和 125%,分辨率为 1920*1080。我使用的工具是 Accessibility Insight。 问
最近注意到在 MS CRM 2011 中无法从工作流步骤创建/更新业务部门或团队。 为什么要制作它,是否有任何解决方法? 最佳答案 遗憾的是这是设计使然。您需要创建自定义工作流事件来创建/更新业务部门
你们这里有些奇怪。 我们有一个相当复杂的解决方案(在asp.net,silverlight,WFC,Ria Services等中分布了111个项目)解决方案,该解决方案可以在我的开发盒中正确构建(20
我们的技术总监希望测试运行后,能够在 Microsoft 团队 channel 中更新当前 testng 报告中的测试结果。 我们目前正在使用 testng 报告来分析测试运行后的报告。 我们可以将
我是一名优秀的程序员,十分优秀!