测试
1、谁为软件质量负责
1.1、什么是软件质量
不同的人对软件质量好坏的评判角度是不同的。宝玉老师参考的是文章《The Three Aspects of Software Quality: Functional,Structural, and Process》的作者David Chappell的观点,将软件质量分成了三个考量方面:功能质量、代码质量、过程质量。
功能质量 基础要求:满足用户需求。 质量指标:bug数量、性能、UI/UX
代码质量 代码质量主要体现在以下方面:
可维护性:在不影响稳定性的前提下,是否能方便地添加或修改现有的代码。可读性:代码是否容易理解,是否能快速上手。
执行效率安全性:是否有安全漏洞。可测试性:代码是否能使用单元测试、集成测试进行测试验证。
过程质量 软件开发过程的质量决定了项目能否如期完成,开发成本是都在预算之内。
1.2、谁为产品质量负责
产品质量是三方面共同决定的,所以软件质量也是多方共同负责的。
权责对等:责任和权力是需要对等的,比如让开发人员对开发过程负责,前提是他必须有权力去影响和控制开发过程,否则离开权力谈责任就是耍流氓。
根据项目中的角色的职责来分析:
软件测试:对功能质量负责。对产品进行测试验收,确保满足功能需求,通常不能对代码质量和过程质量负责开发人员:对代码质量负责,也可以写测试代码。通常对过程质量影响有限。项目负责人:对过程质量负责。一般不直接参与编码和测试,所以无法直接影响代码质量和功能质量。
总结:权责角度看,项目经理最应该对项目质量负责。从效果上看,开发人员对质量负责最有利。
1.3、如果做到“人人为产品质量负责”
只有真正在团队中建立了一种重视产品质量的文化,每个人才能确确实实地对质量负责。
落实到方法上:参考敏捷开发中的扁平化管理将团队拆小鼓励工种之间的融合制定响应的制度。
2、专职测试
2.1、软件测试的主要工作
在需求确认后对需求进行分析,然后做测试设计。之后简单总结就是:发现bug,报告bug,跟踪bug。
发现bug 测试人员设计的测试用例,要尽可能做到覆盖所有用户操作的可能,但理论上来说是不可能的,不过可以通过一些科学方法来通
过有限的测试用例,保证尽可能多的测试覆盖。
等价类划分:分类是有限的。边界值分析探索性测试:根据前面的测试结果,通过有效的策略进行测试。
其他的一些方法:
场景设计因果图错误推测法
报告bug bug跟踪系统和任务跟踪系统是一样的,也是需要提交ticket,说明bug内容,重现步骤、提供截图和日志等辅助信息。
跟踪bug 在验证修复后需要对整体进行回归测试。
2.2、什么样的公司需要专职测试
不需要专职测试的公司应该满足的要求:
大量优秀的工程师,可以同时兼任开发和测试有大量的自动化测试代码覆盖强大的发布和监控系统时间进度比较宽松用户对bug的容忍度比较高
大厂不设专职测试的启示:
自动化测试代替重复性的手工测试是必然趋势测试设计是软件测试人员的核心竞争力开发和测试更多融合是一种双赢
3、测试工具
在bug跟踪工具中,一个bug的基本信息包括:
标题描述:期望结果,实际结果和重新步骤等关键信息优先级指派人状态其他
一个bug的完整生命流程:
使用bug跟踪工具的注意事项:
所有bug都应该通过bug跟踪管理系统跟踪。不能把多条bug合并成一条描述清楚如何重新bug十分重要不要把bug跟踪系统当成谈论板使用。
bug跟踪工具:
BugZillaMantisBTRedmine
自动化测试工具:
SeleniumAppiumMacaca
压力测试工具:
Apache JMeter
LoadRunner
阿里云性能测试PTSWebPageTest
安全性能测试工具:
SqlmapAPPScane
浏览器兼容性测试工具
BrowseraBrowsleringTestRail飞蛾
测试用例管理工具:
4、如何应对安全问题
安全问题,本质上也是一种技术风险,没发生问题的时候一切都好,一旦发生就会有严重的影响。
软件中的安全问题来源主要可以分为三大类:
恶意输入假冒身份数据泄露:不能假设数据存储是安全的,而是要考虑到数据是有泄露的可能,提前做好预防措施,对敏感数据进行加密
如何预防软件中的安全问题:
需求阶段:确认需求,进行产品设计的时候,不仅要考虑到功能上的需求,还要同时考虑安全方面的要求。设计阶段:在架构设计方案评审时,增加安全方面的评审,确保有安全方面的考虑,确保技术方案切实可行。
攻击面最小化:尽量减少程序被用户直接访问到的部分。权限最小化:对于系统的用户、文件访问、进程运行等,都只能给与能拥有的最小权限。
纵深防御:从不同的维度去实施安全保护措施。编码规范中加入按安全相关的内容要有代码审查增加安全相关的自动化测试
如何解决安全问题:设立应急流程:出现问题后,第一时间按应急流程恢复生产。分析程序漏洞总结原因