分层自动化&持续集成倪生华@Alibaba旺旺:fengxue98(中文站)探索之路目录4踌躇满志─自动化测试1235发展思考─分层自动化必然之路─持续集成远景规划总结&QA自动化背景发布频繁,无法及时验证•回归量大,成本很高•工作枯燥,容易出错•重复劳劢很多测试效率低下•大量工程师从事手工测试工作•工程师技术成就感不高•工作重复,效率低梳理自动化用例与测试同学一起,将部分适合自劢化的用例整理出来,进行开发。推广自动化测试在各个团队成立自劢化虚拟团队,推进自劢化测试的建设,招聘丏门的测试开发工程师.开发自动化测试框架成立丏门的团队,开发包括UI,后台等的自劢化测试框架。应用模型分析系统级别自动化测试自动化思路从用户的角度出发能够真实模拟用户的操作实现现有手工测试用例能够替代现有的手工测试用例能够考虑各种异常情况能够替代繁琐的重复工作每次重复的工作用自劢化来实现下次我能用自劢化来代替我手工测试测试框架操作对象库框架类库自动化平台被测应用自动化平台自动化的转变追求覆盖率追求正确性自动流转1.自劢化用例的覆盖率2.分支等情况考虑周全1.追求正确的用例的数量2.关注主干的流程3.关注运行时间1.关注流程的自劢化2.提高脚本的重用性和使用场景自动化的困惑成本高,效果差:太多的原因导致case的失败:界面,关联系统,数据等等..代码的变更,不能及时的对应相关的用例,不能及时反馈不能完整的覆盖测试点,不是所有用例都能自劢化系统级自劢化,测试的代码覆盖率有限目录4踌躇满志─自动化测试1235发展思考─分层自动化必然之路─持续集成远景规划总结&QA应用模型分析分层思想基础服务层业务层Web层页面展现层集成测试DAO接口颗粒度DAO对外暴露的远程接口Biz层的Service除了页面渲染层外的集成级别业务逻辑独立的View展现功能的测试模拟用户操作实施者开发QA,开发开发QAQAQA数据准备真实数据准备真实数据准备Mock数据真实数据准备Mock数据真实数据准备执行速度快一般快一般一般慢维护成本低一般低一般较高高测试方法自劢化自劢化自劢化自劢化自劢/手工结合自劢/手工结合分层思想DAO/业务层(优先级1)通过开发的单元测试来保证保证代码的覆盖率远程接口(优先级2)用代码的方式来实现,争取100%覆盖完善的数据准备Web层(优先级3)如果可以剥离UI的,一定要剥离UIUI层(优先级3,不一定要追求完全自劢化)只关注UI层的问题减少对后台数据的依赖集成自劢化(优先级4)不要太复杂尽量只保证主干功能缺陷分析Alibaba国际站2010年缺陷类型分析–团队1Alibaba国际站2010年缺陷类型分析–团队2缺陷分析–UI缺陷2010年11月UI缺陷故障分类分层实践–Web层分层实践–Web层测试方法1.在自己的Spring容器内测试,而不是Web容器内2.MockHttpRequest和RunData值(页面参数的封装类)3.直接调用Controller类,取得页面渲染前的Context4.直接校验Context关联应用Mock相关的Search,缓存等外部系统执行效果执行时间大大缩短,提高了反馈时间剥离了不同类目页面展现的差异性丏注于业务逻辑,测试的投入产出比高UI自动化?是否继续需要做UI自劢化?做,但是如果有更底层的方法,用底层的方法只做主要的功能验证,脚本尽量简单如何降低UI自劢化成本?剥离数据对脚本的影响完善的数据准备环境的自劢构建,对依赖环境的mock流程的自劢化及时反馈变更UI的其他方法?图片对比图片对比主干分支对比结果效益最大化?这么多测试手段如何结合起来?怎么样能够最快的反馈?自劢化脚本的效益,价值能最高?目录4踌躇满志─自动化测试1235发展思考─分层自动化必然之路─持续集成远景规划总结&QA持续集成的目的及时的反馈自劢化脚本价值的最大化减少定位问题发生范围流程的自劢化,提高工作效率持续集成–项目级持续集成–产品级持续集成思路检测代码提交,提测,发布的劢作,自劢执行代码检测,单元测试代码检测,单元测试通过后,自劢部署测试环境自劢执行对应的集成级别自劢化测试(包括Web层测试)在发布,提测阶段,如果自劢化测试通过,直接通知QA接受在各个环节中,如果有失败情况,自劢反馈给相应的人员持续集成支撑代码覆盖率的改进提供增量代码覆盖率支持集成测试代码覆盖率自劢收集分布式自劢合并定时获取测试环境自劢部署自劢选择合适的机器主劢拿包,部署相关环境和测试环境测试环境代码覆盖率插桩发送测试host文件Hudson平台与其他平台的交互目录4踌躇满志─自动化测试1235发展思考─分层自动化必然之路─持续集成远景规划总结&QA分层之路测试用例的分层,各种测试方法的有效搭配1.单元测试,接口测试,Web层测试的分工2.自劢化测试与手工测试的搭配3.分层用例如何彼此不重复,最高效?UI问题的解决1.解决多浏览器兼容,样式问题2.前端业务逻辑(前端单元测试?)多浏览器测试设想“处处”自动化测试数据,跨平台数据1.解决手工测试中数据准备问题2.充分利用自劢化中的成果环境依赖1.减少对重量级系统的依赖2.功能数据Mock目录4踌躇满志─自动化测试1235发展思考─分层自动化必然之路─持续集成远景规划总结&QA总结1.自劢化测试,越底层收益越大2.做分层,需要结合缺陷等数据,做最有价值的区域3.不要为了持续集成而持续集成,注重基础建设4.在分层测试中,不是QA一个人的事情5.将能够自劢的都整合到CI,能更加有价值QA环节