| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> 不加班的秘密 -> 正文阅读 |
|
[开发测试]不加班的秘密 |
如果面试官问你:如何提高代码质量???下面这些优化方法,可以提高代码质量,大厂都是这样做的,供你参考:
下面会详细解释一下,其中比较重要的环节。 代码review代码审查(英语:Code review)是指对计算机原始码系统化地审查,常用软件同行评审的方式进行,其目的是在找出及修正在软件开发初期未发现的错误,提升软件质量及开发者的技术。?代码审查常以不同的形式进行,例如结对编程、非正式的看过整个代码,或是正式的软件检查。 代码review主要有以下目的:
一些流行的代码review工具:
代码静态检查静态代码检测是指无需运行被测代码,通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句,错误的递归,非法计算,可能出现的空指针引用等等。统计证明,在整个软件开发生命周期中,30%至70%的代码逻辑设计和编码缺陷是可以通过静态代码分析来发现和修复的, ?所以静态代码分析工具能够帮助开发人员快速、有效的定位代码缺陷并及时纠正这些问题,从而极大地提高软件可靠性并节省开发成本。 静态代码分析工具的优势: 1、自动执行静态代码分析,快速定位代码隐藏错误和缺陷。 2、帮助代码设计人员更专注于分析和解决代码设计缺陷。 3、减少在代码人工检查上花费的时间,提高软件可靠性并节省开发成本。 一些主流的静态代码检测工具,免费的cppcheck,clang static analyzer,商用的coverity,pclint等,各个工具对比: 推荐 pclint,cppcheck,coverity等; 安全检查 代码检查里面一般还包含一些安全检查规则,检查代码是否存在安全漏洞,防止系统被入侵和攻击。 单元测试单元测试(英语:Unit Testing)又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。 单元测试的意义
1.提高代码质量:编写测试用例会迫使开发人员仔细思考代码的设计和必须完成的工作,进而会改善代码质量。 2.简化调试过程:开发人员可以测试单个模块的功能,不依赖外部工程和数据源。 3.保证重构正确:单元测试可以有效地测试某个程序模块的行为,是未来重构代码的信心保证。 4.尽早发现问题:单元测试由功能对应的开发者完成,测试考虑的范围更加全面,可以尽早发现大部分问题。 单元测试框架
https://cmocka.org/?https://api.cmocka.org
https://google.github.io/googletest/
代码覆盖率 代码覆盖率是一种通过计算测试过程中被执行的源代码占全部源代码的比例,进而间接度量软件质量的方法,为了提高单元测试作用,单元测试需要保证代码覆盖率,一般是95%以上,尽量覆盖所有分支,由于单元测试可以mock其他依赖,所以被测代码的各种分支处理,理论上都是可以被覆盖到的。 一般需要借助工具来进行覆盖率检查,如C/C++,python,go和Java等,都有相应的代码覆盖率测试工具:
内存泄漏检查内存泄漏(英语:Memory leak)是在计算机科学中,由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费。 C/C++ 使用C/C++这类没有垃圾回收机制的语言时,你很多时间都花在处理如何正确释放内存上。如果程序运行时间足够长,如后台进程运行在服务器上,只要服务器不宕机就一直运行,一个小小的失误也会对程序造成重大的影响,如造成某些关键服务失败. 除了认真review代码外,最靠谱还是结合valgrind工具扫描一下。 JAVA Java的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC或JVM的问题。其实,这种想法是不正确的,因为Java也存在内存泄露,但它的表现与C++不同。 我们通常使用一些工具来检查Java程序的内存泄漏问题。市场上已有几种专业检查Java内存泄漏的工具,它们的基本工作原理大同小异,都是通过监测Java程序运行时,所有对象的申请、释放等动作,将内存管理的所有信息进行统计、分析、可视化。开发人员将根据这些信息判断程序是否有内存泄漏问题。这些工具包括Optimizeit Profiler,JProbe Profiler,JinSight , Rational 公司的Purify等,检查的主要原理就是暴露出所有堆中的对象,让程序员寻找那些无用但仍被引用的对象。 GO pprof,Memory Profiling:内存分析,检查go语言代码内存泄漏,在应用程序进行堆分配时记录堆栈跟踪,用于监视当前和历史内存使用情况,以及检查内存泄漏。 自动化测试自动化测试就是将人工测试自动化,把测试能力复用起来,减少人为失误(漏测),一般流程:
自动化测试前期投入比较大,是一种长期战略,大厂正在推行的方向,当前测试人员要求不会像以前一样,单纯只负责测试,而是开始如下发展:
自动化测试解放测试人员双手,把软件测试抽象成一种可以复用的能力,排除人为因素,长期来看,减少测试人力投入,降低了成本(理想是这样),提高了软件测试效率,保证软件质量。 长稳测试长稳测试主要目的检查软件长期运行的稳定性,这个对于后台服务器和ToB业务来说都非常重要,质量就是生命线,每一次故障,都可能导致公司严重的损失,尤其是用户量很大情况下,所以大厂都特别重视。稳定性测试 稳定性测试是用来验证产品在一定的负载下是否能够长时间的稳定运行,其主要目的是验证能力,并在能力的验证过程中找到系统不稳定的因素并进行分析解决。 可靠性测试可靠性测试就是采用特定的方法激活系统中的各种故障(FAULT),通过观察失效(FAILURE)的发生情况来对系统容错能力(故障定位、故障恢复、故障报告等)进行评估并利用该评估结果来推动产品持续减少失效的一种测试活动。 极限压测极限压测,主要是采用极限规格情况下来轰炸系统,得出系统可承受值安全阈值,比如QPS,PPS,最大带宽,CPU消耗,内存占用,处理耗时等指标,方便建立准确监控系统和扩缩容管理。 常见压测工具: 最后一般大厂都有效能团队和质量团队(QA),会有相应开发人员专门负责建设CI/CD 框架,会把上面的那些任务融入到流水线,自动化起来,用流水线方式让每一次修改(每个版本)都有质量保障。 参考和扩展阅读https://www.zhihu.com/question/41089988 http://www.51testing.com/html/19/n-3709719.html https://cmocka.org/?https://api.cmocka.org/ https://www.huaweicloud.com/articles/12602783.html https://mp.weixin.qq.com/s/mtt68FfSaKZT4kCWYjMmyQ https://testing.googleblog.com/2020/08/code-coverage-best-practices.html http://en.wikipedia.org/wiki/Code_coverage https://testerhome.com/topics/5757 https://segmentfault.com/a/1190000020211494 - END - 看完一键三连在看,转发,点赞 是对文章最大的赞赏,极客重生感谢你 推荐阅读 |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 20:32:09- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |