软件测试随着软件的出现而产生。在软件开发的早期过程中,软件规模小,复杂度低。软件开发的过程是混乱和随机的,测试的意义是狭隘的。开发人员将测试等同于“调试”,以便纠正软件中已知的错误。开发人员经常自己完成这部分工作。
前期企业对测试投入少,测试介入晚。他们经常等到代码形成,产品基本完成后再进行测试。到20世纪80年代初,软件和信息技术行业进入了一个大发展时期,软件变得越来越大,越来越复杂,软件的质量变得越来越重要。这时,软件测试的一些基本理论和实用技术开始成型,人们开始为软件开发设计各种流程和管理方法。软件开发的方式逐渐从混乱的开发过程转变为结构化的开发过程,其特点是结构化的分析和设计、结构化的评审、结构化的编程和结构化的测试。
软件测试的主要工作内容是验证(verification)和确认( validation ),其概念如下:
?起初,这个“错误检测”过程是由人(测试人员)手动完成的。然而,后来,测试人员中出现了一群“懒人”,也就是不想每天重复检查的人。所以这些懒人就想:能不能找个机器人来做这个烦人的体力劳动?
时至今日,“懒人”想象中可以完全取代测试员的机器人还没有找到。
但是这群懒人(懒人往往是改变世界的人)找到了帮助——他们写了一个程序。这个程序可以代替它们进行质量检验。
此后,质量检查由程序自动完成。这是自动化测试。
自动化测试是机器(程序)执行测试操作并发现(软件)错误的过程。
自动化测试的关键在于“自动化”这个词。要实现“自动化”,首先要写一个程序。
首先,让我们看看一般的功能测试是如何进行的。设计测试用例,测试人员运行测试用例,比较运行后的实际结果是否等于预期结果。如果相等,测试通过。如果它们不相等,测试就会失败。
事实上,自动化测试和功能测试没有区别。自动化测试主要分为三个层次:单元测试自动化、接口测试自动化和UI测试自动化。
单元测试自动化
调用被测类或方法,根据类或方法的参数传递相应的参数并返回结果。最终断言确定返回的结果是否等于预期结果。相等,测试通过,不相等,测试失败。因此,在单元测试中,它主要关注代码实现和逻辑,这当然通常是通过开发来完成的。
接口测试自动化
根据接口文档创建设计测试用例,根据测试用例向接口发出请求,根据返回的结果数据判断状态码,根据响应的消息判断接口测试是否通过。因此,接口测试侧重于数据。只要数据正确,这个功能基本完成了一大半,剩下的就是在首页显示数据了。
用户界面测试自动化
UI测试自动化分为Web测试自动化和App测试自动化。这种测试更接近用户的行为,模拟用户点击按钮并输入输入框的内容。比如一个登录功能,用户输入账号密码后点击,可以看到登录是否成功。光靠Web和App自动化不知道用户刚才的点击是否有效。因此,此时需要数据证明。比如登录成功后,页面会跳转到主页面,页面上会显示“欢迎xxxx”。这是成功登录的有效数据证明。因此,在Web和App自动化成功登录后,我们将获得这些数据用于断言。如果相等,测试通过。如果没有,测试一下。而Web App测试自动化关注的是用户的操作行为以及页面上的按钮和输入框是否可用。从测试的行为本质来看,功能测试和自动化测试没有区别。唯一不同的是,一个是手动操作,另一个是由代码工具执行。
很多朋友会认为有了自动化,就可以等检测报告了,但是没有这回事。因为可以做自动化项目,所以必须经过很多测试,框架和功能相对稳定,所以可以编写自动化测试代码。不能说掌握自动化就能达到人生的巅峰。主要看自动化框架在公司是否实用。
|