国内python 做的网站,设计企业,东莞市建设工程质量监督网站,网站怎么静态化有人问#xff1a;自动化测试的成本高效果差#xff0c;那么自动化测试的意义在哪呢#xff1f;
我觉得这个问题带有很强的误导性#xff0c;是典型的逻辑陷阱之一。“自动化测试的成本高效果差”是真的吗#xff1f;当然不是。而且我始终相信#xff0c;回答问题的最…有人问自动化测试的成本高效果差那么自动化测试的意义在哪呢
我觉得这个问题带有很强的误导性是典型的逻辑陷阱之一。“自动化测试的成本高效果差”是真的吗当然不是。而且我始终相信回答问题的最好方式是把问题本身弄清楚。也就是问关于问题的问题。楼主也学可以进一步 说明下面几个问题有助于自己理解自己的问题更有助于问题得到准确的回答
请定义“自动化测试”的范畴。自动化测试简单来讲包括用例的撰写代码的实现环境的搭建用例的执行报表的生成结果的分析缺陷报告等等。每个项目自动化程度不一样测试人员对自动化的理解有偏差实际实行自动化的范畴差别很大请定义“成本“包括哪些请定义什么是“高”。高是相对的。比较对象可以是另外的项目或者项目组也可以是他人的期望请定义什么是”效果“请定义什么是”差“。差也是相对的可以是同手工测试比较也可以是同老板的期望比较
如果楼主仔细思考并且回答了以上的问题我有七成的把握楼主要么不想问这个问题要么想换个问题。
换一种问法 好吧为了避免灌水嫌疑我且以最大的善意揣摩楼主的意图。楼主是想问
如果有的项目的自动化测试我们发现成本高于预期效果不符合预期那么问题可能出在哪里怎么判断自动化测试是否有效
-----------------这里是正文开始-------------- 关于错误的预期 我一点都不奇怪有人会告诉我说
我都不知道我或者我的老板对自动化测试有什么预期没人跟我说过。 或者
自动化不就是不用手工测试了吗用例用代码实现都能自己跑测试人员就可以去干别的了可以少招几个不产生价值的测试攻城狮了。老板就是这样计划的。 这是两种非常典型的关于自动化测试的预期问题
根本就不清楚自动化测试的目标以及为达到目标所计划的投入对自动化测试通常是总监以上的老板开发人员或者手动测试人员抱有不切实际的幻想型期望认为自动化测试能够干很多活同时省很多钱
自动化测试的第一目标从来都不是节省测试的人力成本。成功的自动化测试作为软件测试的一种工具从业务最终效果来看应该是能够节省成本和提高产品质量的。但是把节省测试的人力成本作为自动化测试的直接目标是错误的而且是致命的。
每个人对自动化测试理解都不一样每个项目组做自动化的方式都不一样。我讲个故事是我认识之前一个印度自动化项目的真实例子。这个项目95%以上的测试场景都是比较复杂的UI测试Web Windows Application他们的自动化是这样做的
手工测试人员把测试用例录入到用例管理系统精确到每一步的描述和每一个数据自动化测试人员用代码javapython等实现自动化用例保存到SCM准备好测试环境打开Eclipse定位到要执行的用例的源代码Run As Junit 因为统一用JUnit做封装两眼直视显示器目不转睛如果有步骤执行不成功比如某个按钮点击不成功手动帮助点击继续一个用例执行完毕重复步骤5到9
你觉得这个自动化做的怎么样我当时的感觉是几乎要吐血了因为这个项目是我要接手的。更加吐血的还在后面这个部门的QA的VP对自动化测试的效果很不满意绝对的他的设想包括
自动化应该是一种ServiceAutomation As A Service)所有的测试人员和开发人员都应该可以自己很方便的去跑自动化自动化测试的运行结果应该是可以自动分析的占用很少的时间自动化测试的成功率应该是要很高的比如95%以上自动化应该是写一次运行很多次为什么你们花那么多时间还要去改自动化代码
这个就是一个典型的不懂自动化的团队期望脱离现实的老板。 关于什么是自动化
James Bach 曾经在一篇博文提到自动化测试这个名字是非常有误导性的。它让一般的人误以为就是测试完全被自动化了就像一个自动的咖啡机一样我只需要把杯子放在那里按一个button就够了。James说更加准确的叫法应该是“工具辅助的测试”。当然他还有另一层意思就是好的测试用例是没有办法100%被自动化的测试人员的经验逻辑判断和探索性的测试方法都不能被有效自动化。我非常同意这个观点。作为这个论断的补充和扩展自动化应该是审视软件研发活动的每一个环节去发现那些可以被工具化自动化的重复性活动然后去实现。广义的自动化应该包括但不限于以下环节
测试环境的搭建和管理测试环境的检查监控和报警测试代码的编译和测试构建测试代码的静态检查和报警测试用例的分发和执行测试结果的保存与管理测试报告的生成测试优先级的建议
自动化的成本与收益ROI
一个过于简化的公式可以这样写
自动化的收益 迭代次数 * 全手动执行成本 - 首次自动化成本 - 维护次数 * 维护成本或者如果假设迭代次数和维护次数近视相等这个在某些情况下可以成立比如一个比较新的产品
自动化的收益 迭代次数 * (全手动执行成本 - 维护成本) - 首次自动化成本解读
自动化的收益与迭代次数成正比自动化收益可能为负数即当自动化成本和维护成本比手动执行成本还高时很多时候自动化成本并不比手动成本高但是维护成本很高
为什么强调过于简化因为这里的自动化收益仅仅考虑时间和资源成本的节省。好的自动化带来的迭代周期的缩短是可以缩短项目周期在某些时候能变不能做为能做进而带来的机会收益是巨大的也是很难量化的。这个就要求决策者对软件工程和自动化有比较正确的直觉和理解。片面追求自动化的资源节省或者要求精确量化自动化的收益本人觉得都不可取。
推论1什么项目适合自动化
从ROI的简化公式可以看出下面几中情况比较适合自动化
回归测试为主的Support Engineering项目即需要长期做支持维护的产品。或者有过去版本需要长期做支持维护的产品。这种产品比如企业软件操作系统等一个版本在发布之后往往需要支持好多年做bug fix和patch。这个时候每次小版本的开发都会增加迭代次数并且每次产品变动都非常有限维护成本相对偏低自动化收益就非常好。这也是很多企业级软件或者硬件产品有专门自动化团队的原因。因为产品的支持维护开发的回归测试基本靠自动化接口比较稳定的产品同上手动测试特别费时费力甚至无法达到测试目的的项目。比如压力测试大数据或者大量重复数据测试必须有自动化工具的支持
推论2自动化的介入时间点
同样从ROI的简化公式推断出一个项目的初期可能不太适合自动化。因为项目初期用户界面和接口没有稳定自动化代码会被动的被要求频繁改变维护成本非常高。自动化收益不好。而反而手动测试能够快速发现问题反馈给开发人员。而到了项目后期和维护期自动化再介入为回归测试做准备可以最大化自动化收益。
推论3自动化的程度和自动化率
这里自动化的程度是指整个软件研发活动中引入自动化的程度。推论2中说有些项目早期可能不太适合高度自动化但是项目早期仍然可以选定某些环节进行自动化。比如稳定的公用接口软件的编译和部署环境的搭建等从一开始就比较稳定的部分。
自动化率同样也要看产品和项目的特性对于产品的UI部分如果会频繁改动可以做比较低的自动化。对于接口比较稳定的服务组件可以提高自动化率。 你有什么样的团队工具和基础设施
其实这个因素是做所有事情都必须考虑的。自动化测试本身就是软件开发。好的自动化测试框架架构设计很重要。这些会决定自动化的开发成本和维护成本。这些都要求很强的开发能力。如果你的团队只有很有限的开发能力那么怎么去做自动化是做最原始的录制回放还是数据驱动。复杂自动化也需要良好的基础设施支持。比如你有很好的DevOps的虚机管理系统就不用自己去开发省下的资源和人力也是很可观的。
工具是另外一块如果公司有实力支持商业测试软件和管理软件就可以降低编程要求当然这会带来一些其他问题。如果没有办法用商业工具只能考虑开源和自己开发这个对自动化测试开发的能力要求就高。总之必须选择和团队技能储备基础设施与工具匹配的自动化策略。 管理层的理解程度和支持
这个就不再展开。我见过很糟糕的情况一个带好几百人兼顾产品技术的VP越3到4级直接给测试团队提技术需求和建议。你说是做还是不做怎么做还有一个团队自动化测试人员从来没有写过Java或者其他OO语言的程序被要求从头设计自动化框架那就是一场灾难。还有一个团队管理层几次要求更换自动化工具相当于整体重写自动化脚本。
总结
以上应该是一个很粗浅的回答。自动化测试是一个很专门化的领域自动化测试又是对工程师的技术广度深度要求很高的工作。对于团队管理和决策者来讲请不要简单化和孤立看待自动测试。最重要的是确保听取真正理解产品团队和自动化测试的技术人员的判断
感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取