吴灿锦,吉林财经大学2019级本科生,曾作为长春鹰迅网络科技有限责任公司CEO,带领鹰迅公司团队在“互联网 +"和"挑战杯"等竞赛中斩获3个国家级,11个省部级奖项。目前在上市公司从事Java开发工作已经超过两年了,参与了两个千万级用户的分布式系统的开发和维护工作,在做项目期间,对Mysql优化,分库分表,多线程,分布式锁,分布式事务,Redis缓存,RabbitMQ,xxl-job,ElasticSearch,SpringCloud微服务框架以及前端的Vue框架都有比较深入的研究,积累了丰富的实际经验和良好的职业履历。软件测试是一个全面而系统化的评估过程,旨在通过使用各种技术和工具来验证软件产品是否满足其预定的使用需求和功能。这个过程不仅包括检查代码是否与需求文档一致,更重要的是发现和修复潜在的缺陷,从而确保软件的可靠性、性能和安全性。通过软件测试,发现软件中的缺陷,保障软件的质量,减少用户遇到的问题,确保软件的可靠性、性能和安全性,从而为用户提供稳定和高效的体验,并帮助产品在竞争激烈的市场中获得优势。虽然一般公司都有专业的测试团队来确保软件质量,但是学习软件测试的依然是我们软件开发者提升软件研发效率的必经之路。这主要体现在两个方面:
1. 研发阶段的测试视角:我们研发过程中,能够站在测试的角度思考问题,知道哪些问题是必须要解决的,确保产品能够顺利通过测试,正如《孙子兵法》所强调的:“知彼知己,百战不殆”,通过深入理解测试要求,我们可以在开发阶段做出更精准的决策。
2. 沟通中测试理论的应用:当测试乱测时,我们可以运用测试理论来与测试人员进行沟通。基于理论的讨论有助于澄清问题,避免无效沟通。软件八大质量模型分别是:功能性,性能,兼容性,易用性,可靠性,安全性,可维护性和可移植性。
开发一款在线教育系统,它需要具备10个核心功能,确保系统在所有主流Web浏览器上都能提供流畅访问体验。系统上线后要能够支持1000用户同时在线学习的需求。实现10个明确列出的核心功能,10个核心功能,不能多,也不能少,而且每个功能的输入输出必须符合需求文档的规定。1000用户同时在线学习,就是系统每秒要处理1000个请求数。
因此在系统上线前,进行压力测试以验证系统能否支持1000用户同时在线学习,如果性能测试不达标就要加服务器。因为如果服务器配置很低,就算代码再优秀也是不行的。1. 浏览器兼容性:确保系统在IE、Chrome、Firefox等主流浏览器上表现一致且稳定。2. 操作系统兼容性:支持Windows 7、8、10、11等多个版本的操作系统。3. 移动设备兼容性:适应不同分辨率、品牌和网络环境下的移动设备。4. 支付兼容性:与微信支付和支付宝等主流支付平台集成。软件应提供直观的用户界面和流畅的用户体验,使用户能够容易地学习和使用,减少用户操作错误的机会。软件在正常和异常条件下均能稳定运行,具有容错能力和恢复机制,减少故障发生。
安全性(Security):软件应具备防止未授权访问、数据泄露和其他安全威胁的能力,保护用户数据和系统安全。1.3.8、可维护性(Maintainability)软件应易于理解和修改,方便开发人员进行故障排查、更新和升级,降低维护成本。
1. 软件应能够轻松地从一个计算环境迁移到另一个,包括不同的硬件平台、操作系统或网络架构。2. 数据迁移时保证数据完整性,1000万的数据,移植到另一个服务器上要保证没有丢失。软件测试流程的六个步骤分别是:需求评审,制定测试计划,设计测试用例,执行测试用例,对缺陷进行管理以及编写测试报告。
测试用例就是为测试项目而设计的执行文档,测试用例的设计和执行对于捕捉缺陷、验证功能和性能至关重要,它们是软件开发生命周期中不可或缺的组成部分,有助于提升软件的可靠性和用户满意度。全面覆盖:测试用例帮助确保软件的每个功能和特性都经过了测试,从而防止遗漏任何潜在的问题点。标准化测试流程:通过实施测试用例,可以建立一个标准化的测试流程,确保测试的一致性和可重复性,提高测试效率和准确性。
开区间:不包含边界上的点(没有等号,Eg:a<10)。闭区间:包含边界上的点(有等号,Eg:a<=10)。开发完成新项目时,在进行具体测试时先进行冒烟测试。对软件的主要功能进行测试,如果冒烟测试的主线流程没走通,就反馈bug,把主线流程贯通之后再进行后续测试。只有主线流程贯通之后才能去做黑盒测试,白盒测试,对小功能小bug进行验证了。如鹰迅课堂网站开发完成了,就要先去测试网站的注册、登录、课程浏览、购物车添加、下单、付款和课程学习等主线功能。主线流程测试通过后,再逐步覆盖其他功能测试。冒烟测试不通过,就是主功能、主线流程测试不通过,比如写好一个付款的功能,下单都无法下单,怎么测试都是浪费时间的。要使用场景法必须懂得流程图,流程图就是使用标准图形和箭头来表达程序或业务的走向。流程图的开始和结束用椭圆,判断用菱形,中间要执行某些语句用长方形。只有让产品画好流程图,才能把业务逻辑理解清楚,才能去开发以及测试。
第1条线:第一步验证银行卡是否正确,如果插入的是会员卡,就提示错误、退卡。第2条线:是银行卡,就验证密码。如果密码错误,提示错误,未达3次,就继续输入密码。验证密码。输入密码超过三次就吞卡,结束。第3条线:输入密码正确,进入主界面,选择“取款”金额→验证账户余额。账户余额不满足,就提示错误、退卡。第4条线:账户余额充足。就验证取款金额,如果取款金额不是整百的,也提示错误。第5条线:账户余额满足,取款金额满足条件,验证ATM机余额是否够用。如果不够用也提示错误、退卡。第6条主线:账户余额满足,取款金额满足条件。ATM余额够用,更新账户余额、出钞,返回主界面。结束。上面第6条主线被称为,冒烟测试用例。项目是否具备可测性,看冒烟测试用例,冒烟测试用例通过了,才证明这个项目是可测的。
错误推测法是可以通过经验推断系统可能出现的问题,这个经验可以来源于类似项目经验,测试经验。当所有的用例都执行完了,缺陷都修复完成了,离上线还有一段时间可以用错误推荐法。以自己的经验去覆盖主线流程业务,或者是测试未覆盖的功能。问题:时间紧,任务量大,又不能加人,你怎么确保项目测完?
错误回答:使用错误推测法进行测试。
正确回答:时间紧,任务量大,我不会去写用例,先跟产品人员沟通清楚哪些是最重要的业务,先把最主要的业务覆盖,然后根据时间,把正确业务都覆盖完之后,再去覆盖主要的模块,先验证主功能的正向,再验证主功能的逆向,测试到哪是哪。
当软件发布到测试环境后,我们就要去执行测试用例,当执行实际结果跟预期结果是一致的,说明这个程序对于这条用例的校验没有问题,通过这条用例。
当执行实际结果跟预期结果不一致的,就是程序校验的有问题,这条测试用例就是不通过。
在进行测试的时候不能单个输入框单个去测试,而应该使用一条测试用例尽可能多的覆盖测试点,覆盖整个功能模块去测试。
通过上面的用例分析图可知,发布文章的时候,封面小模块的正向用例最多,有4条,那么正向以封面小模块为主,就是4条正向用例,这4条用例要覆盖完其他小模块的所有正向用例。通过上面的用例分析图可知,发布文章的时候,逆向用例一共有8条,那么就是说发布文章模块一共有8条逆向测试用例。根据需求文档我们永远看到的是表现,这个表现的后面还有一些其他的东西没有表示的话,在进行测试的时候,你就应该加上去。例如需求是3000元以下的智能手机,能否开机就是隐性功能。软件在使用过程中有任何不符合需求文档预期的问题都叫软件的缺陷,简称bug。
从需求设计到发布上线,中间任何一个环节都可能是缺陷产生的原因。其中需求阶段是最重要的,需求阶段表述有歧义,木桶效应,一步错步步错,后面都会有缺陷。
其次是架构师的设计阶段,根据产品的需求设计软件的整体架构,软件有多少个数据,有多少个表,有多少个模块,都是由架构师去设计。
解决一个故障后还有可能产生缺陷。比如开发解决了一缺陷,在解决一个缺陷后,添加了这段代码,会影响C缺陷,或者D缺陷的出现。
严重程度和缺陷优先级别是不一样的,严重程度就相当于感冒和癌症,优先级是你什么时候解决,这个病什么时候治。
公司通常会开发自己的代码和缺陷管理平台,以满足特定的业务需求。同时,市场上也有许多开源的缺陷管理平台可供选择,例如禅道,PingCode,Worktile,SpiraTeam等。
吴灿锦,泰伯一百零一世孙,明朝开国名将安陆侯吴复的后代,吉林财经大学2019级本科生;
第九届中国国际“互联网+”创新创业大赛吉林省赛区金奖项目总负责人;
第十三届“挑战杯”中国大学生创业计划大赛吉林省赛区特等奖,国家级铜奖项目总负责人;
2022年荣获吉林财经大学创业实践国家级立项第一名项目总负责人。