序
如今,软件测试岗位受到很大的挑战。一方面,敏捷开发模式、DevOps实践等愈发流行,其强调开发与测试相融合,即测试人员能干开发的工作,开发人员能干测试的工作;另外一方面,测试行业开始认为自动化测试很重要,如果实现不了自动化测试,那么测试就无法敏捷起来(特别是在快速迭代、持续交付的环境下)。
说起自动化测试,根据公众号“软件质量报道”和相关机构最近的调查,目前的自动化测试(特别是面向GUI的自动化测试)效果还不够好,产出投入比不高,自动化测试做得好的公司或团队也不多。但是,基于API进行自动化测试(接口自动化测试)还是比较容易实施的,自动化率能达到90%以上,并且投入产出比高。另外,如今软件架构也慢慢转向SOA架构、微服务架构,基于API进行测试的需求越来越大,这给自动化测试提供了更多的机会。
本书正是帮助那些自动化测试基础比较弱,甚至是零基础的测试工程师转型做接口自动化测试,而且是基于现在如日中天的Python语言来开发自动化脚本,对渴望入门Python编程的朋友也有价值。本书循序渐进地引导读者完成接口自动化测试。
本书直接基于Python代码来实现接口自动化测试,不依赖其他测试工具,降低了学习门槛和使用成本。自动化测试所需的Python技能其实也很简单,读者也不用恐惧,用一些资深人士的话说:1~2天就可以了。即使学得慢一些,一周就能学会。在接口自动化测试过程中,一般建议以自动生成测试数据为主(即先基于自定义的业务数据模板来自动生成大部分测试数据,然后手工再补充一些特殊的测试数据)。未来可以结合人工智能算法来完善测试数据、自动分析与生成接口调用链等,虽然本书没有介绍这方面的内容,但有了本书作为的基础,读者就可以通过自学深入下去。
最后需要提醒读者:想要做好测试,深刻理解用户、产品和业务是非常重要的。任何商业软件最终都是为了解决业务问题和满足用户的需求,而测试正是对这种质量的保障。所以,在学习自动化测试的过程中,一定要重视业务需求、测试思维和测试方法等。只有具备良好的测试素质,才能让自动化测试发挥其价值,才能真正做到事半功倍。
朱少民
国内知名测试专家
前言:本书整体设计思想
自动化测试的前景
软件测试,在大多数的公司还是处于相对弱势的地位,原因还主要在软件测试本身:相比于软件开发,软件测试无论是进入门槛还是编程能力,要求都低一些;而且大多数公司的软件测试还局限于手工测试。这就造成了业界对软件测试的偏见——软件测试只是随便点一点鼠标、技术含量低。
诚然,软件测试离不开手工测试,但不能只有手工测试没有编程能力。技术性测试的方法有很多,常见的有自动化测试、性能测试、白盒测试、安全性测试等,这些测试方法都需要测试人员有比较强的编程能力。其中,自动化测试的进入门槛较低,但效果最明显,所以,自动化测试可以作为广大测试人员进入技术性测试的切入点。
现阶段,薪资高一些的测试岗位,普遍需要做从业人员具有自动化基础及实际操作能力。所以,从就业角度来说,自动化测试是突破测试行业薪资瓶颈的一条捷径;从测试人员的职业发展来说,学习一定的技术,有助于建立技术思维以及行业内部的沟通,便于将来或是继续走测试技术路线,或是转到其他岗位。
本书写作目的
相信很多测试人员和我的经历很像,从最开始的手工测试开始积累经验,在这个过程中肯定想过做自动化,做技术。我最开始是用QTP(Quick Test Professional,一种自动测试工具)录制了登录功能,看着浏览器自动打开、自动输入网址、自动登录,那种愉悦的心情是不言而喻的,但是真正能转型成功,或者说能有一技之长的测试人员还是偏少的,原因就在于技术点的突破。
各种编程语言本身都有相同点,只要突破了一门,其他语言学起来也就没那么难了。所以,如何突破一门语言,如何跨过第一道门槛,成为制约测试人员技术能力提升的关键点,这也是本书编写的目的——引导测试人员突破Python的入门难点。
为什么要选择Python?最主要的原因是——合适。正所谓鞋合不合适只有脚知道。Python简单易学的特点,恰好符合测试人员的要求。很多时候,我都在怀疑Python是不是专为测试人员量身打造的。关于Python的更多优势,读者可以在正文看到。
本书特点
作者在构思本书的时候,也翻阅了市面上很多同类技术书籍,发现绝大多数都有一个通病——采用教科书式的写作模式。所谓“教科书模式”,即按照“语言的历史→语法→章节练习→案例讲解“的模式来展开。这种模式很经典,内容也很翔实,但是太过于死板和理论化。这样的书虽然仔细阅读后确实能收获很多,但是不利于快速上手。
读教科书模式的书时,学习者很容易半途而废,包括我自己,经常是看不到三分之一的内容就放弃了,所有的新鲜劲、韧性都在语法和练习中消磨殆尽了。我真正开始写脚本并不是从某本书开始的,而是从实际的项目拆分入手,遇到问题再去翻这类教科书,纯粹将它当作工具书来使用。
所以,本书不是按照传统的教科书模式编写,而是从实际要实现的目的着手,一步步将其拆分成知识点,再对知识点进行突破,将每个点拆分成一个个小的突破点——类似于“拆书帮”的形式,将“Python+MySQL处理HTTP协议接口的过程”拆解到一个个章节中。读者在每个章节中都能学到完整的一个知识点,最后串联各个知识点,实现最终的学习目标。关于如何分解、如何逐个突破,读者可以在正文中看到。
读者通过每个章节的功能实现,逐步建立对Python的理解,通过小篇幅的功能实现来提升成就感,激发自己继续往下看、继续往下学的信心和勇气。本书所介绍的方法是作者在实际项目中实践过的,并且也被很多业内同事所采用。读者不仅可以将其用在Python学习中,也可以用在其他语言甚至生活中。
读者对象
对Python语言感兴趣的人员;
想在项目中实现HTTP协议接口自动化测试的人员;
想要提升技术,突破技术的人员;
初、中级测试工程师。
代码下载
本书配套代码的下载地址:https://pan.baidu.com/s/1h_OVP0QdhIgZ0pl8OWWekw。
密码:fa68
有关于任何问题、建议和疑问,欢迎发邮件到:smallprocess@yeah.net
致谢
感谢Guido van Rossum于1989年发明了Python。
感谢电子工业出版社,审校此书,以及为本书能够快速出版而付出的辛苦。
感谢何飞在本书构思和出版中所做的指导和帮助。没有他的指引也没有该书的出现。
感谢我的家人,感谢你们对我工作的理解和支持,有你们一路的付出才有今天的这本书。