你应该如何测试软件?
理解用户
用户会购买你的产品吗?
一个设计的改变会带来有更多的注册吗?
用户会理解你的软件是如何工作的吗?
这些问题都无法通过对比你的软件是否满足规范来得到回答。相反,你需要经验知识:你需要观察当你的软件展现给用户时,用户真正做了什么操作。
相关的测试技术包括:
可用性测试
最低可行产品测试(《精益创业》)
A/B测试
理解运行时行为
你的软件在负载下的表现如何?
你的软件有资源竞争吗?
当有非法输入时,你的软件是否会崩溃?
这些问题不能总是通过比较你的软件是否符合规范来回答。一旦你的软件足够复杂,你无法完全理解或者预测它的回应。你需要观察它的实际运行来理解其行为。
相关的测试技术包括:
压力测试和浸泡测试
从产品日志中收集异常及跟踪信息
功能的正确性
你的软件是否真正符合规范?
你的软件是否做了它应该做的事?
很容易可以看到,自动化测试可以证明这些,但是请记住检查2+2等于5的单元测试。在更基本的层面上,软件可以在技术上满足规范,但是不能达到规范的目标。只有我们理解规范背后的含义,然后才能确定软件是否达到了目标。
相关的测试技术包括:
手动用户界面测试(如:QA人员使用您的网站)
代码审查
功能的稳定性
对于同样的输入,你的公开接口(API)是否总能返回相同的结果?
你的代码是否提供了它应该提供的保证?
人类很不擅长测试这些情况。人类非常容易忽略小的变化:如果一个按钮从“Send Now”改变为“Send now”,你可能根本就不会注意到。相反,如果你的接口从sendNow() 变为 send_now(),或者返回值的类型有轻微变化,你的软件就会崩溃。
这意味着一个公开接口,尤其是其他软件依赖的接口,为了保证正确性必须要稳定。当你不断更新你的测试时,为改变频繁的私有接口或者代码编写自动化测试,将会导致非常高的维护成本
相关的测试技术包括:
单元测试、集成测试和其他类似的自动化接口测试
自动化用户界面测试(如:网站的Selenium测试)
编译器检查和静态检查
如有疑问,请留言告知,或者咨询柠檬班软件测试培训机构:www.lemonban.com官网客服哦