ਲਾਭ:
- ਸੂਡੋ-ਭਰੋਸੇ ਦੇ ਤਿੰਨ ਚਿਹਰਿਆਂ ਨੂੰ ਪਛਾਣਨ ਦੀ ਸਮਰੱਥਾ (ਗ਼ੈਰ-ਅਵਿਸ਼ਵਾਸਯੋਗ, ਸਵੈ-ਦਾਅਵਾ, ਮਾਮੂਲੀ ਦਾਅਵਾ) ਅਤੇ ਐਂਟੀਡੋਟਸ ਲਾਗੂ ਕਰਨ ਦੀ ਸਮਰੱਥਾ
- ਟੂਲ ਜਾਂ ਹੱਥ ਦੁਆਰਾ ਪ੍ਰਤੀਸ਼ਤ ਕਵਰੇਜ ਨਾਲੋਂ ਗੁਣਵੱਤਾ ਦੇ ਵਧੇਰੇ ਸਹੀ ਮਾਪ ਵਜੋਂ ਪਰਿਵਰਤਨ ਜਾਂਚ ਅਤੇ ਪਰਿਵਰਤਨ ਸਕੋਰ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਯੋਗਤਾ
- ਟੈਸਟਿੰਗ ਦੇ ਵਿਰੁੱਧ ਇੱਕ ਲਾਲ ਟੀਮ ਦੇ ਰੂਪ ਵਿੱਚ AI ਦੀ ਸਥਿਤੀ ਅਤੇ ਪ੍ਰਸ਼ੰਸਾ ਦੇ ਜਾਲ ਵਿੱਚ ਫਸੇ ਬਿਨਾਂ ਕਮੀਆਂ ਦੀ ਜਾਂਚ ਕਰਨ ਦੀ ਸਮਰੱਥਾ
ਇਸ ਮੋਡੀਊਲ ਦੇ ਕੇਂਦਰ ਵਿੱਚ ਇੱਕ ਆਵਰਤੀ ਚੇਤਾਵਨੀ ਹੈ: ਇੱਕ ਹਰਾ ਚਮਕਦਾਰ ਟੈਸਟ ਪੈਨਲ ਗੁਣਵੱਤਾ ਦਾ ਸਬੂਤ ਨਹੀਂ ਹੈ। ਜੇਕਰ ਤੁਹਾਡੇ ਟੈਸਟ ਤੁਹਾਨੂੰ ਭਰੋਸਾ ਦਿੰਦੇ ਹਨ, ਤਾਂ ਤੁਹਾਨੂੰ ਇਹ ਜਾਣਨ ਦੀ ਜ਼ਰੂਰਤ ਹੁੰਦੀ ਹੈ ਕਿ ਕੀ ਉਹ ਵਿਸ਼ਵਾਸ ਅਸਲੀ ਹੈ ਜਾਂ ਨਕਲੀ। ਆਰਟੀਫੀਸ਼ੀਅਲ ਇੰਟੈਲੀਜੈਂਸ (AI) ਦੇ ਯੁੱਗ ਵਿੱਚ, ਇਹ ਸਵਾਲ ਪਹਿਲਾਂ ਨਾਲੋਂ ਕਿਤੇ ਵੱਧ ਨਾਜ਼ੁਕ ਹੈ, ਕਿਉਂਕਿ AI ਤਰਲ, ਨਿਰਵਿਘਨ ਦਿਖਣ ਵਾਲੇ ਪਰ ਖੋਖਲੇ ਟੈਸਟਾਂ ਨੂੰ ਪੈਦਾ ਕਰਨ ਵਿੱਚ ਮਾਹਰ ਹੈ। ਝੂਠਾ ਵਿਸ਼ਵਾਸ — ਸਾਫਟਵੇਅਰ ਨੂੰ ਸਹੀ ਮੰਨਣਾ ਕਿਉਂਕਿ ਟੈਸਟ ਹਰੇ ਹੁੰਦੇ ਹਨ, ਜਦੋਂ ਅਸਲ ਵਿੱਚ ਟੈਸਟ ਕਿਸੇ ਵੀ ਚੀਜ਼ ਦੀ ਪੁਸ਼ਟੀ ਨਹੀਂ ਕਰਦੇ—ਸਭ ਤੋਂ ਖ਼ਤਰਨਾਕ ਚੀਜ਼ ਹੈ ਜੋ ਕਿ QA ਟੀਮ ਨਾਲ ਹੋ ਸਕਦੀ ਹੈ; ਕਿਉਂਕਿ ਇਹ ਛੁਪਾਉਂਦਾ ਨਹੀਂ ਹੈ ਕਿ ਕੋਈ ਗਲਤੀਆਂ ਨਹੀਂ ਹਨ, ਪਰ ਇਹ ਕਿ ਤੁਸੀਂ ਗਲਤੀਆਂ ਨੂੰ ਨਹੀਂ ਦੇਖ ਸਕਦੇ. ਇਹ ਯੂਨਿਟ ਪੂਰੇ ਮੋਡੀਊਲ ਦੇ ਪ੍ਰਮਾਣਿਕਤਾ ਦਰਸ਼ਨ ਨੂੰ ਇੱਕ ਅਨੁਸ਼ਾਸਨ ਵਿੱਚ ਲਿਆਉਂਦਾ ਹੈ: ਤੁਹਾਡੇ ਟੈਸਟਾਂ ਦੀ ਜਾਂਚ ਕਰਨਾ।
ਟੈਸਟਿੰਗ ਦੀ ਗੁਣਵੱਤਾ ਨੂੰ ਮਾਪਣ ਲਈ ਸੋਨੇ ਦਾ ਮਿਆਰ: ਪਰਿਵਰਤਨ ਟੈਸਟਿੰਗ
ਇਹ ਸਮਝਣ ਦਾ ਸਭ ਤੋਂ ਸ਼ਕਤੀਸ਼ਾਲੀ ਤਰੀਕਾ ਹੈ ਕਿ ਕੀ ਇੱਕ ਟੈਸਟ ਅਸਲ ਵਿੱਚ ਪਰਿਵਰਤਨ ਜਾਂਚ ਦੀ ਰੱਖਿਆ ਕਰਦਾ ਹੈ ਜਾਂ ਨਹੀਂ (ਮਿਊਟੇਸ਼ਨ ਟੈਸਟਿੰਗ - ਇੱਕ ਤਕਨੀਕ ਜੋ ਸਰੋਤ ਕੋਡ ਵਿੱਚ ਜਾਣਬੁੱਝ ਕੇ ਛੋਟੀਆਂ ਵਿਗਾੜਾਂ/ਮਿਊਟੇਸ਼ਨਾਂ ਪੈਦਾ ਕਰਦੀ ਹੈ ਅਤੇ ਇਹ ਮਾਪਦੀ ਹੈ ਕਿ ਕੀ ਟੈਸਟ ਇਹਨਾਂ ਵਿਗਾੜਾਂ ਨੂੰ ਖੋਜਦੇ ਹਨ)। ਤਰਕ ਸਧਾਰਨ ਹੈ: ਜੇਕਰ ਤੁਸੀਂ ਜਾਣ-ਬੁੱਝ ਕੇ ਕੋਡ ਨੂੰ ਤੋੜਦੇ ਹੋ (a + into -, a > into >=, a true in false), ਇੱਕ ਚੰਗੇ ਟੈਸਟ ਸੂਟ ਨੂੰ ਉਸ ਭ੍ਰਿਸ਼ਟਾਚਾਰ ਨੂੰ ਫੜਨਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਲਾਲ ਹੋ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਜੇ ਅਜਿਹਾ ਨਹੀਂ ਹੁੰਦਾ, ਤਾਂ ਇਹ ਵਿਘਨ ਇੱਕ ਬਚਿਆ ਹੋਇਆ ਪਰਿਵਰਤਨਸ਼ੀਲ ਹੈ - ਇਸ ਲਈ ਤੁਹਾਡੇ ਟੈਸਟ ਅਸਲ ਵਿੱਚ ਉਸ ਵਿਵਹਾਰ ਨੂੰ ਸੁਰੱਖਿਅਤ ਨਹੀਂ ਕਰ ਰਹੇ ਹਨ।
ਪਰਿਵਰਤਨ ਅੰਕ = ਪਰਿਵਰਤਨ ਮਾਰਿਆ / ਕੁੱਲ ਪਰਿਵਰਤਨ। 90% ਲਾਈਨ ਕਵਰੇਜ ਵਾਲੇ ਪੈਕੇਜ ਵਿੱਚ 40% ਦਾ ਪਰਿਵਰਤਨ ਸਕੋਰ ਹੋ ਸਕਦਾ ਹੈ; ਇਹ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਲਾਈਨਾਂ ਕੰਮ ਕਰ ਰਹੀਆਂ ਹਨ ਪਰ ਵਿਵਹਾਰ ਦੀ ਪੁਸ਼ਟੀ ਨਹੀਂ ਕੀਤੀ ਗਈ ਹੈ. ਪਰਿਵਰਤਨ ਸਕੋਰ ਪ੍ਰਤੀਸ਼ਤ ਕਵਰੇਜ ਨਾਲੋਂ ਗੁਣਵੱਤਾ ਦਾ ਇੱਕ ਬਹੁਤ ਜ਼ਿਆਦਾ ਇਮਾਨਦਾਰ ਮਾਪ ਹੈ।
ਸੰਕੇਤ: ਇੱਥੇ ਆਟੋਮੈਟਿਕ ਮਿਊਟੇਸ਼ਨ ਟੂਲ ਹਨ (ਜਾਵਾ ਲਈ PIT/Pitest, JavaScript/TypeScript ਲਈ Stryker, .NET ਲਈ Stryker.NET, Python ਲਈ mutmut)। ਇਹ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਸੈਂਕੜੇ ਪਰਿਵਰਤਨ ਪੈਦਾ ਕਰਦੇ ਹਨ ਅਤੇ ਟੈਸਟ ਕਰਦੇ ਹਨ। ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਟੂਲ ਨਹੀਂ ਹੈ, ਤਾਂ ਨਾਜ਼ੁਕ ਕਾਰਜਾਂ ਲਈ ਮੈਨੂਅਲ "ਬ੍ਰੇਕ ਦਿ ਕੋਡ ਟੈਸਟ" ਵਿਧੀ ਵੀ ਅਨਮੋਲ ਹੈ।
ਸੂਡੋ-ਭਰੋਸੇ ਦੇ ਤਿੰਨ ਚਿਹਰੇ ਅਤੇ ਇਸਦਾ ਇਲਾਜ
ਸੂਡੋ-ਵਿਸ਼ਵਾਸ ਰੂਪ
ਲੱਛਣ
ਐਂਟੀਡੋਟ
ਬਿਨਾਂ ਦਾਅਵੇ ਦੇ ਟੈਸਟ ਕਰੋ
ਕੋਡ ਕੰਮ ਕਰਦਾ ਹੈ, ਕੁਝ ਵੀ ਪ੍ਰਮਾਣਿਤ ਨਹੀਂ ਹੈ
ਹਰ ਇਮਤਿਹਾਨ ਵਿੱਚ ਸੱਚਾ ਦਾਅਵਾ; ਪਰਿਵਰਤਨ ਨਾਲ ਟੈਸਟ
ਸਵੈ-ਪੁਸ਼ਟੀ ਟੈਸਟ
ਉਮੀਦ = ਕੋਡ ਦਾ ਆਉਟਪੁੱਟ
ਸੁਤੰਤਰ ਤੌਰ 'ਤੇ ਅਨੁਮਾਨਿਤ ਮੁੱਲ ਦੀ ਗਣਨਾ ਕਰੋ
ਮਾਮੂਲੀ ਦਾਅਵਾ
"ਨਲ ਨਹੀਂ", "200 ਵਾਪਸ ਆਏ"
ਵਪਾਰਕ ਨਿਯਮ/ਅਸਲ ਨਤੀਜਾ ਪ੍ਰਮਾਣਿਤ ਕਰੋ
ਉੱਚ ਸਕੋਪ ਭੁਲੇਖਾ
90% ਲਾਈਨਾਂ, ਘੱਟ ਸੁਰੱਖਿਆ
ਪਰਿਵਰਤਨ ਸਕੋਰ ਦੇਖੋ
ਨਾਜ਼ੁਕ ਟੈਸਟ ਸਹਿਣਸ਼ੀਲਤਾ
"ਫੇਰ ਫਸਿਆ, ਪਾਸ"
ਮੂਲ ਕਾਰਨ + ਨਿਰਣਾਇਕ ਜਾਂਚ
ਏਆਈ ਨੂੰ "ਲਾਲ ਟੀਮ" ਵਜੋਂ ਵਰਤਣਾ
AI ਸੂਡੋ-ਵਿਸ਼ਵਾਸ ਪੈਦਾ ਕਰ ਸਕਦਾ ਹੈ ਅਤੇ ਇਸਦਾ ਸ਼ਿਕਾਰ ਕਰਨ ਵਿੱਚ ਇੱਕ ਸ਼ਕਤੀਸ਼ਾਲੀ ਸਹਿਯੋਗੀ ਬਣ ਸਕਦਾ ਹੈ। ਆਪਣੇ ਖੁਦ ਦੇ ਟੈਸਟਾਂ ਦੇ ਵਿਰੁੱਧ ਇੱਕ ਲਾਲ ਟੀਮ ਦੇ ਤੌਰ 'ਤੇ AI ਦੀ ਵਰਤੋਂ ਕਰੋ: "ਕੋਡ ਲਿਖੋ ਜੋ ਇਹਨਾਂ ਟੈਸਟਾਂ ਨੂੰ ਪਾਸ ਕਰਦਾ ਹੈ ਪਰ ਗਲਤ ਹੈ" ਜਾਂ "ਇੱਕ ਅਜਿਹਾ ਬਦਲਾਵ ਲੱਭੋ ਜੋ ਇਹਨਾਂ ਟੈਸਟਾਂ ਨੂੰ ਮੂਰਖ ਬਣਾਵੇ।" ਜੇਕਰ AI ਤੁਹਾਡੇ ਟੈਸਟਾਂ ਵਿੱਚ ਕਮੀਆਂ ਲੱਭਦਾ ਹੈ, ਤਾਂ ਉਹ ਕਮੀਆਂ ਅਸਲ ਜੋਖਮ ਹਨ।
ਸਾਵਧਾਨ: AI ਨੂੰ ਨਾ ਪੁੱਛੋ "ਕੀ ਮੇਰੇ ਟੈਸਟ ਦੀ ਗੁਣਵੱਤਾ ਚੰਗੀ ਹੈ?" ਅਤੇ ਭਰੋਸੇ ਵਜੋਂ ਜਵਾਬ "ਹਾਂ, ਬਹੁਤ ਵਧੀਆ" ਲਓ। AI ਦਿਆਲੂ ਹੁੰਦਾ ਹੈ। ਇਸ ਦੀ ਬਜਾਏ, AI ਨੂੰ ਇੱਕ ਠੋਸ ਕੰਮ ਲਈ ਚੁਣੌਤੀ ਦਿਓ: "ਇੱਕ ਬੱਗ ਪੈਦਾ ਕਰੋ ਜੋ ਇਹਨਾਂ ਟੈਸਟਾਂ ਨੂੰ ਪਾਸ ਕਰਦਾ ਹੈ।" ਜੇ ਇਹ ਇਸਨੂੰ ਪੈਦਾ ਕਰ ਸਕਦਾ ਹੈ, ਤਾਂ ਤੁਹਾਡੇ ਟੈਸਟ ਉਸ ਗਲਤੀ ਲਈ ਅੰਨ੍ਹੇ ਹਨ।
ਬਰਾਬਰ ਪਰਿਵਰਤਨ ਅਤੇ ਸਕੋਰ ਦੀਆਂ ਸੀਮਾਵਾਂ
ਪਰਿਵਰਤਨ ਜਾਂਚ ਸ਼ਕਤੀਸ਼ਾਲੀ ਹੈ, ਪਰ ਇਸਦਾ ਇੱਕ ਕੈਚ ਹੈ: ਕੁਝ ਪਰਿਵਰਤਨ ਕੋਡ ਦੇ ਵਿਵਹਾਰ ਨੂੰ ਬਿਲਕੁਲ ਨਹੀਂ ਬਦਲਦੇ ਹਨ। ਇਹਨਾਂ ਨੂੰ ਸਮਾਨ ਪਰਿਵਰਤਨ ਕਿਹਾ ਜਾਂਦਾ ਹੈ (ਬਰਾਬਰ ਪਰਿਵਰਤਨਸ਼ੀਲ — ਨਿਕਾਰਾ ਕੋਡ, ਪਰਿਵਰਤਨ ਜੋ ਅਸਲ ਦੇ ਬਰਾਬਰ ਨਤੀਜਾ ਪੈਦਾ ਕਰਦਾ ਹੈ)। ਉਦਾਹਰਨ ਲਈ, ਇੱਕ ਵੇਰੀਏਬਲ ਦੇ ਸ਼ੁਰੂਆਤੀ ਮੁੱਲ ਨੂੰ ਬਦਲਣਾ ਜੋ ਕਦੇ ਨਹੀਂ ਵਰਤਿਆ ਜਾਂਦਾ, ਆਉਟਪੁੱਟ ਨੂੰ ਪ੍ਰਭਾਵਤ ਨਹੀਂ ਕਰਦਾ; ਕੋਈ ਟੈਸਟ ਇਸ ਨੂੰ ਫੜ ਨਹੀਂ ਸਕਦਾ ਹੈ ਅਤੇ ਨਾ ਹੀ ਇਸ ਨੂੰ ਫੜਨਾ ਚਾਹੀਦਾ ਹੈ। ਇਸ ਲਈ, ਇੱਕ 100% ਪਰਿਵਰਤਨ ਸਕੋਰ ਅਕਸਰ ਅਭਿਆਸ ਵਿੱਚ ਅਪ੍ਰਾਪਤ ਹੁੰਦਾ ਹੈ ਅਤੇ ਟੀਚਾ ਨਹੀਂ ਹੁੰਦਾ ਹੈ। ਹੱਥਾਂ ਨਾਲ ਬਰਾਬਰ ਦੇ ਪਰਿਵਰਤਨ ਨੂੰ ਬਾਹਰ ਕੱਢਣਾ ਬਹੁਤ ਮਿਹਨਤ ਵਾਲਾ ਹੈ; ਇਸ ਲਈ ਪਰਿਵਰਤਨ ਸਕੋਰ ਨੂੰ ਇੱਕ ਪੂਰਨ ਪ੍ਰੀਖਿਆ ਸਕੋਰ ਵਜੋਂ ਨਾ ਪੜ੍ਹੋ, ਪਰ "ਕੀ ਮੇਰੇ ਟੈਸਟ ਅਸਲ ਵਿੱਚ ਸੁਰੱਖਿਆ ਕਰਦੇ ਹਨ?" ਦੇ ਇੱਕ ਇਮਾਨਦਾਰ ਸੂਚਕ ਵਜੋਂ ਪੜ੍ਹੋ।
ਵਿਹਾਰਕ ਪਹੁੰਚ ਇਹ ਹੈ: ਪੂਰੇ ਕੋਡ ਬੇਸ ਵਿੱਚ ਲਗਾਤਾਰ ਪਰਿਵਰਤਨ ਜਾਂਚ ਚਲਾਉਣ ਦੀ ਬਜਾਏ, ਇਸਨੂੰ ਉਹਨਾਂ ਮੋਡੀਊਲਾਂ 'ਤੇ ਚਲਾਓ ਜਿਸ ਵਿੱਚ ਸਭ ਤੋਂ ਵੱਧ ਜੋਖਮ ਅਤੇ ਸਭ ਤੋਂ ਗੁੰਝਲਦਾਰ ਵਪਾਰਕ ਨਿਯਮ ਹਨ। ਇਹਨਾਂ ਮੋਡੀਊਲਾਂ ਵਿੱਚ ਇੱਕ-ਇੱਕ ਕਰਕੇ ਬਚੇ ਹੋਏ ਪਰਿਵਰਤਨ ਦੀ ਜਾਂਚ ਕਰੋ; ਜੇ ਇਹ ਇੱਕ ਅਸਲੀ ਪਾੜਾ ਹੈ, ਤਾਂ ਇੱਕ ਟੈਸਟ ਜੋੜੋ; ਜੇਕਰ ਇਹ ਇੱਕ ਸਮਾਨ ਪਰਿਵਰਤਨ ਹੈ, ਤਾਂ ਇਸਨੂੰ ਜਾਇਜ਼ ਠਹਿਰਾਓ ਅਤੇ ਪਾਸ ਕਰੋ। AI ਇਹ ਮੁਲਾਂਕਣ ਕਰਨ ਲਈ ਸ਼ੁਰੂਆਤੀ ਸਕ੍ਰੀਨਿੰਗ ਕਰ ਸਕਦਾ ਹੈ ਕਿ ਕੀ ਇੱਕ ਜੀਵਿਤ ਪਰਿਵਰਤਨ ਬਰਾਬਰ ਹੈ; ਪਰ ਅੰਤਿਮ ਫੈਸਲਾ ਤੁਹਾਡੇ ਦੁਆਰਾ ਲਿਆ ਜਾਂਦਾ ਹੈ ਜੋ ਜਾਣਦੇ ਹਨ ਕਿ ਕੋਡ ਕੀ ਕਰਦਾ ਹੈ।
ਸਾਵਧਾਨ: ਪਰਿਵਰਤਨ ਜਾਂਚ ਗਣਨਾਤਮਕ ਤੌਰ 'ਤੇ ਮਹਿੰਗੀ ਹੈ (ਹਰੇਕ ਪਰਿਵਰਤਨ ਲਈ ਸਾਰੇ ਸੰਬੰਧਿਤ ਟੈਸਟ ਦੁਬਾਰਾ ਚਲਾਏ ਜਾਂਦੇ ਹਨ)। ਇਸ ਲਈ ਇੱਕ ਆਮ ਅਤੇ ਵਾਜਬ ਰਣਨੀਤੀ ਇਹ ਹੈ ਕਿ ਇਸਨੂੰ ਹਰ ਇੱਕ ਅਭੇਦ ਦੀ ਬਜਾਏ ਇੱਕ ਹਫਤਾਵਾਰੀ ਜਾਂ ਪੂਰਵ-ਰਿਲੀਜ਼ ਦੇ ਨਾਜ਼ੁਕ ਮੋਡਿਊਲਾਂ ਲਈ ਡੂੰਘੀ ਜਾਂਚ ਦੇ ਰੂਪ ਵਿੱਚ ਤਹਿ ਕਰਨਾ ਹੈ।
ਕਮਜ਼ੋਰ ਪ੍ਰੋਂਪਟ / ਮਜ਼ਬੂਤ ਪ੍ਰੋਂਪਟ
ਕਮਜ਼ੋਰ: "ਕੀ ਮੇਰੇ ਟੈਸਟ ਕਾਫ਼ੀ ਹਨ?"
ਮਜਬੂਤ: "ਇਸ ਫੰਕਸ਼ਨ ਅਤੇ ਟੈਸਟ ਸੂਟ ਲਈ ਇੱਕ ਲਾਲ ਟੀਮ ਵਜੋਂ ਕੰਮ ਕਰੋ। (1) ਕੋਡ ਵਿੱਚ 8 ਮਿਊਟੇਸ਼ਨ ਤਿਆਰ ਕਰੋ ਜੋ ਕਿ ਖਤਮ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ (ਓਪਰੇਟਰ ਬਦਲ, ਸੀਮਾ ਸ਼ਿਫਟ, ਕੰਡੀਸ਼ਨ ਇਨਵਰਸ਼ਨ, ਰਿਟਰਨ ਵੈਲਯੂ ਬਦਲ)। (2) ਹਰੇਕ ਪਰਿਵਰਤਨ ਲਈ, ਇਹ ਦੱਸੋ ਕਿ ਮੌਜੂਦਾ ਟੈਸਟਾਂ ਵਿੱਚੋਂ ਕਿਹੜਾ ਇਸਨੂੰ ਫੜੇਗਾ ਅਤੇ ਕਿਹੜਾ ਨਹੀਂ। (3) ਇਹ ਹਰ ਇੱਕ ਟੈਸਟ ਲਈ ਨਵਾਂ ਲਿਖ ਦੇਵੇਗਾ। (4) ਇਹ ਵੀ ਦਿਖਾਓ ਕਿ ਕੀ ਤੁਸੀਂ ਇੱਕ ਕੋਡ ਉਦਾਹਰਨ ਪੇਸ਼ ਕਰ ਸਕਦੇ ਹੋ ਜੋ ਇਹਨਾਂ ਸਾਰੇ ਟੈਸਟਾਂ ਨੂੰ ਪਾਸ ਕਰਦਾ ਹੈ ਪਰ ਵਪਾਰਕ ਕੋਡ + ਟੈਸਟਾਂ ਦੀ ਉਲੰਘਣਾ ਕਰਦਾ ਹੈ: [ਪੇਸਟ]"
ਸ਼ਕਤੀਸ਼ਾਲੀ ਪ੍ਰੋਂਪਟ; ਇਹ AI ਨੂੰ ਇੱਕ ਟੈਸਟ ਤੋੜਨ ਵਾਲੇ ਪਰੀਖਿਅਕ ਵਜੋਂ ਰੱਖਦਾ ਹੈ, ਨਾ ਕਿ ਇੱਕ ਪ੍ਰਸ਼ੰਸਾ ਮਸ਼ੀਨ।
ਚਾਰ ਕਾਪੀ ਕਰਨ ਯੋਗ ਟੈਂਪਲੇਟ
1) ਮੈਨੁਅਲ ਪਰਿਵਰਤਨ ਨਿਯੰਤਰਣ:
ਇਸ ਕੋਡ ਲਈ 8 ਮਹੱਤਵਪੂਰਨ ਪਰਿਵਰਤਨ (ਮਾਮੂਲੀ ਜਾਣਬੁੱਝ ਕੇ ਰੁਕਾਵਟਾਂ) ਤਿਆਰ ਕਰੋ: ਅੰਕਗਣਿਤ ਓਪਰੇਟਰ ਬਦਲ, ਤੁਲਨਾ ਸੀਮਾ (> ਬਨਾਮ >=), ਲਾਜ਼ੀਕਲ ਉਲਟ, ਵਾਪਸੀ/ਸਥਿਰ ਬਦਲ, ਸਥਿਤੀ ਛੱਡਣਾ। ਹਰੇਕ ਪਰਿਵਰਤਨ ਲਈ, ਭਵਿੱਖਬਾਣੀ ਕਰੋ ਕਿ ਉਪਲਬਧ ਟੈਸਟਾਂ ਵਿੱਚੋਂ ਕਿਹੜਾ ਇਸਨੂੰ ਫੜੇਗਾ ਜਾਂ ਨਹੀਂ। ਕੋਡ + ਟੈਸਟ: [ਪੇਸਟ]
2) ਬਚੇ ਹੋਏ ਪਰਿਵਰਤਨ ਨੂੰ ਮਾਰਨਾ:
ਨਿਮਨਲਿਖਤ ਪਰਿਵਰਤਨ ਜਾਂਚ ਰਿਪੋਰਟ ਵਿੱਚ ਬਚੇ ਹੋਏ (ਅਣਪੜ੍ਹੇ) ਪਰਿਵਰਤਨ ਸ਼ਾਮਲ ਹਨ: [ਸੂਚੀ/ਰਿਪੋਰਟ]। ਹਰੇਕ ਲਈ, ਇੱਕ ਘੱਟੋ-ਘੱਟ ਟੈਸਟ ਲਿਖੋ ਜੋ ਉਸ ਪਰਿਵਰਤਨ ਨੂੰ ਖਤਮ ਕਰ ਦੇਵੇਗਾ (ਇਸ ਤਰੀਕੇ ਨਾਲ ਟੁੱਟਣ 'ਤੇ ਕੋਡ ਲਾਲ ਹੋ ਜਾਵੇਗਾ)। ਟੈਸਟ ਕਿਸ ਵਿਵਹਾਰ ਦੀ ਪੁਸ਼ਟੀ ਕਰਦਾ ਹੈ 'ਤੇ ਟਿੱਪਣੀ ਕਰੋ।
3) ਲਾਲ ਟੀਮ - ਖੂਨ ਦੀ ਜਾਂਚ:
ਕੀ ਤੁਸੀਂ ਕੋਡ ਲਿਖ ਸਕਦੇ ਹੋ ਜੋ ਹੇਠਾਂ ਦਿੱਤੇ ਸਾਰੇ ਟੈਸਟਾਂ ਨੂੰ ਪਾਸ ਕਰਦਾ ਹੈ, ਪਰ ਹੇਠਾਂ ਦਿੱਤੇ ਵਪਾਰਕ ਨਿਯਮ ਦੀ ਉਲੰਘਣਾ ਕਰਦਾ ਹੈ: [ਕਾਰੋਬਾਰੀ ਨਿਯਮ]। ਜੇਕਰ ਅਜਿਹਾ ਹੈ, ਤਾਂ ਇਹਨਾਂ ਟੈਸਟਾਂ ਵਿੱਚ ਕਿਹੜੀ ਕਮੀ ਇਸਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੀ ਹੈ? ਟੈਸਟ ਸ਼ਾਮਲ ਕਰੋ ਜੋ ਉਸ ਕਮੀ ਨੂੰ ਬੰਦ ਕਰ ਦੇਵੇਗਾ। ਟੈਸਟ: [ਪੇਸਟ]
4) ਟੈਸਟ ਗੁਣਵੱਤਾ ਨਿਰੀਖਣ:
ਗੁਣਵੱਤਾ ਲਈ ਇਸ ਟੈਸਟ ਸੂਟ ਦੀ ਜਾਂਚ ਕਰੋ। ਹਰੇਕ ਟੈਸਟ ਲਈ ਟਿਕ ਕਰੋ:- ਕੀ ਕੋਈ ਸੱਚਾ ਦਾਅਵਾ ਹੈ ਜਾਂ ਕੀ ਇਹ ਪ੍ਰੋਪਸ ਹੈ?- ਕੀ ਸੰਭਾਵਿਤ ਮੁੱਲ ਸੁਤੰਤਰ, ਕੋਡ ਤੋਂ ਲਿਆ ਗਿਆ ਹੈ?- ਕੀ ਇਹ ਵਪਾਰਕ ਨਿਯਮ ਜਾਂ ਮਾਮੂਲੀ ਚੀਜ਼ ਦੀ ਪੁਸ਼ਟੀ ਕਰਦਾ ਹੈ? ਅੰਤ ਵਿੱਚ ਇੱਕ ਅੰਦਾਜ਼ਨ "ਸੱਚਾ ਦਾਅਵਾ ਸਕੋਰ" ਅਤੇ 3 ਸਭ ਤੋਂ ਕਮਜ਼ੋਰ ਟੈਸਟ ਦਿਓ। ਟੈਸਟ: [ਪੇਸਟ]
ਤਿੰਨ ਛੋਟੇ ਕੇਸ
ਕੇਸ 1 - ਕਵਰੇਜ 92%, ਪਰਿਵਰਤਨ ਸਕੋਰ 38%। ਇੱਕ ਟੀਮ ਉੱਚ ਕਵਰੇਜ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ। ਜਦੋਂ ਮਿਊਟੇਸ਼ਨ ਟੈਸਟਿੰਗ ਸਟ੍ਰਾਈਕਰ ਨਾਲ ਚਲਾਈ ਗਈ ਸੀ, ਤਾਂ ਸਕੋਰ 38% ਸੀ: ਪੈਦਾ ਹੋਏ ਬਹੁਤੇ ਪਰਿਵਰਤਨ ਬਚ ਗਏ। ਇਹ ਇਸ ਗੱਲ ਦਾ ਸਬੂਤ ਸੀ ਕਿ ਟੈਸਟ ਲਾਈਨਾਂ ਨੂੰ ਨਹੀਂ ਚਲਾ ਰਹੇ ਸਨ ਅਤੇ ਵਿਵਹਾਰ ਦੀ ਪੁਸ਼ਟੀ ਕਰ ਰਹੇ ਸਨ. ਟੀਮ ਨੇ ਗੁਣਵੱਤਾ ਦੀ ਜਾਂਚ ਕਰਨ ਵਿੱਚ ਤਿੰਨ ਹਫ਼ਤਿਆਂ ਦਾ ਨਿਵੇਸ਼ ਕੀਤਾ; ਪਰਿਵਰਤਨ ਸਕੋਰ 81% ਤੱਕ ਵਧ ਗਿਆ, ਅਤੇ ਅਗਲੀ ਰੀਲੀਜ਼ ਵਿੱਚ ਇਹਨਾਂ ਬੀਫਡ-ਅੱਪ ਟੈਸਟਾਂ ਦੁਆਰਾ ਦੋ ਅਸਲ ਗਣਨਾ ਦੀਆਂ ਗਲਤੀਆਂ ਫੜੀਆਂ ਗਈਆਂ।
ਕੇਸ 2 - ਏਆਈ ਨੇ ਟੈਸਟ ਨੂੰ ਧੋਖਾ ਦਿੱਤਾ। ਇੱਕ "ਲਾਲ ਟੀਮ" ਟੈਂਪਲੇਟ ਦੇ ਨਾਲ, ਇੱਕ ਮਾਹਰ ਨੇ ਏਆਈ ਨੂੰ ਕੋਡ ਲਈ ਕਿਹਾ ਜੋ ਮੌਜੂਦਾ ਟੈਸਟ ਪਾਸ ਕਰਦਾ ਹੈ ਪਰ ਛੂਟ ਦੇ ਨਿਯਮ ਦੀ ਉਲੰਘਣਾ ਕਰਦਾ ਹੈ। AI ਨੇ ਕੋਡ ਲਿਖਿਆ ਜੋ ਹਮੇਸ਼ਾ ਜ਼ੀਰੋ ਦੀ ਛੋਟ ਦਿੰਦਾ ਹੈ — ਅਤੇ ਸਾਰੇ ਟੈਸਟ ਹਰੇ ਰਹੇ ਕਿਉਂਕਿ ਕੋਈ ਵੀ ਟੈਸਟ ਅਸਲ ਛੋਟ ਮੁੱਲ ਦੀ ਪੁਸ਼ਟੀ ਨਹੀਂ ਕਰ ਰਿਹਾ ਸੀ। ਪਾੜਾ ਦੇਖਿਆ ਗਿਆ, ਅਸਲ ਦਾਅਵੇ ਸ਼ਾਮਲ ਕੀਤੇ ਗਏ।
ਕੇਸ 3 - ਪ੍ਰਸ਼ੰਸਾ ਦਾ ਜਾਲ। ਇੱਕ ਜੂਨੀਅਰ ਟੈਸਟਰ ਨੇ AI ਨੂੰ ਪੁੱਛਿਆ, "ਕੀ ਮੇਰੇ ਟੈਸਟ ਚੰਗੇ ਹਨ?" ਅਤੇ ਜਵਾਬ ਸੁਣ ਕੇ ਰਾਹਤ ਮਿਲੀ, "ਬਹੁਤ ਵਿਆਪਕ।" ਉਸਦੇ ਸੀਨੀਅਰ ਸਹਿਯੋਗੀ ਨੇ "ਟੈਸਟ ਕੁਆਲਿਟੀ ਆਡਿਟ" ਟੈਂਪਲੇਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਆਡਿਟ ਕੀਤੇ ਉਹੀ ਟੈਸਟ ਕੀਤੇ ਸਨ; ਇਹ ਪਤਾ ਚਲਿਆ ਕਿ 20 ਵਿੱਚੋਂ 12 ਟੈਸਟ ਸਜਾਵਟ ਸਨ (ਬਿਨਾਂ ਦਾਅਵਾ ਜਾਂ ਕਬਾੜ ਦੇ)। ਸਹੀ ਸਵਾਲ ਨੇ ਸਹੀ ਜਵਾਬ ਲਿਆਇਆ।
ਆਮ ਗਲਤੀਆਂ
- ਗੁਣਵੱਤਾ ਲਈ ਗੁੰਝਲਦਾਰ ਗੁੰਜਾਇਸ਼. ਉੱਚ ਕਤਾਰ ਦੇ ਕਵਰੇਜ 'ਤੇ ਭਰੋਸਾ ਕਰਨਾ ਅਤੇ ਪਰਿਵਰਤਨ ਸਕੋਰ ਨੂੰ ਬਿਲਕੁਲ ਵੀ ਨਹੀਂ ਵੇਖਣਾ।
- AI ਦੀ ਉਸਤਤ 'ਤੇ ਭਰੋਸਾ ਕਰਨਾ. ਪੁੱਛਣਾ "ਕੀ ਤੁਹਾਡੇ ਟੈਸਟ ਚੰਗੇ ਹਨ?" ਅਤੇ ਸਕਾਰਾਤਮਕ ਜਵਾਬ ਨੂੰ ਭਰੋਸੇ ਵਜੋਂ ਸਮਝਣਾ।
- ਕੋਡ ਤੋਂ ਅਨੁਮਾਨਿਤ ਮੁੱਲ ਪ੍ਰਾਪਤ ਕਰਨਾ। ਸਵੈ-ਤਸਦੀਕ ਕਰਨ ਵਾਲੇ ਟੈਸਟ ਜੋ ਨੁਕਸਦਾਰ ਕੋਡ ਦੀ ਪੁਸ਼ਟੀ ਕਰਦੇ ਹਨ।
- ਮਾਮੂਲੀ ਦਾਅਵੇ ਨਾਲ ਸੰਤੁਸ਼ਟ ਰਹੋ. ਉਹ ਜਾਂਚਾਂ ਜੋ ਅਸਲ ਨਿਯਮ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਨਹੀਂ ਕਰਦੀਆਂ, ਜਿਵੇਂ ਕਿ "ਨਲ ਨਹੀਂ", "200 ਵਾਪਸ ਆਏ"।
- ਬਚੇ ਹੋਏ ਪਰਿਵਰਤਨ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਨਾ। ਇੰਤਕਾਲ ਰਿਪੋਰਟ ਵਿੱਚ ਜੋ ਨਹੀਂ ਫੜਿਆ ਗਿਆ ਸੀ ਉਸਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਨਾ।
- ਨਾਜ਼ੁਕ ਕੋਡ ਨੂੰ ਹੱਥੀਂ ਬਦਲਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਵੀ ਨਹੀਂ ਕਰ ਰਿਹਾ। ਜੇ ਟੂਲ ਉਪਲਬਧ ਨਹੀਂ ਹੈ ਤਾਂ "ਕੋਡ ਤੋੜੋ ਅਤੇ ਟੈਸਟ ਕਰੋ" ਪੜਾਅ ਨੂੰ ਛੱਡਣਾ।
ਸਾਰੰਸ਼ ਵਿੱਚ
ਸੂਡੋ-ਟਰੱਸਟ ਵਿਸ਼ਵਾਸ ਕਰ ਰਿਹਾ ਹੈ ਕਿ ਸੌਫਟਵੇਅਰ ਸਹੀ ਹੈ ਕਿਉਂਕਿ ਟੈਸਟ ਹਰੇ ਹਨ; ਜਦੋਂ ਕਿ ਟੈਸਟ ਕਿਸੇ ਵੀ ਚੀਜ਼ ਦੀ ਪੁਸ਼ਟੀ ਨਹੀਂ ਕਰ ਸਕਦੇ ਹਨ। ਇਸ ਨੂੰ ਮਾਪਣ ਲਈ ਸੋਨੇ ਦਾ ਮਿਆਰ ਪਰਿਵਰਤਨ ਟੈਸਟਿੰਗ ਹੈ: ਜਾਣਬੁੱਝ ਕੇ ਕੋਡ ਨੂੰ ਤੋੜਨਾ ਅਤੇ ਮਾਪਣਾ ਕਿ ਕੀ ਟੈਸਟ ਇਸ ਨੂੰ ਫੜਦੇ ਹਨ। ਪਰਿਵਰਤਨ ਸਕੋਰ ਪ੍ਰਤੀਸ਼ਤ ਕਵਰੇਜ ਨਾਲੋਂ ਗੁਣਵੱਤਾ ਦਾ ਇੱਕ ਬਹੁਤ ਜ਼ਿਆਦਾ ਇਮਾਨਦਾਰ ਮਾਪ ਹੈ। AI ਦੋਵੇਂ ਸੂਡੋ-ਵਿਸ਼ਵਾਸ ਪੈਦਾ ਕਰਦੇ ਹਨ ਅਤੇ ਇਸਦਾ ਸ਼ਿਕਾਰ ਕਰਨ ਵਿੱਚ ਇੱਕ ਸ਼ਕਤੀਸ਼ਾਲੀ ਲਾਲ ਟੀਮ ਬਣ ਜਾਂਦੇ ਹਨ — ਪੁੱਛੋ "ਇੱਕ ਬੱਗ ਪੈਦਾ ਕਰੋ ਜੋ ਇਹਨਾਂ ਟੈਸਟਾਂ ਨੂੰ ਪਾਸ ਕਰਦਾ ਹੈ।" ਆਪਣੇ ਟੈਸਟਾਂ ਦੀ ਜਾਂਚ ਕਰੋ: ਸੱਚਾ ਦਾਅਵਾ, ਸੁਤੰਤਰ ਅਨੁਮਾਨਿਤ ਮੁੱਲ, ਵਪਾਰਕ ਨਿਯਮ ਪ੍ਰਮਾਣਿਕਤਾ, ਅਤੇ ਮਰੇ ਹੋਏ ਪਰਿਵਰਤਨ।
ਐਪਲੀਕੇਸ਼ਨ ਦਾ ਕੰਮ
ਇੱਕ ਫੰਕਸ਼ਨ ਆਯਾਤ ਕਰੋ ਜਿਸ ਵਿੱਚ ਇੱਕ ਕਾਰੋਬਾਰੀ ਨਿਯਮ ਅਤੇ ਇਸਦੇ ਟੈਸਟ ਤੁਹਾਡੇ ਆਪਣੇ ਪ੍ਰੋਜੈਕਟ ਤੋਂ ਹਨ। ਜੇਕਰ ਸੰਭਵ ਹੋਵੇ, ਤਾਂ ਇੱਕ ਪਰਿਵਰਤਨ ਸੰਦ ਚਲਾਓ (ਸਟਰਾਈਕਰ/ਪੀਟੈਸਟ/ਮਟਮਟ) ਅਤੇ ਪਰਿਵਰਤਨ ਸਕੋਰ ਨੂੰ ਮਾਪੋ; ਜੇਕਰ ਕੋਈ ਟੂਲ ਨਹੀਂ ਹੈ, ਤਾਂ "ਮੈਨੂਅਲ ਮਿਊਟੇਸ਼ਨ ਕੰਟਰੋਲ" ਟੈਂਪਲੇਟ ਨਾਲ ਘੱਟੋ-ਘੱਟ 8 ਮਿਊਟੇਸ਼ਨ ਤਿਆਰ ਕਰੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਹੱਥੀਂ ਅਜ਼ਮਾਓ। ਹਰੇਕ ਬਚੇ ਹੋਏ ਪਰਿਵਰਤਨ ਲਈ, "ਕਿੱਲ ਸਰਵਾਈਵਿੰਗ ਮਿਊਟੇਸ਼ਨ" ਟੈਮਪਲੇਟ ਨਾਲ ਇੱਕ ਨਵਾਂ ਟੈਸਟ ਲਿਖੋ। ਅੰਤ ਵਿੱਚ, "ਲਾਲ ਟੀਮ" ਪੈਟਰਨ ਦੇ ਨਾਲ, ਵੇਖੋ ਕਿ ਕੀ AI ਕੋਡ ਤਿਆਰ ਕਰ ਸਕਦਾ ਹੈ ਜੋ ਤੁਹਾਡੇ ਟੈਸਟਾਂ ਨੂੰ ਮੂਰਖ ਬਣਾਉਂਦਾ ਹੈ। ਆਪਣੇ ਸ਼ੁਰੂਆਤੀ ਅਤੇ ਸਮਾਪਤੀ ਪਰਿਵਰਤਨ ਸਕੋਰ (ਜਾਂ ਫੜੀ ਗਈ/ਕੁੱਲ ਪਰਿਵਰਤਨ ਦਰ) ਦੀ ਰਿਪੋਰਟ ਕਰੋ।
ਚੈੱਕਲਿਸਟ
- [ ] ਮੈਂ ਪਰਿਵਰਤਨ ਸਕੋਰ ਦੁਆਰਾ ਟੈਸਟ ਦੀ ਗੁਣਵੱਤਾ ਦਾ ਮੁਲਾਂਕਣ ਕੀਤਾ, ਕਵਰੇਜ ਦੁਆਰਾ ਨਹੀਂ।
- [ ] ਮੈਂ ਨਾਜ਼ੁਕ ਕੋਡ ਲਈ ਮਿਊਟੇਸ਼ਨ ਟੈਸਟਿੰਗ (ਜਾਂ ਤਾਂ ਟੂਲ ਜਾਂ ਹੱਥੀਂ) ਚਲਾਈ।
- ਮੈਂ ਹਰੇਕ ਬਚੇ ਹੋਏ ਪਰਿਵਰਤਨ ਲਈ ਨਵੇਂ ਟੈਸਟ ਲਿਖੇ ਹਨ।
- [ ] ਮੈਂ AI ਦੀ ਵਰਤੋਂ ਲਾਲ ਟੀਮ ਵਜੋਂ ਕੀਤੀ ਅਤੇ ਮੇਰੇ ਟੈਸਟਾਂ ਵਿੱਚ ਕਮੀਆਂ ਦੀ ਖੋਜ ਕੀਤੀ।
- ਮੈਂ AI ਦੀ "ਤੁਹਾਡੇ ਟੈਸਟ ਚੰਗੇ ਹਨ" ਦੀ ਪ੍ਰਸ਼ੰਸਾ ਨੂੰ ਭਰੋਸੇ ਵਜੋਂ ਨਹੀਂ ਲਿਆ।
- [ ] ਮੈਂ ਜਾਂਚ ਕੀਤੀ ਕਿ ਹਰੇਕ ਟੈਸਟ ਅਸਲ ਦਾਅਵੇ, ਸੁਤੰਤਰ ਅਨੁਮਾਨਿਤ ਮੁੱਲ, ਅਤੇ ਵਪਾਰਕ ਨਿਯਮ ਦੀ ਪੁਸ਼ਟੀ ਕਰਦਾ ਹੈ।