开发自测,到底该从哪里做起?
最近有几个在做开发的同学问我是怎么做测试的,或者怎么对一个系统进行测试。
这个问题看似简单,其实范围很广,特别是在不知道公司业务和系统的情况下,无法给一个正确的答复。
如果我告诉你就是做功能性能安全测试,那其实是在敷衍你。就像你问我怎么能考一百分,我回答把全部题做对就可以了。
开发自测现在逐渐成为提测的一个前提,大部分开发同学对此已经不陌生。
但很多公司仍面临没有测试同学、部分内部系统没有测试同学对接或者公司测试文化不够普及的问题,这时候开发同学就需要自己进行全部测试,但是又无从下手。
一是开发同学可能只知道自己负责的那一个模块功能,不知道整个系统的流程,另一个可能是不明白除了把正常功能验证完,还需要关注什么。
你了解这个行业吗
每个公司都有所在的行业,就算是外包公司,你做的项目也会有一个行业归属。金融证券、教育平台、市政平台、电商等等,每个行业的业务不同。
如果你觉得你只是负责敲代码的,为什么要了解行业知识呢,这些由业务人员知道不就好了嘛,业务人员给我们提什么需求就做什么啊。
其实不管什么岗位,结合行业知识可以帮助你更快更好地了解需求背景,同时可以让你主动挖掘和补充隐含的需求。
比如你现在接手一个教师系统,需要新增在线编辑试卷的功能,然后你唰唰唰就完成了。
如果你稍微了解这个行业、了解其他相似系统会有什么功能,你会想到:
- 这个试卷应该是和其它文件一样可以关联到某个课件中的;
- 或者这个试卷是不是应该要有下载的功能比较合理;
- 如果想直接引用别的试卷的某个题可以吗?
那其实设计方式就不全一样了。而如果在后期已经提测甚至验收完再发现这些问题再来调整,那代码就会被改的很丑,严重的话可能需要重新设计。
你了解系统功能吗
因为每个开发同学通常对自己负责的那个模块较为熟悉,比如我负责写一个提供数据的接口,我要提供xxx数据出去,当没有这个数据的时候我返回了400,未找到该数据。
然后调用方A的设计是,获取该接口返回,当收到空的时候返回未找到数据,当收到其它结果的时候返回系统异常。
而这个调用方A还有调用方B,是一个注册模块,调用方B用不存在的账号请求A时居然收到了系统异常,这是不符合逻辑的。
这个例子可能不是很合适(对于有详细接口文档的项目来说可能就不会出现这类问题),但是这里想说明你需要知道你提供的每个接口、模块、功能是怎么被调用的,是起一个什么作用,以及一个完整流程是怎样的。
如果每个模块的开发都只关注自身,那么当整个流程被串起来的时候就是一场灾难。
所以在进行自测时,不应只关注本身这个实现,而要结合整个的系统进行分析和运行。
你写单元测试了吗
对开发同学来说最基本的测试,就是单元测试。但是很多开发会抗拒,觉得单元测试的作用微乎其微。
单元测试的作用在这里就不强调了,但是当你对原代码进行了重构,要一项一项检查是否对其他功能模块有影响时,这个成本是巨大的,而且容易遗漏,而有单元测试的话你只需要运行单元测试即可。
虽然写这样的单元测试本身的成本已经是很大的,但是这是可以无限次被使用的,和每一次重构的未知和风险相比,哪里一个的成本低呢。
代码有通过静态扫描吗
静态代码扫描可以在不运行项目的情况下快速分析和验证代码,识别导致系统故障、可靠性差、系统漏洞或不安全条件的严重漏洞或错误。很多现成的静态代码扫描工具可以利用,一些可以通过编译但是不符合规范的问题可以通过这样的方式检查出来。
你以为的检查点
为什么明明同一个场景,开发同学自己执行的时候没有问题,测试同学却可以发现问题呢,是开发同学操作失误吗?
不,是因为测试同学关注的检查点更详细,除了直观的结果,还包括运行过程中的日志、数据库中插入/修改的数据以及其它间接流程。
当你知道哪些数据需要重点关注,你才能用完整的检查点去确认这个场景是否能算通过。
有现成的自测用例
现在很多测试同学会给开发同学提供自测用例,这是一个很好的开始。
对没有自测意识的开发同学来说,可能需要以通过自测用例作为提测的门槛之一,来不断强化他们的质量意识;对没有测试思维的开发同学来说,这提供了一个思路和方向。
自测用例通常就是重要功能及本次新增/修改的功能,关于如何执行,一是可以借助造数据工具或者脚本,二是由测试同学提供支持,但是最终的希望是开发同学能够独自完整地进行自测。
持续集成
随着持续集成持续交付的推广和实施,越来越多的项目已经在提交代码后自动运行验收测试脚本,这对项目来说是效率极高的。
不仅缩短了从提交到有初步结论的时间,还降低人为操作失误的风险。
开发同学终于不需要为如何进行自测而烦恼了,但是验收测试脚本其实是由开发、测试、产品同学共同完成的,验收测试标准、场景、实现方式等不是由哪一方自行决定和完成的。
如果没有较为完善的自动化验收测试脚本,首先可以把造数据脚本利用起来,其次让业务方提供完整详细的验收标准,再由技术同学将其写成脚本并进行利用。
其它
还有一个有助于开发同学发现缺陷,提高代码质量的方式是结对code review。
让你去检查你自己的代码可能因为习惯而发现不了问题,但是找同事跟你一起review,在相互学习的同时他能发现和指出你遗漏、出错的点。
总结
所以开发同学是可以通过增加自测场景覆盖,结合测试、用户的视角补充测试点,以及结对测试来发现更多的bug,使开发自测做到位。
开发和测试的角色从来不是对立的,开发同学需要进行自测,确保主要功能的实现,测试同学才能有足够的时间和精力去挖掘隐含缺陷、异常情况,以及进行其它类型的测试。
测试同学需要在自测点、测试脚本上给开发同学提供支持,提高开发同学的自测效率。
这样才能使团队的研发效率提高,并且快速交付高质量产品。
下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
最后: 可以在公众号:伤心的辣条 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)
喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!
好文推荐
转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!
面试经:一线城市搬砖!又面软件测试岗,5000就知足了…
面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…
什么样的人适合从事软件测试工作?
那个准点下班的人,比我先升职了…
测试岗反复跳槽,跳着跳着就跳没了…
开发自测,到底该从哪里做起?相关推荐
- java研发自测报告_开发自测方法探讨
开发自测被多个团队实践,开发自测的效果也是不一而足的,具体怎么样的开发自测方式是更好的,每个人都有自己的观点和看法,这里说说自己对开发自测的方法的一些探讨. 一.传统研发流程的弊病 在讨论开发自测之前 ...
- 如何用TestNG满足开发自测?
写在前边 用单元测试Junit完全可以满足日常开发自测,为什么还要学习TestNG,都影响了我的开发进度! 最近技术部老大突然宣布:全体开发人员必须熟练掌握自动化测试框架TestNG,就有了上边同事们 ...
- 吐槽嫌弃测试周期太长?开发自测一下
互联网产品竞争激烈,在生存的巨大压力之下,策划和运营人员们恨不得每一个需求都能秒级上线,这就给研发团队带来了巨大的压力. 有时候,产品的老大很关注某一个功能点,希望能尽快上线,可是,他发现这个功能的开 ...
- 微信小程序测试方法 二维码测试 开发自测
官方文档 情景1. 测试人员测试小程序 & 内测 方法:设置"体验版". 体验版前提:后端必须有https域名支持! 需要进行如下设置: 1. 开通体验版 版本管理设置 在 ...
- [环保] 为了反击无耻的两桶油雇来的砖家,三伏天,我一个月开车不开空调测油耗
http://szbbs.sznews.com/thread-2394490-1-1.html [环保] 为了反击无耻的两桶油雇来的砖家,三伏天,我一个月开车不开空调测油耗 本人开日产阳光CVT,近三 ...
- 苹果自研M1笔记本芯片投入65亿开发自研基带。
本月初带有苹果M1芯片的Mac实际用户跑分曝光了,这是苹果首次尝试在移动计算机设备上植入自研芯片,而随后苹果M2的消息传开,将在2021年投入到新款Mac中.基本在相同时间苹果又宣布整合原班人马,投入 ...
- python到底能用来做啥-Python那么火,到底能用来做什么?
如果您正在考虑学习Python,或者您最近刚开始学习, 您可能会问自己:"我到底可以用Python做什么?" 这是个棘手的问题,因为Python有很多用途. image.png 但 ...
- 浅谈三层架构 通过这个,+Java开发模式经验。终于相通了,动软到底是为什么这么做...
浅谈三层架构 收藏 自己理解的原理 http://www.cnblogs.com/mahaisong/archive/2011/05/12/2044665.html 浅谈三层架构 通过这个,+Jav ...
- 注意力CBMA到底在网络中做了什么事
注意力CBAM到底在网络中做了什么事 CBAM网络架构 通道注意力 空间注意力: 分析 通道注意力: 1.将特征图进行最大池化和平均池化 SENet也使用了通道注意力, 但SENet只采用了平均池 ...
最新文章
- python推荐系统-利用python构建一个简单的推荐系统
- LeetCode Number of Islands(flood fill)
- java 分布式 redis缓存技术_JAVA架构师系列课程分布式缓存技术Redis权威指南,资源教程下载...
- 阿里巴巴java开发手册学习
- Selenium_WebDriver操作iFrame日历框和复选框_Java
- keepalived详解(三)——keepalived与Nginx配合实战
- mysql执行大量的操作时,报无法连接数据库的错误
- 【优化算法】差分蜂群优化算法(DEABC)【含Matlab源码 1423期】
- 算法工程师必备技能(Python 优化提速小技巧)
- mysql sjis 校对乱码_MySQL字符集乱码及解决方案分享
- 10首不可不读的苏轼“最”诗词,人间万事,不过如此!
- 软件测试方案和计划的区别和联系
- HTML个人简历代码模板(静态页面)
- 【Blender-Python】蜡笔画圆球动画
- 【linux】查看环境变量|getenv setenv设置获取环境变量
- Window10家庭版启用远程桌面功能
- 【机试题】2014大疆嵌入式笔试题(附超详细解答,下篇)
- 笔记 GWAS 操作流程2-3:最小等位基因频率
- 股市的交易日(动态规划算法)
- [COCI2008-2009#2] PERKET