龙空技术网

史爱武:软件测试,寻找“Bug”的质量把关人(下)

计算机大学生 122

前言:

当前我们对“安装oracle闪退”大概比较珍视,兄弟们都想要分析一些“安装oracle闪退”的相关文章。那么小编同时在网上网罗了一些有关“安装oracle闪退””的相关内容,希望小伙伴们能喜欢,大家快快来学习一下吧!

来源微信公众号:计算机大学生

二、技能要求

软件测试岗位职责主要介绍的是“要做什么”,本节内容将介绍“做这些工作需要具备哪些技能”。软件测试大体分为功能测试、接口测试、性能测试、自动化测试等几个方向,不同的方向需要学习和掌握的知识和技能也不尽相同。

功能测试比较基础,就是测试软件的基本功能有没有问题,是初级软件测试人员都要掌握的技能。接口测试则是测试模块与模块之间的接口(主要是API接口)有没有问题,接口测试其实也是一种功能测试。性能测试和自动化测试则是高阶的测试技能,前者是测试软件的性能,如并发、压力、负载等等,后者是通过编写脚本来使用工具或编写自动化测试工具来实现自动对软件进行测试。

对于想从事软件测试的计算机大学生来说,毕业后基本都是初级软件测试人员,具体的技能要求如下:

(一)测试用例等文档编写能力

写测试文档是测试从业人员最基本的技能要求,包括测试计划、测试用例、缺陷报告、测试总结报告等测试文档。锻炼这些基本能力的关键是要掌握软件测试基础理论知识——要了解常见的软件开发流程及模型;要学习软件测试的定义、分类、测试的流程、测试用例设计方法及用例要素、缺陷(bug)的管理及生命周期;要了解Web端和移动端APP的常见测试点和测试方法;更要熟悉各种测试文档的内容要素和参考模板。一般来说,买一本软件测试相关书籍就能系统全面地学到这些基础理论知识。

在测试文档中,最核心的就是测试用例。作为一个测试工程师,最起码的能力应该就是根据产品需求来设计和编写测试用例的能力。不过,要设计好的测试用例,需要对产品的特性和业务非常的熟悉,对用户的使用场景有着系统性的思考。除此之外,一些科学的测试用例设计方法(边界值分析、等价类划分、因果图、判定表、正交实验设计等)可以帮助测试人员理清思路,更规范更有效地设计用例,而不是仅仅凭借经验或者天马行空想当然地设计用例。因此。如何编写一份高覆盖率、低重复率的测试用例,是初入软件测试行业人员必须不断追求的能力。

测试文档的编写最起码要求测试人员熟练掌握Word、Excel的使用。对于很多在校大学生来说(甚至是计算机大学生),他们的Word、Excel的水平只能算是启蒙级别,Word中稍微复杂一点的图、表、文字混合排版,或者Excel表格中插入较多的文字,很多人就开始蒙圈了。

特别是Excel, 很多中小企业基本还是用Excel来编写测试用例,这个容易上手但是管理大量的测试用例还是有些麻烦。很多企业也开始使用测试项目管理工具来统一管理测试工作,其中一般也包含有测试用例管理功能,比如Jira、禅道、Bugzilla等等。作为测试工程师,至少要能熟练使用这些工具的一种(笔者个人三种工具都用过,目前团队用的是禅道),特别是其中的缺陷管理功能,测试人员在工作中基本上都会用到的。

(二)Linux和数据库

Linux是目前最流行的服务器操作系统。软件测试人员常常需要在Linux系统上搭建测试环境;在测试过程中查看Linux服务器的日志文件来定位分析问题;甚至编写Linux Shell脚本来实现自动化测试。这些都需要测试人员掌握基本的Linux系统知识,熟悉常用的命令和工具。

常见的Linux操作系统包括Centos、Ubuntu、Fedora、Redhat等,测试人员至少需要熟悉一到两种,要掌握的Linux能力包括:Linux系统的安装和操作;Linux远程管理和文件传输工具Xshell、Xftp等;Linux终端的各类常见命令(日志查看、文件压缩解压、文件权限等文件和目录操作命令,用户与组管理命令等等);Linux上安装软件(yum安装命令,通过tar、gz等网络上下载的安装文件安装,JDK、MySQL数据库和Tomcat安装等);Linux网络设置、防火墙、环境变量等常用的系统设置;Linux文件编辑器Vi/Vim的使用;Linux Shell脚本编写,包括Shell基础与应用、Shell逻辑控制、Shell脚本函数,等等。

谈到Linux知识和能力,我就想到我们团队之前的一次测试经历:

2年前,我们到一家公司测试我们自主研发的云系统。开始一切顺利,但是在我们云系统产生的虚拟机里运行对方公司的一个视频转播软件的时候,问题就出现了:视频转播软件从一个端口接收的视频流无法正常从另一个端口转发出去。也就是,只能接收视频,不能转发视频。

为了解决这事,团队成员忙活了好几天。先是怀疑我们的云系统安装有问题,就反复卸载安装了不下十次,问题没解决;因为我们的云系统也是基于一个开源框架来开发的,然后在开源框架的群里反复请教各种解决方案,问题还是没解决。后来,查到一个Linux操作系统的安全缺省配置的问题,缺省值是1,就是把所有接收的视频广播流丢掉、不转发。把这个值改成0,一切正常了。

从这个真实经历我们也可以看到Linux操作系统能力的重要性,有时一个小小的系统配置就导致整个应用系统的不正常。掌握Linux操作系统知识和技能,对于软件测试人员定位和分析问题会有很大的帮助。

数据库(特别是关系型数据库)是软件系统必备的应用系统。软件前后端的交互,本质上就是数据的交互,不管是功能测试、接口测试、性能测试、自动化测试等,都离不开数据库的支撑和使用。一方面,测试环境的搭建需要安装部署数据库;另一方面,测试过程中数据的验证、测试数据的构造,都离不开数据库的增删改查等操作。

常见的关系型数据库包括MySQL、Oracle、SQL Server等,特别是开源的MySQL,在学习或实际应用场景中用得比较多。测试人员要掌握的数据库能力包括:了解数据库的基本概念;掌握MySQL等至少一种数据库的环境搭建以及基本的SQL语言(增删改查等);能编写多表查询、子查询、查询分组等高级查询SQL语句;自定义函数、存储过程、事务与编程等。

特别地,要熟练使用客户端数据库管理工具Navicat,这套全面的前端工具为数据库管理、开发和维护提供了一款直观和强大的图形界面,是目前业界广泛应用的数据库管理工具。

(三)功能测试能力

初级测试人员主要还是以手工的功能测试为主,也就是常说的“点点点”,就是按照测试用例,手工测试产品的功能是否满足设计需求的要求。Web系统和移动终端App的功能测试是初级测试人员都要掌握的能力。

功能测试阶段经常要使用两类工具,一类是SVN、GitHub等版本管理系统,第二类是Jira、禅道、Bugzilla等bug管理系统。测试人员需要从版本管理系统里面打包最新的程序包来部署到测试环境,执行功能测试过程中发现了bug,也会及时提交到bug管理系统。这两类管理系统,至少要能熟练使用每种管理系统其中的一个(我们团队就是使用SVN和禅道)。

API,即应用程序编程接口(Application Programming Interface),是软件系统不同组成部分交互的约定,在目前SaaS成为主流的开发和应用环境下成为了支撑业务的核心部分。前端页面和App里面的业务数据都是通过各种API与服务器进行通信,从而实现业务功能。一个软件系统越庞大,需要用到的接口就会越多,接口的设计难度和复杂度就会越大。

接口测试,也就是API接口测试,本质也是功能测试的一种,跟功能测试流程并没有太大区别,测试流程依旧是:分析接口文档(需求文档); 根据接口文档编写测试用例(用例编写完全可以按照以前的用例设计规则来编写,例如等价类划分,边界值等设计方法); 执行测试,通过脚本或者工具,模拟客户端对服务端接口进行调用,查看不同的参数请求,接口返回的数据是否达到预期。因为是从接口层测试,所以能更早地发现问题,从而提高测试效率,降低修复成本。

实际应用中,API 接口测试是用一种用程序或工具来发送数据,同时验收系统的返回值的方法。目前常见的接口有Webservice接口和Restful接口,Webservice 是基于 Soap 协议传输数据,请求报文和返回报文都是XML格式,一般要掌握SoapUI工具进行测试。目前各大开放平台用的更多也更容易访问的是Restful风格的API接口,通过路径来区分调用的方法,常用的是Get和Post调用方法,请求报文参数有多种形式,返回报文一般为JSON格式。通常说的接口测试基本上也指的是Restful接口测试,这种接口测试要掌握常用测试工具Postman或Jmeter,前者功能上更简单,更轻量级,实际应用也更广泛。

对API接口测试来说,初级测试人员要掌握http/Https协议知识和常用请求方法Get和Post;Cookie和Session知识;API接口的基本概念,接口文档的分析理解和接口测试用例编写。除此以外,更要熟练掌握Postman、Jmeter或SoupUI等接口测试工具的使用,特别是要熟练使用Postman。

功能测试是初级测试人员的主要工作和必备技能,但是2~3年后成为中级测试工程师,或者5年后达到高级测试工程师的职位,就必须进阶到性能测试和自动化测试的高阶能力了。

性能测试的技术要求很高,不仅仅要对性能测试的指标、测试分类、测试设计有很深刻的理解,还要学习系统业务和架构相关知识,这样才能更好地设计性能场景,分析出系统的性能瓶颈。性能测试常用的工具有Jmeter和Loadrunner。性能测试流程包括性能需求分析、性能场景设计、测试脚本编写、测试执行资源监控、性能调优、回归测试等,最终还要输出性能测试报告。

自动化测试的基础是要掌握至少一门编程语言,个人优先推荐Python, 或者是Java。并且要掌握一定的操作系统脚本(Linux Shell脚本)和前端知识(HTML、CSS、JavaScript等)。另外,还要掌握相关的自动化测试工具(Web端的自动化测试工具Selenium,移动端APP自动化测试工具Appium)以及多种自动化测试框架。

测试开发也是初级测试人员将来的进阶方向。有一定的功能测试经验并对代码开发有强烈兴趣的计算机大学生,可以朝着测试开发这个岗位发展。这个岗位主要工作就是利用高级开发语言(Java、Python等)开发用于自动化的测试脚本、测试工具或者自动化的测试平台(框架)。特别地,有些公司的软件或产品有些特殊的功能(非功能)需求,常用的自动化测试工具不能完成全面的测试,这个时候,测试开发人员定制开发出适合本公司产品的自动化测试工具(或平台)是必需的,既能节省手工功能测试的时间,又能提高测试的覆盖率和全面性。

除了上述技术能力之外,职场上的非技术能力当然也是很重要的。作为一个软件测试人员,良好的沟通能力、管理能力、团队协作精神、耐心、细心、责任心等职场软实力也是非常需要的。特别要指出的是,交流沟通是测试人员特别需要的能力,但是我发现,现在的年轻大学生也特别缺乏交流沟通意识和能力。对于一些规划着将来走上技术管理岗位的大学生来说,这些软实力可能是更要下功夫学习和提升的,在职场上的时间越长,越要侧重于锻炼这些软实力。

三、大学生,你要为软件测试实战些什么

上面两节分别介绍了软件测试人员(特别是毕业从事测试工作的初级测试人员)要“做什么”和要“会什么”,这两方面都是“知”的层面,下面重点介绍“行”的层面,也就是“实践”的层面。

计算机大学生,怎样在在校期间锻炼出这些能力,并能做好相关工作,到大四毕业季能够如愿找到一个满意的“软件测试”工作呢?

总的来说,对于毕业后从事的初级软件测试工作,计算机大学生在校期间能够实践锻炼1~2个主流项目(最好是1个Web项目和1个移动App项目)的功能测试,熟练掌握软件测试基础知识、测试流程和功能测试技能(测试用例编写、Bug管理以及相关工具等),基本上就差不多了。

(一)Web测试实战

对于在校的计算机大学生来说,如果没有机会加入学校老师或者实习企业的测试团队来实践软件测试知识和技能,可以选择自己在课程学习过程中完成的一个Web项目作为测试目标,如果自己没有开发过合适的Web项目,也可以在网上下载一个免费的Web项目来测试。

在校大学生的测试实战的主要目的相对比较简单——掌握测试工作流程,熟悉相关知识和技能,并熟练使用相关工具。下面列出的就是Web测试实战流程:

1、需求分析

不管你的Web项目是否有比较完整的需求文档,我们都要做需求分析。有需求文档的话,重点分析需求文档,列出重点要测试的功能点;如果没有详细的需求文档,也可以参考程序界面,列出测试功能点的。

2、编写测试计划

参考网上用得比较多的测试计划的模板,编写一个简单的测试计划,这个测试计划的内容可以按需要进行裁剪,主要目的是熟悉这个过程要完成的工作,测试计划内容可以包括测试的功能点、测试环境要求等简单几项。

3、编写测试用例及评审

整理功能点,按照等价类、边界值、错误推测法、场景法、因果图、判定表等用例设计方法来编写测试用例,测试用例可以用Excel编写,也可以安装开源的“禅道”项目管理工具,其中含有测试用例管理功能,可以在“禅道”系统中编写测试用例。测试用例一定要找老师或项目组同学来一起评审,当然,也可以自己仔细检查来完成用例评审。不管怎样,在实际测试项目中,测试用例完成后,用例评审是一个非常重要的环节,能够帮助测试团队提高测试用例的质量。

4、测试环境搭建

在Linux物理机或者阿里云上的Linux虚拟机上部署要测试的Web项目(一般也要安装Tomcat、MySQL数据库等),这一过程目的是熟悉Linux操作系统的基本命令、安装应用软件等基本操作。

5、执行测试

按照测试用例要求来执行功能测试,在确认或验证Bug的时候,很多时候会用到Navicat访问MySQL数据库并执行SQL语句,也可能要查看Linux的日志文件。发现有Bug, 就在“禅道”系统上提交Bug。这个过程就是要熟悉Bug报告的规范内容、Bug管理系统的使用、Bug修复后的回归测试验证Bug的修复情况、Bug状态变化和生命周期等。测试用例比较多的话,这个过程执行时间相对比较长些,所有的测试用例都执行完了,所有的Bug都按照测试计划要求达到可停止的状态了,这个执行测试的过程基本就可以结束了。

6、编写测试总结报告

可以参考测试总结报告模板来完成这个报告。对于一个练习项目来说,可以裁剪报告模板的很多内容,主要描述Bug结果分析;也可以利用“禅道”系统来编辑和导出测试总结报告,这样更省时省事、更规范化些。

(二)App测试和API接口测试实战

移动端App是绝大多数公司都会开发的,App测试已经差不多和Web测试平分秋色了。对于初入职场想从事测试工作的大学生来说,App的功能测试还是要实践下的。甚至在面试的时候,很多公司发现你没有App测试经验就直接Pass你了。

所以,在校大学生也要有意识的找一款移动App(可以是自己课程设计开发的App或者网上下载的开源App)来练习功能测试实战。当然,尽管有Android、iOS以及华为的HarmonyOS等多种移动端操作系统,只要练习目前使用最广泛的Android系统的App即可。

在测试流程上,App项目测试和Web项目测试没什么不同。但是,APP测试也有一些特殊的专项测试,比如,2G/3G/4G/5G/Wifi等网络测试,常用抓包工具Fiddler来辅助;测试APP是否经常出现闪退、卡顿等稳定性问题,一般借助Monkey这种测试工具;以及安装卸载升级测试、耗电量测试、兼容性测试等。

大学生要练习API接口测试,可以选择一个开放的Restful API平台(比如阿里云开放平台、百度AI开放平台、腾讯AI开放平台等)作为测试目标,仔细阅读API文档,设计接口测试用例,并使用Postman工具来测试这些接口。总之,API接口测试实战关键就是熟练掌握Postman工具的使用。

总而言之,想从事测试工作的在校大学生,在Web项目的测试方面,掌握了整个测试工作流程,以及Linux和数据库知识,还熟悉了Navicat数据库访问工具、禅道测试管理工具。在移动端App项目测试方面,熟悉了App测试流程和方法,并掌握了Fiddler、Monkey等测试工具的使用。在API接口测试方面,熟练掌握了Postman的使用。

如果他们有了这些测试方面的实战项目经验积累,在毕业季找一个不错的软件测试工作绝对是“妥妥的”。如果他们还使用过性能测试工具Jmeter或Loadrunner、Web自动化测试工具Selenium、移动端APP自动化测试工具Appium中的一个或几个,那绝对是毕业季的“抢手货”。

标签: #安装oracle闪退 #navicatmysqlubuntu #ubuntu安装禅道