开发和测试
· 测试和开发具有同等重要的作用
从一开始,测试和开发就是相向而行的。测试是开发团队的一支独立的、重要的支柱力量。
· 测试要具备独立性
独立分析业务需求,独立配置测试环境,独立编写测试脚本,独立开发测试工具。没有独立性,就没有一切。
· 测试要有编程能力
测试独立性必然要求测试要有编程知识,要懂代码(能看代码,会写代码),代码是开发团队的沟通利器!
能看代码,就可以直接看开发人员写的代码逻辑,有点 Code Review 的意思了;
会写代码,测试自动化就不是问题。
持续交付是我们的方向
· 自动化测试
· 持续集成
· 自动化部署
自动化测试金字塔
Test Automation Pyramid(测试自动化金字塔)
· UI Tests
也称 GUI 测试,我们暂时不涉猎这部分的自动化测试。
· API Tests
这是重点。我们当下提供的都是 HTTP API,相对稳定,适合自动化测试。
· UNIT Tests
在 iOS 团队有实践基础,随着测试自动化进展,后端会自然接入进来。
据 Google软件测试之道 介绍,谷歌的经验比例是70/20/10,即:70% 的 Small Tests,20% 的 Medium Tests,10% 的 Large Tests(对应UNIT / INTEGRATION / SYSTEM | End-to-End)。
自动化测试
· 如同业务功能测试是测试的基本能力一样,自动化测试也正在成为测试的基本能力。
· 在深刻理解需求的基础上,自动化脚本测例要能体现如同文本测试用例的基本编制要求:“精炼表达、主次分明、渐进可用”;
测试分类
· 前端 App 功能以手工测试为主;
· 前端 App 性能以工具测试为主;
· 后端接口拟全部实现自动化测试;
· 后端性能暂时通过静态分析在设计时予以考虑。
App 功能以手工测试为主
App 功能测试以手工为基础,可以继续实施以测试用例为核心的策略。
前端重在交互和展现,所以功能逻辑和 UI 测试必不可少。
App 性能以工具测试为主
对于App,则要使用工具进行性能测试,性能在用户体验中是蛮重要的,而性能的改善需要开发长期的努力。
要不断发现、开发和学习使用各类工具,以帮助我们更有效率地完成任务。开发工具时鼓励使用 PHP 和 Python来实现。
服务端接口自动化测试
对于服务端提供的 HTTP 接口,建议使用 PHPUnit 技术实现自动化测试。
· 测试用例
接口测试用例的设计思路直接体现在测试类和方法前的描述即可,不再需要在禅道上体现。
· PHP 测试脚本
测试人员要学习 PHP 脚本语言,进行测试开发编程,逐步提高编程水平,在人员招聘上也要有意识地搜寻测试开发人才。
· 测试类和方法的设计开发是逐步精化的
每个方法实现一个测试用例,每个方法都可以随着开发代码的完善而逐步完善,和开发相向而行,要体现尽早测试理念。
· 测试套件(test suite)的编写要满足不同测试类型的需要
要能体现:smoke testing、sanity testing、regression testing等等。
· 鼓励就 PHPUnit 和开发人员进行深度沟通、互相学习
PHPUnit 不仅仅可以用来进行接口测试,其本意是基于代码的单元测试。开发人员应当使用 PHPUnit 对重要的类和组件进行充分测试,切实提升拟交付测试的API接口的质量。
自动化测试的ROI
敏捷开发条件下,迭代模式使得代码量逐步累加,越靠后的迭代我们所面临的整合测试压力、测试任务就越大。
敏捷测试需要测试人员能够随时启动自动化的回归测试对马上发布的迭代代码进行快速验证。