笔者从事一线的软件测试工作已经十余年,在此期间,阅读了大量的测试文献资料,参与了很多不同类型的测试项目,从实践中逐渐构建出自己的知识体系和经验。本书的主要内容就是这些知识体系和经验的总结。希望本书能帮助测试人员快速建立测试理念,掌握切合实际的综合性技能,通过理论结合实践的方式解决实际工作中的问题,提升工作效率和质量。笔者在以往面试过程中发现:一方面,大部分应聘人员对测试策略、建模、设计只知道皮毛,且不会结合实际项目灵活应用,导致测试架构师职位常常空缺很久也不能招聘到合适的人员。尽管有的人拥有多年测试经验,但是除了业务知识以外,对测试本身并没有进行思考和总结,一旦离开熟悉的业务领域就又变成了新人,之前的经验很难复用,而且即使在自己熟悉的业务领域,由于本身的测试核心能力不足,所以发展也受到了限制。另一方面,应聘人员欠缺自动化技术,测试金字塔中往往只懂上层不懂底层,而且随着软件越来越复杂,某个领域的测试往往会涉及其他领域的各种技术,通过了解不同领域的测试技术和自动化,开拓思维,有助于进一步提升核心能力,更好地实现整体把控,解决工作中遇到的各种问题。以手机终端测试为例,其自动化技术会涉及Android系统各个架构下对应的不同的自动化技术,如UI自动化、Framework的仪表盘技术、HAL的单元接口自动化等。在实际项目中还可能会涉及Linux、Web以及Windows的自动化技术,以便更好地提升自动化覆盖率,这一部分测试技术会涉及驱动、OS和上层应用等。针对这些问题本书介绍了一些可以借鉴的方法,
期待读者依据这些方法,根据被测项目的实际特点,构建满足项目实际需求的测试策略、设计和自动化等。
本书的组织结构如下:
第一部分包括第1章到第5章,介绍了前沿的测试必备理论、测试策略模型、测试与设计建模、自动化测试理论与自动化框架解决方案等。其中,第1章主要介绍了最新的软件测试概念、测试类型、质量属性、开发生命周期模型、漫游测试、软件测试分类、测试过程阶段等。第2章介绍了通过HTSM模型、ACC模型及TEmb方法输出测试策略。第3章概述了各类测试模型、测试设计技术与用例设计技术,介绍了如何进行测试设计、建模和输出用例,并介绍了缺陷分析法、软件质量评估与质量管理等。第4章介绍了自动化测试概述、测试金字塔、自动化测试工具实现原理、自动化测试脚本技术、自动错误预防(AEP)机制等。第5章给出了实现跨平台自动化的整体解决方案,
包括自动化下载源码和MD5校验、自动化编译与打包、自动化分发测试工具、自动化执行测试、自动化上传结果到Testlink、自动化对比不同版本的源码并发送邮件、性能监测、自动化画图、精准测试等。
第二部分包括第6章到第11章,介绍各个领域常用的自动化技术、测试方法以及对应的系列工具。第6章介绍了白盒测试方法、接口测试方法、Gtest单元测试框架及覆盖率工具、Python的Unittest单元测试框架以及其他语言的单元测试框架等。第7章介绍了Linux测试类型、CLI命令行的自动化、Linux GUI自动化以及常用的系列工具等。第8章介绍了Android系统架构及各层架构下的各个自动化技术,如Android 上层UI、Framework层、底层如HAL和Kernel层的自动化技术、App测试方法以及常用的系列工具等。第9章介绍了Windows的自动化技术、自动化工具、猴子与模糊测试以及常用的系列工具等。第10章介绍了Web测试方法与工具、UI自动化以及常用的系列工具。第11章介绍了Web性能策略与测试设计、性能测试方法以及JMeter性能工具等。
本书不要求读者掌握特定的背景知识,读者可以思考本书的测试技术方法,并应用于实际测试项目,评估其效果, 通过评估和思考,掌握原理和细节,演化成新的测试技术方法。希望本书可以帮助初学者迅速了解软件测试全过程与相关技术,同时也能够帮助中高级工程师系统梳理测试技术并构建自己的测试体系,从而升级为测试架构师或者自动化测试专家。
感谢所有曾经支持和帮助过我的人。
特别感谢研华科技的开发经理梁继超参与本书部分章节的审查与修订。
感谢我的爸爸、妈妈和那些默默关心我的人,写这本书花费了很长的时间,是你们让我坚持自己的理想。感谢我的女儿梁澜馨,谢谢你给妈妈带来很多快乐,谢谢你对妈妈写作无法陪伴你的理解和支持! 还要感谢西安电子科技大学出版社戚文艳编辑的悉心帮助和指导。
很高兴和大家分享十余年的经验、思考与总结。由于笔者水平有限,很多内容都是自己的经验总结,难免会出现错误,欢迎各位读者不吝指正。如果在阅读本书过程中有任何问题或者建议,欢迎随时发送邮件到451193604@qq.com,笔者将尽量给您答疑解惑。
编 者
2019.2