一.软件测试
软件测试就是执行和运行软件的过程,其目的是为了发现软件功能和需求不相符合的地方,或者寻找实际输出和预期输出之间的差异。
软件测试是一个过程,在这个过程中测试人员在做对比,程序的执行结果和预期结果进行对比。
如果程序执行结果和预期结果不一样,此时软件有缺陷。
如果程序执行结果和预期结果一样,此时说明软件暂时没有问题的。
二.软件开发和软件测试的区别
1.岗位
1》工作内容
开发:软件实现(通过编程语言,go,Java,C,C++,python)
测试:开发人员实现的软件有没有缺陷
2》难度
开发:难度较高
测试:相应没有开发的难度高
低端测试人员泛滥,高端测试人员紧缺
3》技能要求 - 深度、广度
开发主要技术要求深度要求,开发人员需要写出高效的代码。
测试人员技能上广度的要求:业务能力,设计和架构分析能力,测试手段和工具使用,用户模型分析和理解,编程能力。测试人员需要对软件进行全方面的测试。
2.发展
软件开发:
初级开发工程师 -> 中级开发工程师 -> 高级开发工程师 -> 架构师 -> CTO
软件测试:
初级测试工程师 -> 中级测试工程师 -> 高级测试工程师 -> 架构师 -> 产品经理/项目经理
3.其他
压力,工作环境基本一致。
4.调试和测试的区别
1》角色
调试是由开发人员完成。
测试是由测试人员 + 开发人员执行(黑盒测试全部由测试人员完成,部分单元/集成测试,部分系统检测由开发人员完成)。
黑盒测试:将程序当成一个黑色盒子,测试人员不关心程序内部实现逻辑,通过一些科学的方法,向程序输入数据,检查输出结果是不是达到预期效果。
2》目的
调试的任务是发现问题并且解决程序中的问题。
测试的任务是发现程序中的缺陷
调试开发人员验证程序是不是实现了开发认为的软件特性。
测试是验证程序是否实现了用户预期的软件特性。
3》执行阶段
测试伴随整个软件开发生命周期。
调试一般在开发阶段。
4》方法
调试:打断点,打印日志,参考程序逻辑
测试:通过等价类划分,边界值,条件覆盖,语句覆盖
三.一个优秀的软件测试人员具备的素质
沟通能力:测试工程师的沟通能力会直接影响事务开展的效率。良好清晰的沟通能力,是一个技术优秀的测是 工程师是否可以获得更好发展的“敲门砖”。
快速学习的能力:对不同业务需求和功能的快速学习与理解能力。 对于测试新技术和新方法的学习能力。
责任感:测试往往是产品的最后一个检验者;测试的工作成效很难衡量,测试用例执行、bug数目的多少都无法说明产品是否能够交给用户使用。所以,责任感是最重要的测试必备素质之一。
压力:来自开发人员、用户、上级、自己的压力。测试人员的压力比想象中的要大。
思维模式
逆向思维:开发盖房子,测试拆房子。不走寻常路。
案例:手机中有两条通话记录,进行删除。删除为0后,继续删除。
发散性思维:探求多项答案
案例:测试一台自动售票机。正向,逆向,边界,压力,性能,耗电量,断电,没零钱.....