plugin safety check - how to ensure your plugin gets approved

37

Upload: atlassian

Post on 14-Jul-2015

692 views

Category:

Technology


6 download

TRANSCRIPT

Page 1: Plugin Safety Check - How to Ensure Your Plugin Gets Approved
Page 2: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

Plugin Quality Check

Penny Wyatt

JIRA QA Team Lead

Atlassian

Page 3: Plugin Safety Check - How to Ensure Your Plugin Gets Approved
Page 4: Plugin Safety Check - How to Ensure Your Plugin Gets Approved
Page 5: Plugin Safety Check - How to Ensure Your Plugin Gets Approved
Page 6: Plugin Safety Check - How to Ensure Your Plugin Gets Approved
Page 7: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

Quality Assistance

• Help devs to deliver value to customers

• Testing and testing advice

• Bug prevention

Page 8: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

Plugin Quality Process

• Make it work

• Make it lustworthy

• Make it maintainable

• Make it safe

Page 9: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

Setting the Quality Bar

• Tradeoff between time, scope and quality

• Mismatched quality expectations - unhappy customers

Page 10: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

Make it work

“But I’ve already tested it, it works!”

in the real world

Page 11: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

Happy Path Fallacy

• “We’ll only worry about the happy path, for now”

• Only test the actions a normal, reasonable user would perform.

Page 12: Plugin Safety Check - How to Ensure Your Plugin Gets Approved
Page 13: Plugin Safety Check - How to Ensure Your Plugin Gets Approved
Page 14: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

Happy Path Fallacy

• Quality bar defines what you fix, not what you test.

• OK not to support everything.

• Set customer expectations!

Page 15: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

Valid Scenarios

• Sample Plugin

• Purpose-built but not contrived

• Completely unrelated to similar plugins on PAC!

• Only a short list, more detail on CAC

Page 16: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

Valid Scenarios

• Different types of data

• Special characters

• Large data sets

• Long strings

Page 17: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

Valid Scenarios

• Different browsers

• Layout issues

• Broken functionality

• Behaviour in unsupported browsers

Page 18: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

Valid Scenarios

• Different use cases

• Session timeouts

• Deletions/Moves/Edits

• Anonymous access

Page 19: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

Make it Lustworthy

Page 20: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

User experience

• Guide users towards the actions they should do.

• Avoid empty boxes - use appropriate controls.

• Help them to avoid mistakes.

• Reading documentation should not be required.

Page 21: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

Administration experience

• Clear flow for configuration

• Provide helpful error information

• Don’t show stack traces

• Use logging sparingly

Page 22: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

Make it Maintainable

Page 23: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

Manual and Automated Testing

• Manual testing

• Fast, effective, broad.

• Only tests the current state.

• Automated testing

• Scalable, sustainable.

• Takes time, limited assertions.

Page 24: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

Automated Testing

• Good for long-term regression tests

• Optimise for:

• Scenarios most likely to break

• Integration with code out of your control

• Use page objects for UI tests for maintainability

Page 25: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

Version Numbering

• Versions are constant

• A version number refers to one state of the code only.

• Never re-release a plugin with the same version number.

25

Page 26: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

26

v2.5

v2.5v2.5

Latest?

Yes!

v2.5

Help!

v2.5

???

v2.5

Argh!

!!!!!!!!!

Page 27: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

27

Page 28: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

28

Page 29: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

Version Numbering

• One version number means one binary.

• Always bump up the version number.

29

Page 30: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

Make it Safe

Page 31: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

How plugins break apps

• XSS

• Inserting user-supplied data into HTML without HTML-encoding it.

• Allows an attacker to gain control of the victim’s browser.

Page 32: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

How plugins break apps

• Insufficient permission checking

• Exposing data to anonymous users

• Not respecting permission schemes

Page 33: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

How plugins break apps

• Performance

• Synchronous external requests

• Unbounded memory allocation

Page 34: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

How plugins break apps

• Lack of CSS scoping

• Scope every item in the plugin CSS

• Avoid overriding built-in styles

• Lack of JavaScript scoping

(function () {

// code goes here

})();

Page 35: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

Final check

Made it work

Made it lustworthy

Made it maintainable

Made it safe

Page 36: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

Ship it!

Page 37: Plugin Safety Check - How to Ensure Your Plugin Gets Approved

#atlascamp

TAKE-AWAYS

Penny Wyatt

[email protected]