测试用例制定的原则?
答:测试用例要包括欲测试的功能、应输入的数据和预期的输出结果。测试数据应该选用少量、高效的测 试数据进行尽可能完备的测试;基本目标是:设计一组发现某个错误或某类错误的测试数据,测试用 例应覆盖方面:
1、正确性测试:输入用户实际数据以验证系统是满足需求规格说明书的要求;测试用例中的测试点应首先保证要至少覆盖需求规格说明书中的各项功能,并且正常。
2、容错性(健壮性)测试:程序能够接收正确数据输入并且产生正确(预期)的输出, 输入非法数据(非法类型、不符合要求的数据、溢出数据等),程序应能给出提示 并进行相应处理。把自己想象成一名对产品操作一点也不懂的客户,在进行任意操作。
3、完整(安全)性测试:对未经授权的人使用软件系统或数据的企图,系统能够控制的程度,程序的数据处理能够保持外部信息(数据库或文件)的完整。
4、接口间测试:测试各个模块相互间的协调和通信情况,数据输入输出的一致性和正确性。
5、数据库测试:依据数据库设计规范对软件系统的数据库结构、数据表及其之间的数据调用关系进行测试。
6、边界值分析法:确定边界情况(刚好等于、稍小于和稍大于和刚刚大于等价类边界值),针对我们的系统在测试过程中主要输入一些合法数据/非法数据,主要在边界值附近选取。
7、压力测试:输入 10 条记录运行各个功能,输入 30 条记录运行,输入 50 条记录运行。。。进行测试。
8、等价划分:将所有可能的输入数据(有效的和无效的)划分成若干个等价类。
9、错误推测:主要是根据测试经验和直觉,参照以往的软件系统出现错误之处。
10、效率:完成预定的功能,系统的运行时间(主要是针对数据库而言)。
11、可理解(操作)性:理解和使用该系统的难易程度(界面友好性)。
12、可移植性:在不同操作系统及硬件配置情况下的运行性。
13、回归测试:按照测试用例将所有的测试点测试完毕,测试中发现的问题开发人员已经解决,进行下一轮的测试。
14、比较测试:将已经发版的类似产品或原有的老产品与测试的产品同时运行比较,或与已往的测试结果比较。
软件测试面试题:出现漏测了怎么办?
漏测不可怕,发现漏测了第一时间先复现问题找原因
在软件测试的过程中,如果出现漏测问题,应该采取以下步骤进行处理:
1.分析漏测原因
首先要对漏测问题进行分析,找到其根本原因。可能是人为疏忽、测试用例不全面或者测试方法不正确等原因导致的。
2.制定解决方案
根据漏测问题的原因,制定相应的解决方案。例如,加强测试用例编写、加强测试流程管理、完善测试工具等。
3.及时修复漏测问题
在发现漏测问题后,要及时进行修复。尽可能快地对漏测问题进行处理,避免影响后续测试工作。
4.做好回归测试
进行回归测试,以确保修复后的代码不会破坏其他功能或引入新的问题。
5.积极沟通
及时与其他团队成员、开发人员等相关人员进行沟通,共同解决漏测问题。通过有效的沟通,可以更好地协调各方工作,提高测试质量。
6.总结经验教训
针对漏测问题,不管是发布前还是发布后,都要进行总结经验教训,找出不足之处并加以改进。这样可以避免类似问题再次发生,不断提高软件测试质量。
避免漏测的措施有哪些?
为避免漏测问题,可以采取以下措施:
1.制定完整的测试计划和测试用例,包括功能测试、性能测试、安全测试等方面的测试,确保所有可能的缺陷均被覆盖。
2.针对每个测试用例编写详细的测试步骤和预期结果,使测试人员能够对每个功能点进行全面的测试。
3.在测试之前进行可靠性分析,识别潜在的缺陷并制定相应的测试策略。
4.进行多种测试方法的组合使用,如自动化测试、手动测试、静态代码分析等,以提高测试效率和测试质量。
5.加强对测试人员的培训,提高他们发现和解决问题的能力。
6.定期进行代码审查,以早期发现和修复潜在的缺陷。
7.合理分配测试资源,将更多精力集中在重要和风险较高的功能上。
简单描述内连接、左连接和右连接的区别?
答:
内连接:inner join,最常见的一种连接方式
左连接:也叫左外连接(left [outer] join)
右连接:也叫右外连接(right [outer] join)
全连接:full [outer] join ,MySQL不能直接支持。
区别:
左连接返回包括左表中的所有记录和右表中连接字段相等的记录;
右连接返回包括右表中的所有记录和左表中连接字段相等的记录;
内连接只返回两个表中连接字段相等的行;
全外连接返回左右表中所有的记录和左右表中连接字段相等的记录。
3.SQL题:自己创建薪水表:查找所有员工当前薪水情况。
答:1.创建薪水表:
drop table if exists `salaries` ;
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));
2.往薪水表中插入数据:
INSERT INTO salaries VALUES(10001,72527,'2002-06-22','9999-01-01');
INSERT INTO salaries VALUES(10002,72527,'2001-08-02','9999-01-01');
INSERT INTO salaries VALUES(10003,43311,'2001-12-01','9999-01-01');
3.思路讲解:
思路:题目要求只需要对salary用distinct进行去重,并按照salary降序排列即可。
参考答案1(distinct+order by)
SELECT distinct s.salary
FROM (
SELECT salary, to_date
FROM salaries
) s
WHERE s.to_date='9999-01-01'
ORDER BY s.salary DESC;
或者
select distinct salary
from salaries
where to_date='9999-01-01'
order by salary desc;
参考答案2(group by+order by)
select salary
from salaries
where to_date='9999-01-01'
group by salary
order by salary desc;
补充:WHERE语句在GROUP BY语句之前,SQL会在分组之前计算WHERE语句。HAVING语句在GROUP BY语句之后,SQL会在分组之后计算HAVING语句。
说明:对于distinct与group by的使用:
1.当对系统的性能高并且数据量大时使用group by
2.当对系统的性能不高时或者使用数据量少时两者借口
3.尽量使用group by