✨每日早会/例会/站会/:
✔昨天干了什么
✔今天准备干什么
✔存在什么需要解决的问题
✨测试的工作内容(你是怎么理解测试工作的):
✔质量管理:能够结合沟通能力,能和测试工作中不同角色的人沟通解决工作过程中存在的问题;
✔测试效率提升:通过自动化测试的技术手段来提升工作效率(速度)。
✨测试需要具备的综合素质(你觉得一个测试应该具备什么素质):
✔对内能够很好的和各个不同的角色沟通来解决需求以及逻辑问题(产品经理/开发/项目经理,以及公司其他职能团队的人)
✔对外能够很好的解答客户的问题并且协助客户解决问题
✔能够通过技术的手段来提升测试的效率
✨职业发展方向:
✔单纯技术型的发展
✔业务性的发展
✨你有本地化的测试经验?
本地化测试:产品是国际化的,那么本地化指的是产品全部使用一种语言(韩文/日文/英语),这个时候你依然具备测试的能力。
✨软件测试的定义
软件测试官⽅的定义为:描述⼀种⽤来促进鉴定软件的正确性、完整性、安全性和质量的过程。 换句话说,软件测试是⼀种实际输出与预期输出之间的审核或者⽐较过程 。
✔正确性:
1、一个软件的正常功能
2、一个软件的异常功能,也就是说的容错性
✔完整性:
1、需要验证(测试/考虑)到一个软件使用的各个方面(维度),它的标准就是考虑需要周全
2、既然是完整性那么也就需要考虑一个软件的正常的使用和异常情况下的容错的能力
3、本地化也是需要考虑到的(国际化)
✔安全性:
1、产品在非功能使用情况下是否存在数据泄露,以及其他的隐患情条件
2、需要考虑的是通过渗透测试的技术来验证产品是否存在支付,数据,以及其他的安全审计
✨软件测试基本流程:
1、评审需求文档
2、开发这边编写代码来实现需求,测试这边编写测试计划和测试用例
3、测试这边编写完测试用例后,进行测试用例的评审(评审参与人:产品经理,开发,测试,项目经理等)
4、开发完成后,进行转测,测试这边进行冒烟测试,冒烟测试通过后,进入到测试阶段
5、测试阶段测试完成后,准备产品的上线
传统的测试只参与到测试阶段,其他阶段很少关注,但是新型的测试,需要在整个流程中(需求从提出到产品上线)都全部的参与进去。
✨测试尽早介入的好处:
一般软件测试的原则是期望测试能够尽早的介入到整体研发流程,尽早的进入可以带来这么几个优势,具体如下:
1、尽早的熟悉产品的需求以及产品PRD的实际文档以及产品逻辑
2、从敏捷角度而言,文档准确性以及文档的可用性也是需要测试被验证的之一(一般测试很少这样做)
3、协助产品,站在用户的角度以及测试的角度来思考产品设计逻辑的合理性
4、尽早进入可以更多的理清程序的逻辑
5、在具体到产品进行PRD评审的时候,能够尽快的进入到具体的逻辑和思考中,而不致于说之前不理解,可能一直游离在思考的阶段。
测试:站在公司的角度来考虑产品,站在用户的角度来考虑产品。
✨软件测试的目的
✔测试程序执⾏的过程,⽬的在于发现错误
✔⼀个好的测试⽤例在于能发现⾄今未发现的问题
✔⼀个成功的测试是发现了⾄今未发现的错误的测试
✨错误有以下几种:
✔界面的提示信息的错误
✔界面交互的错误
✔在不同浏览器的兼容性的错误(Chrome,Firefox,edge)
✔底层服务的稳定性和可用性
✨探索性测试:根据自己的主观意愿来产品进行随机的,无目的性的来测试产品,目的是发现产品中可能存在的其他问题。
工具:头脑风暴(由N个人一起开会,针对某一个特定的事提出不同的解决方案和意见,目的是达成比较中性的解决方案)
✨面试题:你怎么确保你的测试点考虑的是比较周全的?
可以通过头脑风暴进行探索性测试。
✨软件测试十大原则:
1、测试应基于⽤户需求
用户是谁? 前提是你需要知道被测试的产品是给那些人服务的,那么在实际测试的过程中,需要站在这些人的角度和立场上来思考产品的合理性,以及可用性。
2、做好软件测试计划是做好软件测试⼯作的关键
自己的工作计划是自己梳理的,别人不会参与的。那么这个过程中,特别需要注意的是,被分配的任务尽量要多要测试的时间。
3、应尽早的开始软件测试并不断的进⾏软件测试
从需求开始测试都已经参与进来了,只是不同阶段测试承担着不同的任务:
1)需求阶段:需求是否合理?
2)开发阶段:架构是否合理?
3)测试阶段:验证各个模块
4)上线阶段:上线仅仅代表的是一个版本(迭代)的完成,但不是结束,因为的上线后可能用户会发现我们未发现的问题,需要跟踪以及解决这些问题
4、测试前必须明确定义好产品的质量标准
1)需求文档的定义
2)在用户的角度针对产品使用的理解度和使用度来衡量产品的可用性和易用性。
5、避免测试⾃⼰的软件
1)从人性的角度而言,一个人很难否定自己的
2)测试与开发的关系,测试要相信开发,毕竟是一个团队,但是测试要具有自己的职业职责(开发说我的程序不需要测试,直接上线)。
6、应充分注意测试中的集群现象
7、必须检查每个实际输出结果
验证每一个点,都需要有实际输出结果与预期的结果对比
8、穷举测试是不可能的
只测试重点的产品搜索 每一个测试任务:必须有开始时间和结束时间
9、测试设计决定了测试的有效性和效率
1)测试设计可以简单的理解就是怎么干这件事,以及干这件事的策略和方法
2)以京东搜索为案例,如果测试所有的商品搜索,根本不现实,但是商品是有类型的,那么可以针对性的测试每个类型的商品搜索。
10、注意保留测试设计和说明⽂档,并注意测试设计的可重⽤性
测试文档有哪些?
1)测试计划(测试资源的安排,开始时间和结束时间)
2)测试设计方案(以什么方式进行测试)
3)测试用例
4)测试报告
✨软件测试的分类:
软件测试按开发流程的阶段来划分,可以主要划分为如下⼏个阶段,具体为:
单元测试
集成测试
系统测试
验收测试
✔单元测试:
UnitTest 单元测试指的是针对程序最小粒度的测试,主要测试的对象是函数或者是方法。单元测试框架主流的有,Java(Junit,TestNG),Python(unittest,Pytest)。 单元测试又可以说是白盒测试。
TDD模式(Test Driver Development):
测试驱动模式流程:
1)先写测试用例
2)再根据测试用例实现产品的功能
测试内容:模块接⼝测试,程序内部逻辑,路径分⽀测试,局部数据结构测试,错误处理测试,边界测试。
✔集成测试:
现代企业使用的是前后端分离的模式
1、前端:Vue,React等
2、后端:主流的编程语言
3、交互:前后端会根据HTTP的协议来进行交互
后端与后端之间的交互
1、淘宝服务
2、支付宝的服务
3、服务根据HTTP等协议来进行通信
集成测试的核心是API测试,也就是接口测试。接口测试主流的测试工具是PostMan,JMeter。
集成维度具体为:
1、前端与后端的集成
2、后端与后端的集成
测试的大部分精力主要聚焦于接口测试,因为接口测试的执行速度是比较快的,而且也是由现在的企业软件开发模式来决定的。
✔系统测试:
端到端的测试,End To End Test
系统测试:针对一个系统的业务流程的测试,也就是说从一个流程开始一直到一个流程的结束。针对系统中各个不同模块(集成测试里面的模块)集成到一起后的测试,目的是验证各个独立的模块集成到一起后,是否能够完整的调用通系统的各个链路。(相当于功能测试)
测试内容:功能、界⾯、可靠性、易⽤性、性能、兼容性、安全性等
✔验收测试:
测试完成后,发送邮件给产品经理,产品经理这边会进行验收测试,产品经理这边验收测试完成后,会回复邮件说明验收测试已经完成,接下来测试团队编写测试报告,准备产品的上线。
外包:验收测试的时候客户必须在现场。