Sunday 6 December 2015

Smoke Testing SharePoint using Selenium IDE

Overview:  In SharePoint we need to retest code often as we make incremental changes.  Basic smoke testing is useful in that is allows you a certain degree of confidence that a bug has not crept into your latest deployment.

Most projects have varying degrees of control to ensure bugs do not cause unexpected behaviour and on the more advanced practices is unit testing and coded UI tests.  The unit tests are tricky with all the new SharePoint development methods.  Jasmine is a JavaScript testing framework and check out the @SPDoctor (Bill) for basic testing information.  Unit testing SP is difficult as the revs end up test SP and not the changes.  A lot of the code is UI driven which is hard to unit test.  I have previously written about code UI testing, MTM as part of the MS test and continuous testing.  And part of this is Selenium WebDriver.  I've used it once on a large project and it was awesome.  Now as you go into production you normally will do some manual smoke testing to check the deployment.

This post looks at automating smoke test.

There are various tools for recording smoke test or you can do the manual eyeball approach favoured my most SP project still.  I have used Powershell (both to gen http requests and to control IE).  MTM is good but it requires buy into the whole MTM process.  Personally I like Selenium IDE for Firefox.  It offers recording, and the capturing functionality is miles ahead of anything else.  These Selenium generate test can be export and used with Visual Studio or build into TFS or on a project I used TeamCity to run automated continuous build and integration.

Note:  Selenium IDE is the recording piece and Selenium WebDriver is the heavy duty real testing integration part.

Get Started:
1. Download Selenium IDE (make sure you get the Selenium IDE, I'm using version 2.9.0) 
2. Understand the UI and capabilities (YouTube basic Selenium IDE videos are great)
3. Install Selenium IDE on Firefox as shown below:




























4. Launch Selenium IDE using FireFox








5. Record and run Selenium test (2 minute short video providing a Selenium IDE recorded test against a SharePoint Online Team Site).

Another option is to control IE using PowerShell
PS> $ie=New-Object -com internetexplorer.application  #open ie
PS> $ie.Navigate("http://www.radimaging.co.uk/Pages/default.aspx")


Sunday 1 November 2015

SharePoint 2016 Preview - Min Role

Overview:  SharePoint 2016 Min Roles before the public betas.  Things are going to change and this only obviously applies to SP2016 Preview on-prem.

"Min Role is basically a topology assistance service"

Installation:  The services are pretty similar to SP2013 and most of the PowerShell from AutoSPInstaller will work with SP2016.  Excel services has been removed.  The difference in the UI install is the ability to have server install min roles for a multi-server.  Min roles are collections of services installed on a machine.  I'd lean towards installing full/custom roles and then converting the specific servers to the specific min roles.

Using the min roles, SharePoint can verify the roles are in compliance and can be used to managed the farm.  In effect you'd need all 4 roles to have all the services on a SharePoint farm and you shall need 2 instances of each for high availability.  So excluding SQL you shall need 8 VM's for a High Availability (HA) farm.  If you install extra services on a min role server, SharePoint timer job shall stop the service on a daily basis (not proven).

There are 4 server roles:
  1. Web Front end,
  2. Distributed Cache (also has a witness/quorum),
  3. Application,
  4. Search
Servers can be changed from Custom to specific min roles or the other way around. 

Note:  FULL High Availaibility
Min 2 times each role (extra quorum for dist cache roles) plus 2 more for Search HA, so 11 for core SP.  Plus SQL AOAG 3 servers, plus WCA/OOS 2 + SP workflow + K2/AvePoint + SSIS


Sunday 18 October 2015

SharePoint 2016 Preview (Public Beta 1) on-prem Notes

Disclaimer:  This notes I made from workshops, what I have heard and the Unity Conference in Amsterdam 12-14 Oct 2015.  A lot of this information is from the workshop with Neil Hodgkinson and Spencer Harare), this is my takeaway summary.

Notes for Sp2016:
  • Same HW req as 2013.  Farm servers min still Mem 12-16 CPU x64 1x4 Disk, Disk 80GB
  • Pre-reqs: Win 2012 R2, Win Mgmt Framework 3.0 gives us DSC, .NET 4.5.2 ..., DSC can be used to pre-bake the VM image.
  • Same DB rules as recommended by MS, loosing dbs from 2013;  No new DBs, need SQL 2012 or 2014 (except project Server DB which is not part of SP).
  • Need Win 2012 standard or higher, not web edition, also dev can support windows 10
  • Still no support for VMWare dynamic memory
  • End-point encryption for SMTP
 - Upgrades and Patching
  • No Foundation edition, SP2013 found to Sp2016 Server
  • Path SP2013 > SP2016
  • SC must be in 15 mode to upgrade
  • Service Apps need to go SP2010 > SP2013 > SP2016
  • SP2010 to SP2016 need to go to 2013 RTM baseline
  • Changed patching, smaller packages and fewer restarts
  • PSConfig not locking farm, can run multiple psconfigs and lower/zero down time patching (with HA farms)
 - Roles & Services
  • Consider moving low impact services onto the traditional WFE role, keep the long running/batch processing (Crawl, search, MTS,  et al) on the app servers.
  • WFE (Access services, SSS, Subscription Services, UPS)
  • Distributed Cache has a quorum so need 3 not 2 for NA.
  • Health Analyser rule for min role enforcement:  Puts min role in the correct state.
  • Min Role does not manage the search topology
  • Watch, switching min roles as index would be lost unless it is replicates (2 instances of each index)
  • Services in Farm overrides the starting of services in the Min Roles,  so can never start "Request Management" in the "Services in Farm" but still use "Distributed Cache" min role.
  • Can always switch min roles "Convert server role" or create custom roles (watch as needs multiple instances to keep running and index could disappear).
 - Key Thresholds for 2016:
  • CDB sizing
  • 100K SC per CDB
  • Max file size 10GB
  • Search index up to 50 million items
  - User Profile Sync:
  • UPS Sync (FIM) is not Microsoft Identitiy Management (MIM)
  • 2 modes: Active Directory Import (light weight, not useful for most large enterprise clients, e.g. Can't import pics or use BCS) or MIM 2016
  • AD Import: faster than 2013, can only use AD, no profile picture. 
  • MIM 2016 was FIM - Standalone product, only using the sync engine part for SharePoint (free if only use this service, does need Win 2012 and SQL Server licence)
  • Using MIM management agent map AD properties to SP user Profile properties
  • Syncing is driven by MIM not by SharePoint (UPS sync)
- What's New:
  • Post to yammer from SP2016 doc library
  • Improved integration
  • Image and Video Preview (changed)
  • Doc Lib accessibility (improved keyboard short cuts, VI user experience improved)
  • SC creation faster on SP Site template using SPSite.Copy
  • Project Server is part of the SP binaries/install, project server using it's own project db and adds 4/5 tables to the content database.  Project Server affects 3 DB (Project db, content db and config db)
  • Save and share email attachments in SP2016


- Release Dates
  • Preview = Beta 1 Aug 2015
  • Beta 2 RC  = +- Nov/Dec 2015
  • RTM Q1/Q2 2016

Thursday 15 October 2015

Hybrid Search 2016 Notes


Hybrid Search SP2016 (Also applies to SP2013):  Mixing on-prem and SPO results
  • Search can add all crawls into a single index within SharePoint online (historically we have had to use Search Federation to try combine result sets).  So historically we use search federation whereby there are multiple indexes that are the shown on a single page this approach for search result federation is refereed to as "Search-time merging".
Federated Search provide by MOSS, SP 2010 and SP 2013












  • The Index is held on SPO.  The new model is refereed to as "Index-time merging".
Single result set from multiple farms (joined the indexes into an SPO index). vNext hybrid search.
  • Crawls done on SP2016, 2013 and maybe 2010 are pushed into an Azure queue which in turn is combined onto the SPO index (I believe the Index is encrypted as rest in SPO)
  • Dir Sync is required between on prem AD and Azure AD 
UnityConnect Conference 2015 Amsterdam Search session - Architecture of Hybrid Search

Saturday 10 October 2015

User Profile Service Application Notes




The People Picker Control in SharePoint 2013 & 2016
  • The People Picker control is used to find user, groups and claims.  You'll notice the people picker UI has 2 queries (you can normally see the lag), firstly the people picker looks at the UserInfo list in the local site collection and then it also looks at Active Directory (this is where the custom claims providers need to be written if you don't use AD).  A common misconception is thinking the people picker users the UPA to look for users, it does not use the UPA directly.  Indirectly, if the UserInfo is populated the People Picker gets the user from the 1st lookup.
  • The UserInfo table is populated with the initial stub when a user is added to the security or the 1st time the login to the site collection.  
  • The UserInfo list is not updated if you add the user via an AD group or if you pick the user in a list within a people picker column.
  • The UserInfo on each site collection gets an initial stub of information in the list and a timer job at the web application level looks for a list of users to perform a sync (update more into for the user in the userinfo table), this runs every 5 minutes by default.  Job is: User Profile to SharePoint Quick Sync.


Thursday 8 October 2015

Performance Testing Check List

Rough Notes

Performance Factors Checklist:

  1. Geography and networking - Australia and Africa users always tend to have issues regardless of the centralized SharePoint farms they are accessing.  Poor networking especially in remote satellite offices is not a SharePoint issue but as enterprise grow these are the pains they need to work out.
  2. Security and network design
  3. Usage patterns (Working with documents in the UK after noon when the US comes online may have a peak usage rate 5 times higher than when Australia starts in the morning)
  4. Functionality (Search is heavier than displaying a static web page)
  5. Application design (too many web services calls when 1 can do all the calls) and application implementation.  The application needs to meet the functional and non-functional requirements.  Coding error creep in, implementation needs to meet the design and unnecessary code improved.
  6. Platform (2 server VM farm will only get a set load no matter how well it is tweeked)


Figure out where the bottlenecks are and how big the impact is:

  • SQL is a common performance bottle neck, check you have optimized SQL
  • Monitor all server in your farm, the random, throw more RAM at the solution is pointless most of the time.
  • Size of lists in SP
  • Size of Content
  • Physical architecture
  • Search - design, how many items are crawled are they all needed, multiple search farms, what is going on, AD groups preferential to individual users
  • WAN latency Testing
  • Baseline SP testing
  • Peak loads and what is affected (Monitor and prove where the issues are).  Concurrency and usage patterns.
  • Archiving, document retention, document versioning, unwanted general storage area, recycle bin, can we clean up
  • Optimize highly used page - for example if your home page leverages search and the search service and farm is therefore under load, more the search component into a cached solution or pull off the home page.
  • Auditing logs - Do you log enough, do you log too much can you pull them out of the Content DB and store them elsewhere.
  • Encryption (TDE, SSL, Devices)
  • Web page basics: image size, CDNs, JavaScript optimisation, sprites

Sunday 13 September 2015

SharePoint 2013 Workflow options - notes

Overview:  There are a lot of workflow options and each of the solutions lend themselves favorably to different circumstances.  In this post I look at the more common options around workflow for SharePoint.  The 3 options I'm exploring are: K2 blackperl, Nintex and SP2013 WorkFlow Manager.  Also note that existing SP2010 workflow still exists and is an option if your business has workflows on the platform already or you have this skill set available.  There are other products but these are the main stream options.

So each of these products has their place and suit different organisations.  This post is my opinion and I am not a workflow expert and show my thoughts on when I would favor 1 of the approaches.

Licencing:  Workflow Manager does not have the licencing costs.  Nintex has a server and CAL licencing model and K2 has a server licencing model.

Skills:  what are your existing in-house skills.  If you already have K2 or Nintex expertise it makes these products far more attractive.

Size:  How big is your organisation, how complex are the workflows, how many workflows and how often do they change shall influence the workflow option to select.

SharePoint 2013 Workflow Manager
SharePoint 2013 introduces an new standalone workflow engine based on Windows Workflow Manager 1.0 using .NET 4.5.  In the SP 2013 world, Office Web Apps (OWA) and Workflow Manager runs as a service separate from SharePoint 2013.
  • SharePoint Designer 2013
  • Ideal for simple or medium complexity workflow processes
  • Limited to a pre-defined set of activities and actions
  • Relatively quick and easy to configure
  • Custom workflow development through Visual Studio
  • Can implement state-machine workflows
  • Supports custom actions/activities
  • Supports debugging
  • Ideal for modelling complex processes
  • Requires a developer
  • Workflow Manager
  • High Density and Multi-Tenancy
  • Elastic Scale
  • Fully Declarative Authoring
  • REST and Service Bus Messaging

Nintex
  • On-premise and cloud workflows – but cloud workflows do not allow custom actions
  • Nintex uses the SharePoint workflow engine
  • Easy to create Nintex workflows (good tooling) but not so easy to upgrade and maintain if complex – they require a proper dev environment if workflows require changing
  • Tight coupling with SharePoint – so upgrades need to be planned. Some workflows have broken after upgrade.
  • Can create custom activities but these are limited to constraints imposed by Nintex design surface
  • More suited to State machine workflows using reusable custom modules and user defined actions.
  • Nintex uses its own database which you will need intimate knowledge of when it comes to performance issues.

K2
K2 – technology agnostic – best suited if SharePoint is only a part of your technology snapshot, some folks consider K2 a BPM product.
Pros:
  • Off box WF hosting:  Allows for increasing the number of blackperl servers and no resource overlap, flexible licencing model as it is server based
  • Well tried and tested workflow engine
  • Good reporting and troubleshooting
  • Excellent SOA layer (SmartObjects) with multiple products.  This is more an EA feature as it can be a great way to create an SOA.  Allows API to connect to custom SQL, CRM, SAP, Web Services.
  • Proven advanced tooling, good visual tooling (not as good as Nintex IMHO)
Cons:
  • Cost is relatively high, support costs are extensive, need to pay for dev and pre-prod licence
  • Not based on the latest MS workflow engine
  • Not easy for end users to build WF (despite marketing noise)
  • Setup and monitoring is specialised and will require advanced K2 expertise
    Difficult to back out of product
  • Tooling requires training and breaking out of OOTB features requires a high level of expertise and dependency on K2
  • Support tended to be patchy with technical knowledge
Updated: 2017-11-03.  Possible Extranet facing blackpearl Infrastructure design
Summary:
K2 is a good product if you need to build an SOA layer for integration, are prepared to install correctly (cost) and maintain.  You shall need dedicated workflow people to create the workflows.  So in the right circumstances it has it’s place.

Updated 11 December 2019:
Microsoft Power Automation (formerly Microsoft Flow) is the default workflow option when working with the Microsoft Power Platform (Power Apps, Power Automation and Power BI).  O365, SPO and D365 can also use Microsoft Power Automation.  Azures Logic Apps is also a good option especially if your application is C#/Azure based and not within one of the SaaS Azure offerings.