
第1章 自动化测试基础和Python开发环境的搭建
1.1 为什么要实施自动化测试
随着人工智能、大数据、移动互联网等行业的快速发展,越来越多的软件企业开始大量应用Python语言进行软件的开发和数据处理,Python现在是软件相关从业人员甚至连小学生都在学习的一门语言。软件行业由于同质化产品众多、竞争日益激烈,如何高效、保质保量地产出每一个迭代版本,已经成为整个行业正在面临的重大问题之一。敏捷软件开发的深入开展,使得持续集成已经成为趋势,而在敏捷模型中,自动化测试是实施过程中非常重要的环节。
那么什么是自动化测试?自动化测试是把手动测试行为转为由计算机执行的过程。通常,在测试人员设计完测试用例并通过用例评审后,由测试人员根据测试用例中描述的规程一步步执行测试,将得到的实际结果与期望结果做比较。为了节省人力、时间或硬件资源等成本,同时又提高测试效率,便引入了自动化测试。自动化测试人员一般使用专门的自动化测试工具或测试人员编写的自动化测试脚本来执行测试用例。目前主流的Web自动化测试工具包括Selenium、Unified Functional Testing(UFT)和Rational Robot等。Selenium是开源的测试框架,目前已被广泛应用于Web自动化测试。Unified Functional Testing(UFT)是QuickTest Professional(QTP)的升级版,是一款商用的自动化测试工具,功能强大、使用简单。移动端自动化测试工具有很多,如Appium、Robotium、UIAutomator、MonkeyRunner等,其中应用最广泛的就是Appium自动化测试框架。
为什么要实施自动化测试?随着敏捷软件开发和DevOps的深入开展,先前纯人为的功能性测试已经不能满足研发团队的要求。面对版本的快速迭代,如何高效并保质保量地向用户提交可运行的软件产品已经是测试团队必须面对的问题,只有实施自动化测试才能快速对产品或项目的新旧功能在功能性和非功能性上进行全面验证,持续反馈所提交版本的质量,提高软件研发团队的工作效率。同时,自动化测试是由机器执行的,可以有效避免测试人员在执行过程中出现的一些问题(如疲劳、输入错误数据、操作步骤不对、受情绪影响而导致工作效率降低等),机器可以并行执行且24小时不间断地连续工作。当前,容器化大行其道,使得测试人员可以用更少的硬件资源快速完成测试环境的部署和测试的执行。上面只粗略地讲了实施自动化测试的一些原因,但我们相信这些已经能打动您实施自动化测试了。
事实上,很多软件企业做了更多的工作,它们不仅使用一些开源的自动化测试框架,甚至还为自身定制了更适用的测试平台来完成接口测试、功能测试、性能测试、兼容性测试和安全性测试等,进而通过这些手段全面保障软件产品的质量、加快软件产品的输出进度以及提升客户的满意度等。