目录
近两年失业的人确实蛮多的,但是也不要过于陷入悲观的情绪中,你可以把这次失业当成休息的阶段,也可以当成自我提升的阶段,充实自己,然后再进入下一个阶段;
一般来说有两个大的方向,1是提升自己,2是提升收入,无论选择哪种都好,千万不要让自己处于无所事事的状态中,长此以往会让人“废掉”
一、关于软件测试的认识与学习目标
第一次接触了软件测试这一门课程。以往对于这方面的认识并不太多,之前所做的app等相关软件也未考虑这些内容。因此为了很好地学习这一门课,在网络上查找了关于软件测试的相关资料。
软件测试(英语:software testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。 软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
软件测试是使用人工操作或者软件自动运行的方式来检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别的过程。
它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness) 、完全度(completeness)和质量(quality)的软件过程是SQA(software quality assurance)的重要子域。
Glenford J.Myers曾对软件测试的目的提出过以下观点:
(1)测试是为了发现程序中的错误而执行程序的过程。
(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。
(3)成功的测试是发现了至今为止尚未发现的错误的测试。
(4)测试并不仅仅是为了找出错误。通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进。
(5)这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性。
(6)没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。
(7)另外,根据测试目的的不同,还有回归测试、压力测试、性能测试等,分别为了检验修改或优化过程是否引发新的问题、软件所能达到处理能力和是否达到预期的处理能力等。
二、测试原则
1.测试应该尽早进行,最好在需求阶段就开始介入,因为最严重的错误不外乎是系统不能满足用户的需求。
2.程序员应该避免检查自己的程序,软件测试应该由第三方来负责。
3.设计测试用例时应考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况下要制造极端状态和意外状态,如网络异常中断、电源断电等。
4.应该充分注意测试中的群集现象。
5.对错误结果要进行一个确认过程。一般由A测试出来的错误,一定要由B来确认。严重的错误可以召开评审会议进行讨论和分析,对测试结果要进行严格地确认,是否真的存在这个问题以及严重程度等。
6.制定严格的测试计划。一定要制定测试计划,并且要有指导性。测试时间安排尽量宽松,不要希望在极短的时间内完成一个高水平的测试。
7.妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。
三、测试目标
1.发现一些可以通过测试避免的开发风险。
2.实施测试来降低所发现的风险。
3.确定测试何时可以结束。
4.在开发项目的过程中将测试看作是一个标准项目。
四、测试过程
第一步:对要执行测试的产品/项目进行分析,确定测试策略,制定测试计划。该计划被审核批准后转向第二步。测试工作启动前一定要确定正确的测试策略和指导方针,这些是后期开展工作的基础。只有将本次的测试目标和要求分析清楚,才能决定测试资源的投入。
第二步:设计测试用例。设计测试用例要根据测试需求和测试策略来进行,进度压力不大时,应该设计的详细,如果进度、成本压力较大,则应该保证测试用例覆盖到关键性的测试需求。该用例被批准后转向第三步。
第三步:如果满足“启动准则”(EntryCriteria),那么执行测试。执行测试主要是搭建测试环境,执行测试用例。执行测试时要进行进度控制、项目协调等工作。
第四步:提交缺陷。这里要进行缺陷审核和验证等工作。
第五步:消除软件缺陷。通常情况下,开发经理需要审核缺陷,并进行缺陷分配。程序员修改自己负责的缺陷。在程序员修改完成后,进入到回归测试阶段。如果满足“完成准则”(ExitCriteria),那么正常结束测试。
第六步:撰写测试报告。对测试进行分析,总结本次的经验教训,在下一次的工作中改。
软件测试过程管理,主要包括软件测试是什么样的过程,如何评价一个软件测试过程,如何进行配置管理和测试风险分析以及测试成本的管理。
了解了相关知识后,我对软件测试有了一个大致的了解。对该课程的学习也有了大体的目标,在学会相关的专业知识后,希望可以在未来无论编写课程作业还是创作相关应用都能把学到的知识很好地运用,力争完成一个合理可用度高人性化的软件。
五、学习路线
系统知识储备:linux、互联网网络基础、数据库、编程基础。
linux基础:1、linux系统了解和环境熟悉
2、常用的linux命令
3、linux文件属性、权限、用户管理
4、linux环境安装和使用
5、环境变量
互联网网络基础:1、网络架构通讯原理
2、TCP、UDP、HTTP协议
3、session与cookie
数据库:1、mysql、oracle
2、环境搭建与应用
3、sql使用(关联查询、删除修改),存储过程,事务与编程编程基础:1、java、python
2、开发环境与基本语法,类与对象,面向对象
3、简单的框架
功能测试核心:测试模型,测试流程,用例设计,缺陷管理
自动化测试:web前端开发基础,浏览器调试工具,接口测试工具使用,web自动化测试(selenium),自动化测试框架,自动化测试平台
自动化测试框架:
性能测试:性能需求分析,性能测试工具使用,性能监控分析和调优
安全测试:抓包工具使用,安全漏洞原理,安全漏洞测试方法,漏洞的防范
测试进阶:sell脚本,测试工具的研发,敏捷测试&TestOps,mock,Docker,大数据测试
六、职业规划
初级软件测试工程师:
- 测试基础理论:你要明白一家互联网公司各个岗位是做什么的,主要是前端,后端,产品经理.....以及一个版本迭代从需求分析到上线整个测试流程以及使用的管理工具。要掌握测试用例的编写方法与技巧。
- 功能测试:主要分为app测试,web测试和接口测试。主要就是接口测试,你要学会使用两个工具,一个是postman用来调接口,一个是fiddler用来抓包定位bug。学好接口测试也是为以后的性能压测学习打下基础。
- 数据库:首学mysql,主要掌握sql语句,增删查改,嵌套子查询,多表查询。加分项会存储过程,懂索引,事务,sql优化。这些初级不强求。工作中使用最多的是查询和修改语句,主要校验前端的传值以及不同系统接口调用数据传输,存值是否正确。
- linux:会linux基本命令,比如linux三剑客等,会用命令查日志,会搭建测试环境。因为绝大多数公司服务器以及代码都是部署在linux系统上,工作中用的最多的就是查询日志,定位bug。
- 网络协议:会http/https协议,高频面试题目接口请求的方式get与post区别,cookie与session机制区别,三次挥手四次断开,输入百度网址发生了什么?这些都要了解。
- 版本控制工具:主要就是git和svn,git是命令行式,svn是图形化界面,企业主要用来管理代码以及文档等,属于工具使用,比较简单,最好都会。
- 编程语言:java/python之一,初级对编程语言要求不高,不会也可,但是是加分项,最好掌握一些基础语法,比如学完javase,能手写实现冒泡排序或其它排序,很加分。
- 自动化:主要分为Web自动化,App自动化,接口自动化。初级要求不高,知道一些框架即可,如果学习请优先学习接口自动化,目前需求最多。加分项是会使用搭好的框架编写自动化case,脚本等。
- 性能测试:初级没要求,加分项会使用jmeter做接口压测,并发测试等
中级软件测试工程师:
- 掌握一门编程语言:java/python之一,python对于初学者很友好,比java好入门。java优势在于和开发使用的是相同语言,便于沟通,目前后端开发大部分都是使用java语言。而且学习性能调优时,使用java技术栈的对理解底层JVM很有帮助。大厂使用java比较多,中小公司使用python比较多。当然后期两者都会再好不过。
- 可以根据业务至少搭建一种自动化测试框架:自动化测试主要有接口自动化,web自动化,app自动化三种。推荐大家首先学接口自动化测试框架,因为需求最大,使用的公司最多。原因就在于后端接口比较稳定,变化比较小。前端自动化,ui层变化太大,成本太高。做的公司比较少。
- 性能测试:至少会接口压测,数据库压测,有实际相关经验。可以根据生成的报告分析TPS,并发量,吞吐量,资源利用率等这些关键指标,可以协助开发调优。当然,性能测试水比较深,分析性能瓶颈这些,你如果玩的很溜的话就能发展为架构师了,中级掌握基本的即可。
- 学习一门脚本语言:推荐shell,这个方向作为掌握linux的基本命令的进阶方向再好不过,可以看到很多大厂招聘都有掌握shell优先,很加分。
- 至少熟悉一个行业的业务知识:很多时候测试场景漏测导致线上问题,并不是因为你没掌握好测试用例的设计方法,根本原因是你对你测试的这个产品还不够完全熟悉,对业务理解还不够透彻。深入掌握一个行业的业务知识对你迁移到另一个行业也很有帮助,可以更快上手,可以是电商,保险等行业均可。不推荐游戏,嵌入式等硬件小众行业......
- 可以独挡一面:这意味着你不再像初级测试一样,发现bug问题首先甩锅给开发,而是自己可以首先分析问题,定位问题原因。也意味着你可以独立负责并主导一个完整项目的测试。总之,独立思考能力是很稀缺的。
如果这篇文章对你有帮助,请给小编点个赞!👍这样我才有动力继续更新下去!
今天的小知识学会了么
欢迎在留言区跟我们互动噢~
觉得有所帮助的话点个赞呗
最后是小编自己整理的一些学习资料、测试工具、课件、笔记相关资料点击下方小卡片
小编热衷于收集整理资源,记录踩坑到爬坑的过程。希望能把自己所学,实际工作中使用的技术、学习方法、心得及踩过的一些坑,记录下来。也希望想做软件测试的你一样,通过我的分享可以少走一些弯路,可以形成一套自己的方法,并应用到实际中